DevOps is a software project lifecycle model often employed by agile teams that combines development and IT operations. Traditionally, testing is the last phase in “development” after “build” but before “release”. However this restricts testing to a very narrow scope and approach increasing both project and product risk.
Rather than a phase of development, testing activities are separate and parallel to both development and IT operations activities. In other words, for every development or operations activity, there’s a corresponding testing activity. In the DevOps model, this expands testing to the left and right of where it would traditionally be to encompass the entire DevOps lifecycle. This opens up possibilities for further testing referred to as continuous testing (Ashby, 2016) or holistic testing (Gregory, 2021):
Software isn’t just executable programming code and development isn’t just about programming. Software is about helping people with their problems. Bugs can exist in, or be traced back to, earlier stages of software development or only manifest in later stages of release and operation. Software projects must therefore be open to testing throughout the DevOps project lifecycle to uncover important problems.
Expand left into development refers to testing activities in the left “development” side of the DevOps model during the discovery, planning, coding and building activities. This involves idea and artefact testing, such as user stories, requirements, designs, code reviews, developer pair-testing, early builds testing and continuous integration tests.
Expand right into operations refers to testing activities in the right “operations” side of the DevOps model during the release, deploy, operate and monitor activities. This involves release testing, continuous deployment tests, testing in production, usage and problem monitoring.