Finding balance as a Testing Specialist
Over the years, I have worked in many different types of testing roles, and have learned various different tools to tackle my day-to-day activities.
From proper bug reporting, to planning and executing a testing strategy crafted from scratch, throughout my life as a tester, I have always perceived this imaginary, ridiculous division:
A- Manual Testers 🖐
B- Automation Testers* 🤖
*Somebody who dedicates exclusively to the writing of client-side/UI automated tests
Although I understand the fundamental differences between automation testing and many of the other different activities one can take part in as a tester, I would like to break this down further, and share my thoughts on what I believe is the best kind of testing expert.
I love testing, I genuinely get a lot of joy from spending my time methodically analysing the product, thinking about its different dimensions, and discovering it to the point that I feel I am part of that product too. I personally gain a huge sense of achievement by knowing my application inside out — I feel ready to answer questions and confident, both that I know the answers and that I’m helping to deliver a great experience for our customers.
It doesn’t end there, another thing I really love about working as a QA Engineer is the fact that I’m learning and challenging myself constantly, and in order to succeed in this endeavour I must be sociable, I must know my team, and let my team know me. Many of my best friends are former teammates, and I have met hundreds of great professionals in every possible discipline — crazy-fun product owners who make you feel like you’re not at work, incredibly talented designers who blur the lines between art and craft, mythical developers capable of solving each and every problem, and… the occasional productive project manager (just kidding, lots of amazing project managers).
Building bridges
If you ask me, the most important asset that any software tester will have at hand is not their great programming skills, not even their fantastic ability to identify and report nasty bugs — those that others will never find! When I think about what is the most important thing that takes part in my day-to-day life, it is very clear to me that we’re talking about information. I see a lot of value in becoming an expert communicator, understanding the various languages that are present in a software development team: the language of the product which focuses on business strategy, targets, goals and customer value; the language of the developer, which revolves around good practices, effectiveness, versatility and lots of technical jargon; the language designers speak is through imagery and interactions, and the language of the business, which is all about results.
Every QA engineer should spend a significant amount of time thinking about these variables, with a high level of awareness. We are a key player when it comes to making all of these different languages converge into one, and I am pretty sure everybody in each development team cares a lot about our language. We should speak quality, and this my friends, is a very special kind of language, which changes from place to place and comes in all sorts of shapes.
As a Testing Specialist, you will find yourself in a position where you can gain access to significant amounts of information — what you do with that resource is entirely up to you. A good engineer should be brave enough to present relevant information to his or her team members so that they can make good use of it. Examples would be: discuss with the UX designer how the flow of the application feels unnatural, report defects to the developers, demonstrate the application to the product owner to get an official sign-off (and hopefully a pat on the back), help other testers by sharing your tools and techniques. Keeping information flowing, curating it and presenting it to those who can best interpret it is a key factor in helping to deliver great quality experiences (and it also helps a lot in team building). If you manage to do this while also being a nice and friendly person, you’re already on the right track.
Specialise, don’t overspecialise
Since I deviated from the main topic, I want to go back to that arbitrary, unfounded division of ‘automators’ and ‘manual testers’. In my opinion, automation is but another technique that a tester can employ to solve a problem. It is one that is very interesting, vast in terms of possibilities and extremely useful when used correctly, but it’s not the pinnacle of the testing world.
The reason why automation isn’t the most important or the most relevant thing you can do as a tester is very simple. Automation doesn’t provide new knowledge about the application in most cases. It doesn’t uncover new corners that you and your team haven’t yet thought about, and it will very rarely, if ever, bring any creativity or any significant finding to your team. Automation is used to confirm that what your team knew to be true, is still valid.
It will save a lot of time when you have to repeat a set of tests, but it will also take a significant amount of time to maintain, and you will need to work in a very well-organised team if you don’t want to witness your tests exploding into pieces every time there’s a change to the UI (although, in some cases, a good automation engineer will know how to prevent these sorts of things).
There shouldn’t be a specific role for an ‘automation engineer’ — it’s making a very rich discipline awfully specific and focused on one thing. To extrapolate this idea, imagine if you hire a gardener and he says he’s great at lawn mowing, but he doesn’t really prune any plants or he doesn’t see the value in removing the weeds… or imagine a chef who only cooks ‘schnitzels’ and finds the rest either boring or not worth his effort. It wouldn’t happen. Testing for me is an art, it is something you either really like, or you find pretty dull. The really driven testers are the ones who discover their applications thoroughly using various tools and techniques. They will gather knowledge about their domain which will then help them make informed decisions on what the most effective approach is, rather than just trying to write as many automated tests as possible. They believe in the idea that they’re there to help their team build an amazing product, something that they — in collaboration with their team— own, in the same way their customers and stakeholders do.
Finding balance
As professionals we should always be pushing ourselves to learn new things and to develop new ways of solving problems, which is ultimately what this is all about. Focusing solely on automation or considering oneself an ‘automation engineer’ might not be the best way to bring value to your team. In order to expand our focus, here are a few activities I have found to be a really useful and important part of my role:
- Learn to code in the context of your application: understand the nature of the products you will test, how they work together, have a high level understanding of all the moving pieces and everything you learn in this area will help you test more effectively.
- Develop your documentation skills: you should be able to put in writing or at least express verbally every single thing you do.This this will help earn your team’s trust and will display your value to people from other areas.
- Learn manual testing techniques: I emphasise techniques because often, you will have very little time on your hands to perform a task that might feel impossible. You need to be ready to pick and choose — we’ve all been asked unreasonable things, be resource savvy.
- Be impeccable with your bug reports: writing detailed bug reports goes a long way and it will save you a lot of time. When you provide precise, demonstrable information to your teammates, they trust you more (and sometimes, fear you!). Every time you submit a bug report, try to make it relevant regardless of the context, so if anybody picks it up, it will always make sense
- Learn about test planning: think about how you would do things in an ideal world. Consider which tools or environment you would need to feel 100% confident your application will be in great shape to face the world. Now that you have that view, think how can you improve your current situation — what needs to change? Who can help? How can we make this increasingly efficient?
- Become a good negotiator: every conversation in life will include some form of negotiation, so you need to know your tools and their value. You will need to have some difficult conversations as a tester, and you need to be ready to let go on some things. Not everything will be perfect and you must learn to compromise, and at the same time, push back when things feel wrong.
- Strive to be a positive member of a team: actively work on this. Don’t ever think that you ‘define’ what is good and what is bad, you’re not the judge of other people’s work, you’re there to help and if you help with a smile on your face, it’s twice as impactful.
Don’t get me wrong, automation testing is an amazing world and it provides a huge amount of value when done right, but, as Testing Specialists, we should make people aware that not everything can be automated — that automated tests solve just a few problems and that there is a lot more we can do to provide additional value. It’s our duty to try and find a balance and to push this idea forward.
When the rest of the world lay their eyes on us, as technology experts, we should never downplay what we do, and we should be ready to face and resolve a wide variety of problematic situations. I expect all of us in the QA community to know a certain level of automation testing, but that is not the most important skill a tester can have…
Now I would like to hear some of your thoughts, what do you think is the most important skill a tester should have?
Ariel is a very passionate Senior QA Engineer working for the Web team at ASOS. He has been a professional tester for 10 years now and is always looking to perfect his own approach and learn new tools and skills. He can’t be rational when it comes to football and pizza varieties.