Natural Born Testers
Back for the second round? Good…you let me worried back there….
This time I wanted to address one thing that is in the back of my mind for some time and I never addressed, that is the fact that testing is in fact built in within each of us. I even dare to say that is what have allowed us to thrive, so Natural Born Testers, pun intended, was what I imediately though when I was thinking about the title of this article, that in one sentence says it all: “we are all born with the natural hability to test” (nevertheless bare with me until the end of the article).
But let me give you some context, it became a reality when I was asked what was my main thing in a TedXPorto edition (2015) with the theme ‘The main thing’. This question made me evaluate what was my purpose, why I was pursuing this career and from where this was coming from. And in those following minutes thinking about it I answer back: ‘testing’, the only one in all the conference by the way with the main thing being testing. It made sense to me, most of my time I was thinking on testing and even when I was not thinking on it in purpose it define my way of facing the world.
Testing is part of our DNA
Testing is deeply wired into each one of us since we are born, when we are little we are always testing the limits of our parents :)
Jokes aside, since young age we are always testing, testing if the boat made of leaves will float (if not re-engineer it and test again), testing new moves in a video game to defeat the level boss, testing the hoven temperature with our bare hands to understand how much eat we can endure. Even without knowing it, we use testing techniques to preserve ourselves and antecipate possible problems.
I remember playing with lego parts and try to build the strongest car, the objective was to witstand a crash against another lego car and not be destroyed (yes, as a boy the majority of games involve some kind of destruction), me and my brother were competing against each other. During the play I remember building the car and smashing it against the wall to validate if it was strong enough. After pushing it against the wall I assess it’s status and replace some pieces or re-arrange those to be stronger, and repeat the process until I was satisfied (based on my little experience and knowledge of the matter).
When growing up, we need to be able to test our limits to better know ourselves, its the experience we acquire from those experiences that reveal how far we are capabale to go (at least at this moment). Growing up I started different sports and guess what? I tested myself to know my limits. But I wanted more and by watching others doing things that I was not able to do, wanted to surpass those, it was what drove me to train to surpass those limits. Training is a plan we define to evolve and to validate that the evolution is going as expected, you guess it, we test it!
To some degree we all have testing capabilities wired in, the ones that are more cautious will use it more because it is what will keep them safe, it is their way to antecipate possible harm and avoid it, the risk for these persons is if they are too afraid to even test it and do not even try anything new, don’t be that person; expect the best and be prepared for the worst. In the other side of the spectrum, we have the ones that do not bother on testing it and trust that everything will be ok, they rush head first and worry with issues after; these are the ones that end up hurt, for these ones the advice will be to incorporate a little bit of testing to avoid major injuries.
Humanity would not survived without it, in fact, it is deeply linked to survival strategies and to growth.
Even if we all have it wired in, it does not mean that we are all inclined to use it and we certainly need to nurture it in order to let it grow and gain techniques that will support testing and mature it into a way of live.
Software Testing
If we have this hability wired in, why did it took so long to apply it to SDLC?
Well, let me point a couple of things about that. In the past the challenge was to put things in production, most of the work was manual and the focus was in those tasks, assuring we manage to have something in production, in those times the clients were forgiven, having a buggy or slow app was normal. Nowadays that has changed drastically, the clients are no more so forgiven, and because of that we need to assure that we are delivering a product with high quality. To do so we need to insert practices to assure that. Another reason is that competition is now fierce and competitors are around every corner trying to outbest you, the ones that address the clients needs better and that have a more stable product will strive while others will not survive.
The above reasons are valid ones but we have to consider also that to become a true Tester, that live and breadth quality, you have to consider other aspects such as:
- Roleplaying and empathy
- Curiosity and an inventors mind
- Assumptions
Those characteristics need to be fostered and added to the your inner tester hability so you can give a valid contribution to your team, or if you aim to change the mindset of yourn team until quality is part of the team DNA.
One thing we know for sure: “If you have code, you will have bugs”, so the mantra of a tester should be
Roleplaying and empathy
As a tester you do not work alone or only for your benefit, so you need to understand your team, the processes around you and the product (who is it for, what purpose will it serve). That is why empathy is important, you need to “read” your team and understand how you can contribute and influence them towards building up a quality process. No one will follow your suggestions if you are unable to understand the other part and adapt the rigid approach to your tema way of work.
Roleplaying is the ability to put yourself in the shoes of the customer, you must understand the user’s frame of mind, their incentives, objectives. This ability is very useful to focus on what matters and to question if a new feature make sense for the customer. In testing thinking like the client is key to understand their workflows and to guide the development into what really is important for the customer.
Curious and have an inventor mind
Constantly asking “What if”, questioning how it is working like it is and wanting to know how it was built to better uncover it’s flaws or contribute to make it better. Think outside the box, this is a diffuclt one, specially if you are looking at a product 24/7, take new approaches, uses what is out there. Look at approaches that you have never used in testing, things that are farfetched like Fuzz Testing, Monkey testing, sometimes just let your inner child to come out and do some unthinkable actions in your product you will see that it will unveal new challenges, sometimes you will find improvments instead of bugs and that is also valuable.
When walking this path, you are willing to take risks and sometimes without any reward, in fact you biggest reward will be that you have not find any bug, or having done your work so well that your team leaves and breaths quality that it seem that you are not needed anymore. So to be in this line of work you must enjoy the journey, all the steps needed and not only the end result and you must be resilient, keep at it the bugs are out there.
Assumptions
DO NOT ASSUME ANYTHING!
I know we cannot account for every little detail but do not assume anything, transform those assumptions into accounted information, that you are aware and have full understanding on the impact of each one in the application and your tests. When we start to assume things we bring a degree of unknown to our tests that should be bullet proof.
If when someone asks you why the test have failed, and someone will, for sure, your answer is “I was assuming” do me a favor and slap yourself.
On the other side of assumptions is curiousity, true pure curiousity, ask questions, why we should assume this? What are the impacts of such assumption? Be curious about everything, do not be afraid to ask, anything, sometimes take a step back and instead of asking if the button should be red or green, ask if the button should be there? What is it’s purpose?
Conclusion
We all have that ability in us, some have fostered it, strengthened it and are use it in all its potencial (working in the Testing area), some use it without knowing it in is original form, as we have seen.
Even if you do not want to admit it you are using testing in your day to day….so why don’t you embrace it on your work also?
See you on my next article ;)