In 2001, seventeen software engineers got together and drafted the Agile Manifesto; a document which discussed the principles of a radically new software development methodology called “Agile.” This manifesto, drafted in response to the rigidity and delay in software delivery associated with the de-facto Waterfall methodology, has four core values and twelve governing principles. These values and principles revolve around the notion of continuously delivering valuable working software to customers.
The general Agile principles mentioned above define the way many teams build software today. They focus on breaking down siloes, enabling collaboration and releasing software quicker through incremental builds, while working to create user value. Similarly, DevOps is an approach to software development where automation and collaboration are emphasized at every stage of a continuous delivery lifecycle and can be thought of as a natural extension to Agile techniques.
Both these modern methodologies emphasize collaboration and automation, however testing often fails to get mentioned. It is no wonder that many testers wanting to adopt modern software development practices are naturally confused by their role in Agile or DevOps teams. The question to be asked is, “How can testing efficiently support the continuous delivery of working software in Agile and DevOps teams?”
The notion of a Testing Center of Excellence (TCoE) has led to testers, mainly operating in independent testing teams, being solely responsible for ensuring quality as per the traditional Waterfall methodology of software development. These testing teams wait on development teams to finish coding so that the application can be tested. If the application passes the tests, it is sent for deployment, otherwise, it is sent back to developers to debug. The code is then tested again, and thus the cycle continues. Since testing comes late in the Software Delivery Life Cycle (SDLC), testers are often pressed for time while trying to comprehensively test applications for bugs. Faced by the pressure of meeting deadlines, companies are forced to release faster without adequate testing, leading to buggy applications in the hands of unhappy users. How does Agile and DevOps solve this common problem?
In Agile and DevOps organizations, testing teams are not siloed, but are tightly integrated with the development teams, product owners, designers and business folk. Modern software development methodologies advocate that quality is the responsibility of every stakeholder in the software development lifecycle, not just the testers. This often turns the world-view of many testers upside-down. They ask questions like, “Well, if testing is everyone’s responsibility, then what am I supposed to do? Am I out of a job?” No. If you are a tester in an organization that adopts Agile or DevOps practices, you are not out of a job. If anything, your role has become more dynamic and a little bit more challenging, but nonetheless, highly rewarding! One thing to note is that following traditional testing techniques in an agile environment will not work.
So how exactly can testers best support Agile and DevOps teams? With modern development methodologies, testers evolve from being just a cog in the machine to leaders who facilitate the conversation around quality with every action. So, the need for testers doesn’t just disappear in Agile projects. Their roles are redefined.
In Agile and DevOps teams, the concept of a “testing phase” needs to be obliterated. Naturally, this sounds like a cause for concern for most testers. However, this just means that testers need to be brought in earlier in the SDLC. They especially need to be involved when feature requirements are being defined, along with business stakeholders, product owners, designers and developers. This ensures that everyone is on the same page so that the number of bugs created because of misunderstanding feature requirements can be reduced. With the advent of Shift Left and the adoption of Behavior Driven Development (BDD) and Acceptance Test Driven Development (ATDD), testers also play a central role in supporting the continuous delivery of working software.
Many testers are afraid they’ll be out of jobs because Agile and DevOps methodologies drive all the internal stakeholders to think about how to enforce quality, and not just a separate testing team. However, what most testers fail to recognize is that testing requires a unique mindset; one that constantly challenges feature requirements and uncovers their users’ pain points. Testers, by nature of their profession, are used to asking the right kind of questions, such as, “What is the intent of this feature?,” “How would a user use this feature?,” or “Is there a better way this could be designed?” This testing mindset is irreplaceable and invaluable, thereby making testers both critical and supportive during the feature definition phase. This helps them drive quality earlier in the SDLC by orchestrating cross-functional meetings with their distinct skillsets and assisting teams with writing test cases.
Testers are also vital in Agile teams as they are the resident experts of testing and quality. With the emphasis on cross-team collaboration and creating quality software at every stage of development, testers act as mentors to other internal stakeholders and uncover commonly overlooked flaws with their extensive knowledge of testing and user experience. They offer their guidance to Agile and DevOps teams and can even assist other team members of varying testing skills with testing.
DevOps emphasizes automation, however, that isn’t a reason for testers to fear losing their jobs. Granted, automation can take over a lot of mundane manual testing work from a tester, however, there are still many types of tests that need to be executed manually. Exploratory testing is an example of this. It is a type of freeform testing where testers examine different parts of an application that haven’t been thoroughly tested. Here, testers act almost like explorers while trying to find bugs and initiate expected changes and outcomes in applications. Therefore, testing is a performance that needs experience and creativity, and one that no level of automation can replicate! Testers can also share their knowledge of all the tests to be executed and work with developers to set up automated tests.
Agile and DevOps teams are on the rise and test automation will inevitably take over a lot of manual testing from testers. However, this doesn’t mean that testers are becoming obsolete; they merely need to adapt to this changing environment. For testers, transitioning to their new roles in Agile and DevOps teams can be painless if they leverage their already-existing skillsets. This way, they can continue making an impact on software quality by:
- Supporting internal stakeholders create definitions of acceptance criteria
- Validating acceptance tests with project stakeholders
- Mentoring cross-functional teams with testing best-practices
- Collaborating with developers to set up automated tests
Rest assured that as long as organizations want to create quality software, the need for testers will not disappear!