How to kill a tester?
Disclaimer: Opinions expressed in this blog are solely my own and do not in any way or manner express the views or opinions of the institutions I am associated with.
This blog is not about GenAI vs Testing. Neither does it rationalize the need for testing in the era of GenAI. It is about the lackadaisical attitude towards quality and quality professionals in general. It is about how quality professionals are perceived by others in the same profession. References to AI are merely to make some points.
In November 2022, the world dawned on a new age of AI when ChatGPT was launched. Its next version achieved a major technical breakthrough by passing a US bar exam. Unlike Moore’s law of doubling of number of transistors, AI has seen an exponential growth of 300,000 times between 2012 and 2018. Professionals across the industries panicked, software testers included. Naysayers of software testing had yet another opportunity to write the obituary of software testing/testers. This is not new. This has happened a zillion times in the past. It will likely happen in the future. There is no denying the fact that a portion of that obituary has been written by a few testers that I like to call as “cosmetic testers”. They exist only on paper. Their mindset and deeds are not commensurate to testing principles.
In the family of software development life cycle, testing has always been the step-child — disliked, but not forsaken. While it may sound like generalization, but professionals who have been in the industry for a while can vouch for that. After all, people may like to think — what is so special about finding bugs in software in which a tester did not contribute a single line of code? This interpretation of testing changed with the need for frequent shipment of software changes and the dire need for automating regression tests. Testing was also not just confined to black-box testing of GUI systems and web-based interfaces. Testing now meant APIs, Databases, Information Security, and Usability inter alia.
Suddenly, testing was no longer the ‘not-so-cool’ profession. The ability to write code to automate tests and test behind the UI elevated the status of a few testers. The discrimination was no longer between developers and testers. There were now two breeds of testers — manual testers and automation/technical testers. Organizations for the right reasons, invested in the capability upliftment of testers to embrace this new reality. However, somewhere in this journey, the fundamentals of testing were forgotten. Testers were now hired on their ability to find elements on a web page. The ability to analyze and interpret complex requirements took a backseat. It is as if people forgot automation testing is functional testing. A good mark of a functional tester is not necessarily only about how they can automate but also about figuring out which regression tests must be automated. The latter requires the knowledge of systems, processes and business domains. They have the ability to connect the dots and have the end-to-end picture. A pretty important skill in big institutions with multiple systems, cross-functional teams, and processes. They are also the ones who are good at challenging solutions and calling out risks.
Having said that there is no denying the fact that automation is critical for the success of many businesses. But this naive belief that “test automation” is this panacea or the magic wand that will solve all problems in software engineering and that good manual testers need to be dispensed with totally, is problematic. It is utterly frustrating as a quality professional when someone asks, “Why are you still manually testing everything? Why cannot you automate?”. It is as if, you click a button, and a tool will do all the testing for you and hand you a report. Maybe AI, will in the future do a lot of stuff that is in the realm of a quality practitioner, but we must understand the person writing automated tests is a human. AI will most likely become a tool that professionals will have to learn for both functional and automation testing. But I doubt AI or any automation tool augmented by AI for that matter will be able to perform exploratory testing. Coming back to automation in the current context, testers need to first establish a test has passed before automating it or executing it for multiple datasets/flows. One needs to contextualize when speaking of “test automation”. It is investment vs return. A one-size-fits-all approach won’t help. Depending on the organization a hybrid approach may be best suited.
Given the ethical considerations and upcoming regulations, if anything, AI would need specialized functional testers, not necessarily seen or understood in the context of test automation.
It is a fact that testers have to adapt to the changing technical landscape or else choose to perish. It is correct to say that quality should be everyone’s responsibility but if you think you don’t need testers because that’s what you got to hear at a developers’ conference full of tech start-ups, you may be generalizing too much. The gap between development and testing is ever diminishing but the need for independent testing professionals will always exist. Especially for critical industries like the aviation industry, and Health and Financial Institutions. As a consumer, my world is not going to collapse if Netflix crashes for an hour or I am unable to listen to music on Spotify, but I will be stressed if my Debit Card does not work while I am trying to pay for medicines on an overseas trip or a medical test equipment gives a false-positive.
This is precisely the reason there are regulations on how to develop and test systems in these industries. While the law is specific about who and how security testing must be done, there is no specificity when it comes to functional testing of software systems.
“An APRA-regulated entity must ensure that testing is conducted by appropriately skilled and functionally independent specialists” — Prudential Standard CPS 234 for Information Security.
However, regulatory bodies do emphasize the need for proper and rigorous testing of systems. This is the reason there are standards and controls around testing in such organizations.
What differentiates testing from coding is the mindset. Irrespective of the roles in your project, you need professionals with that mindset. Someone with a testing background and experience will help you with building that mindset in your team. I am lucky to have worked with some of the finest software professionals who could have easily transitioned to coding but stuck to testing because it excited them the most. I am also lucky to have worked with functional testers who with their wealth of knowledge were able to find critical bugs that automation tests could not have found.
Did you know that the US lost $2.08 trillion due to poor quality software in the year 2020 alone?
Software testing won’t die. It won’t become extinct. As testers have done in the past, they will adapt, transform and embrace the current realities like Cloud Technology and emerging ones like AI. Their capabilities, roles, responsibilities and the way they interact with other members of the team will change. Sorry to mislead you with my title. Be rest assured, you won’t be able to kill testing.
“Developers are developers and testers are testers. The twain shall meet someday. Let’s call that space “Quality Engineering”.
So, before you decide to kill the tester educate yourself about what quality assurance means for your organization if not the process itself. If you still want to kill the tester, go ahead but remember that history has shown testers always had the last laugh!
I Test Therefore I Am. Try to expunge me if you like to, but like Phoenix, I will rise again and again from the ashes.