How did we get here?
The role of software testing has changed dramatically in the last number number of years. In this 2 part blog I will cover how the role of testing has been affected, what has been the testing community’s response and what the future may hold for testers.
Agile and Shift Left
Traditionally testing was viewed as the bottleneck of most projects. Typically there was long development cycles, infrequent release and all the testing was performed at the end of the development cycle. Then came Agile which resulted in shorter development cycles, frequent deliveries and thus a need for shorter test cycles.
In the early days of Agile, the test community’s initial response was to shift left, testing as early as possible e.g. reviewing requirements and code reviews. Shift left has become the norm and the principles of shift left are embedded in most software development teams. Shift left was a big change in mindset, switching from testing at the end of the cycles to testing earlier and throughout the cycle.
DevOps, automated checks and shift right
Overtime continuous improvement of Agile practices caused increased pressure on those downstream from development including testing and the operations teams. The solutions to these problems lead to the growth of DevOps. The testing community embraced the DevOps Culture and wanted to play their part. Automated checking(aka test automation) grew in importance. This aided shorter test cycles and continuous delivery.
Traditionally we focused on how to get software to production where “someone else” will deal with maintenance and customer issues, testing was rarely done in production. Then came shift right, testing in production (feature toggles, synthetics) and observing in production (monitoring, logging, tracing). Shift right is gaining traction and will eventually become the norm. Now as we deliver software we think how are we going to host it and maintain it, we now see testing in production as a vital component of our test strategy.
Complexity Grew in the Software Industry
While Agile and DevOps were causing major changes in the industry, the overall industry become more complex. Once we just had to deal with one platform, the desktop. Now it’s the norm to have multiple platforms including mobile.Integration has grow considerably in terms of integration with third parties and the growth of microservices. The volume of data has grow rapidly and we have had to find solutions to scale the processing and storage of this data. We face a wide range of security challenges with widely distributed systems.
The whole software industry have faced these challenges and the test community have had to find innovate solutions, making the role of testing much more complex.
The role got more technical
The role of testing has become more technical and there has been a focus on technical upskilling. When we shifted left testers become involved in code reviews, we needed to learn to read code. When automated checking grew, many testers began to learn to write code. Traditionally these skills were associated with developers. (Whether every tester needs to be able to code is something I will cover in a future blog)
With the advent of Devops testers began to contribute to build systems and systems infrastructure. Traditionally these skills were associated with SysAdmins.
Traditionally the majority of testers tested through the UI, nowadays it is seen as the norm to test through the API or UI. Learning to test at the API level has been and continues to be a big change for testers.
Shared responsibility for quality
When we shifted left, the responsibility of testing became a shared responsibility which has been one of the most positive changes to testing. Although now others perform activities that testers once performed.
- Developers began testing earlier, which resulted in less issues for testers to uncover. Also I believe Developers are typically better suited to writing automated checks, collaborating with testers. This is probably the best way to achieve good quality and maintainable automated checks.
- The changes in DevOps has resulted in consistent deployment pipelines. Back in the days of snowflake environments testers took great pride in finding ‘environmental’ and ‘release’ defects.
- Testers prided ourselves on being involved early in the software cycle with the Product Managers but now others are doing that including the UX folks.
- Customers are now playing a bigger role in testing, where they are given early access to the software in production.
These changes should all be viewed as positive changes, testers have always wanted the responsibility of quality shared and earlier involvement of customers. While i have talked about the traditional software stakeholder roles in this blog. Agile is all about competencies rather than roles, it’s about what value we can bring to the team.
So what value can testers bring to the team?
That point will be covered in part 2 of this blog
This is a personal blog. The opinions expressed here represent my own and not those of my current or previous employers.