Ripe for revolution
Software testing seems stuck in a rut, in my part of the world anyway. Other disciplines seem to constantly innovate and expand - design, user experience, development itself - but software testing seems to stay the same.
In spite of lots of agile talk about testing early and often, testing is still tacked on at the end of development activity (for story-level testing) and before release. Why is that?
I have a few theories.
One reason is the lingering perception that testing must happen on an almost finished product. The primary purpose of such testing is launching a bug-free app (sadly, I don’t speak Spanish, but I can count to ten).
Another reason is the lack of a software testing discipline and body of knowledge - how many colleges offer a degree or program in software testing? How many testers start out wanting to be a tester? Testing is not perceived as glamorous, cool, or edgy. Oftentimes it is viewed as a job that anyone on the team can do, thus not requiring special skills or talents.
Another reason is the lack of technical chops of most testers - a debatable cause/effect of the previous reason. Testers with technical skills may initially gravitate towards test automation, but rarely stay in testing for very long. The current work is not interesting or challenging enough for them.
However, as the agile process matures and mutates, it is pushing boundaries at both ends. As the starting and ending points of the process get pushed further and further out, the expansion has galvanized distinct areas of specialization. For example, at the front end of the process, product design, product ownership, user experience, user interaction - are all areas that have become mainstream agile. Most teams these days have a UI/UX person on board, instead of farming out what used to be called ‘graphic design. Product owners/managers have increased specialization also, and in addition to being the domain experts, can now be certified in special product owner skills (yes, I typed that with a z at the end the first time through).
At the other end of the process, DevOps is a recognized specialty now. Despite the debate on ‘What exactly is DevOps?’, increasingly the term refers to developers assuming responsibility for keeping their code up and running in a SaaS environment. Managing releases and deployment, monitoring and improving performance, and maintaining and upgrading infrastructure is blurring the boundaries between software development and old-school IT.
I am genuinely perplexed as to why agile testers have not challenged their boundaries. The main strength of testers is their critical thinking skill; the ability to look at one piece of software in the context of the bigger picture and offer quick, concise feedback on its operability and usability. Our skills apply to the entire process, including user testing, product ownership, performance testing, and release management, to name a few.
Do testers leave testing to take on those other roles? Is testing a stepping stone to other professions? Where does increased specialization leave testers? Can ‘testing’ expand to encompass all types of testing, both pre-development and post-development? How do we make that happen?