It has been a point of constant discussion whether software testers should be technical.
10 years ago
Traditional testing ( before 10 years ) has been mostly “black box” where the testers would test the software from an end-user point of view and provide feedback to the developers. For this kind of testing, understanding technology was not required, as the expectation was to see the application as a “black box” (not knowing what is inside the box). Since these testers had been testing manually without the use of tools, they were referred to as “manual” testers. The software releases had a single / multiple testing cycles depending on the process. The testers looked for defects in software and re-verified the defects after the fixes.
Testers and Automation
Welcome "Test Automation"
This kind of manual testing started becoming an overhead a couple of years later, as software development process has matured into iterative models like Rapid Prototyping. Since the application was built iteratively, all the test scenarios needed to be executed for each iteration, losing a lot of time in the development plan. The testers were highly pressurized during the testing cycles because their test plans did not go well due to critical defects which would stop them from going further. Testing cycles were many more than originally planned causing a significant delay to the release plan. These reasons prompted for “Test Automation” which would provide quick feedback and save the releases. Test automation which started off at only user Interface layer soon evolved to demand “Test Pyramid” adoption.
Testers in Trouble
With the increasing adoption of “Test Automation” in projects, testers needed to upgrade their skills, learn programming languages and tools required for the job. A whole ecosystem of Testing tools quickly spawned to support the growing need for test automation. This posed a very difficult situation for testers who had been “black box” testers for a long time and lost touch with programming. Also, in this time, software development has progressed a lot, increasing the gap between their programming knowledge some years ago and the current state of tools and technologies. Testers are asked to upgrade their skills to fit into the role, which was a daunting task to many of them. Some of them went on to learn while some others tried to retro-fit their skills in to any manual testing opportunities in the companies.
A few years go
Living Agile
A few years ago, Agile Methodology came in a big way and challenged traditional delivery models and was a great success. One of the key aspects of Agile was the way it looked at “test automation” and emphasized the need for 100% automation in every iteration. The Definition of Done for a story would require full automation to cope up with regression in further sprints. This situation made technical skills mandatory for testers to be part of Agile teams which made matters worse for the testers who have been managing thus far with manual testing.
Now
Changes in Applications
Today software applications are aiming for new heights adopting the latest of application and web standards. They are looking for mobile presence, working with big data and cloud platforms. Also, non-functional requirements like performance and security are becoming mainstream expectations of any application. Testers are finding it a challenge to add value to their teams without getting a good understanding of these new technologies. Applications that cater to technical users like Product APIs, SAAS offerings are also making some amount of technical understanding necessary for even manual testing of these applications. Being manual tester does not seem to be an option any more.
Test Management has also changed drastically and agile teams are adopting Behavior Driven Development / Testing and capturing test scenarios in executable specification. Testing has become seamless with development and not happening after the fact.
Changes in Software Delivery
The need for Continuous Delivery of applications has reinforced the need to have robust test sets at every stage of the delivery. The test automation safety net is not only necessary now, but it is expected to be of a very good quality, preferably production quality, with the right amount of tests at the right stage.
Tests as part of Application
Unlike earlier times, tests are being part of the application code base. They are no longer internal to the development team, they now reach the customers. The need for tests to be of production quality had never been felt more.
Manual Testers have to turn "Technical"
Being manual testers does not seem to be an option any more in the current times. Manual testers should transform themselves to be technical. They should understand the technology driving the applications to write effective tests. They should be able to use tools and technologies apt for building the right test sets. They should possess at least necessary and sufficient knowledge to do justice to the role of a tester in continuous delivery environment. In an agile environment, they can reach out to the developers for complex test framework activities, but they should be self-sufficient to contribute independently to the test automation activities.
By understanding the technologies, testers can help “build” quality in pro-actively rather than “test” it reactively. This capability is invaluable in agile environments.
Easier said than done
But, that is easier said than done. The challenges that testers could be facing in upgrading their skills are multitude. Since they have not been learning for a long time, some of them might have lost the habit to learn. Some of them might have pressing personal responsibilities which do not free up their time to learn some thing new. And some others may never have programming background which makes initial learning difficult.
Future Bleak?
Future of testing does not seem to be easy for manual testers. As they wait more, things are only going to be harder! The first step is always the hardest one to take. But it will reap great benefits and make testing an enjoyable experience.
Note: In this blog post, the word “manual testers” is used for testers who are entirely non-technical and stick with manual testing of applications. This in no way refers to the manual testing activities / efforts involved in applications.
The above blog post sprung a debate in the ThoughtWorks testing community which is captured in an insights blog post here