This is a guest post by Nishi Grover Garg.
I recently met software testing consultant James Bach on his visit to India, and I got a chance to talk with him and listen to his opinions and ideas about the art of testing. Not only did it bring me a deeper understanding of the psychology of testing, but it also reinforced the notion of automation only performing checking. The creative and human aspects of testing lie with the tester, which I had experienced as well as written about a few years back as a hands-on tester myself.
Testing is a craft that is more than executing a bunch of tests, performing clicks and actions. A tester has a unique understanding of the system and ways to critique it. Over time, the tester develops a deeper comprehension of the application and its intricacies, integrations, weak points, and history. This makes them the best judge to find out the failure points of the system and comment on its health.
The Product Risk Knowledge Gap is the difference between what we know about the product and what we need to know. The purpose of testing is to close or at least reduce this gap.
While automated checks can help in determining problems in what we know (and have scripted as checks), it may not help as much in the risk areas of what we do not know about the product. That requires exploration, creativity, intuition and domain knowledge. This is the human aspect of testing.
Test automation scripts typically follow this flow:
Automated scripts have some built-in steps in the form of test data that we pre-define and verifications that we add. These steps are helpful for areas of the application that we need to check, double-check or re-check a number of times, and because these types of checks can be made explicit, they can be automated. Since the same steps will be performed the same way over and over again, it is better called “checking” rather than “testing.”
The skill of test automation has garnered much interest in the testing industry, so much so that it is now considered an in-demand skill without which a tester may become irrelevant. Many testers are scared of the fact that not being able to write code or test scripts would render them useless to their teams. But this is actually not the case. Testers are not defined by their tools, just like developers are not defined by their programming languages or IDEs.
While being able to write and understand code or create automated scripts are useful skills for a tester, we must look at the differences in the mindset of a coder vs. someone who does not code.
They think differently and perceive the same software in a different way. Non-coders have a user-centric mindset and usually a higher level of empathy for the users. So, while we do value being able to read, understand and analyze code, the human aspect of testing cannot be negated.
Putting Them Together
Testing needs tacit social competencies, human experience, and the ability to make sense of situations, so these skills cannot be fully encoded. Testing is the process of evaluating a product by learning, through exploration and experimentation, which also includes checking.
Creating a balance of human testing plus automated checks is the best way to get ROI on our test automation efforts. Here’s how we can make an effort to strike that balance:
- Understanding what needs to be automated instead of running behind a coverage percentage or numbers.
- Automating only what is really needed and using human testing for exploration.
- Making conscious decisions rather than struggling with technical debt.
Testing and checking work best together, with automated checks acting as a way to supplement the tester’s efforts toward evaluating the product.
Testing and checking are truly a partnership, and we must explore both in order to achieve the most out of our efforts. This partnership can yield the maximum results if it’s utilized in a well-balanced manner.
Nishi is a corporate trainer, an agile enthusiast and a tester at heart! With 11+ years of industry experience, she currently works with Sahi Pro as an Evangelist and Trainings Head. She is passionate about training, organizing testing community events and meetups, and has been a speaker at numerous testing events and conferences. Check out her blog where she writes about the latest topics in Agile and Testing domains.