Somebody floated this question – “How to perform agile performance testing?” Simple answer – Add a sprint towards the end of project for performance testing. It would be an absolutely correct answer for waterfall model. If we apply the same solution in an agile environment, then the question arises – are we getting all the benefits of agile? If not then agile performance testing has to be a bit different. Let us explore it in detail in this article.
Let us take a straight forward scenario – performance testing in a development from scratch project. If water fall, then this is how it would have been done. Lifecycle stage by lifecycle stage, one on completion of another, and finally performance test cycles, fixing the problems, followed by a regression test before pushing the product into production.
Agile Performance Testing:
In Agile environment, the scene is different; each sprint is to generate a shippable product. Hence each sprint will have all above lifecycle stages for (each) developer. What will happen to the performance test? Performance test should be part of each sprint. In addition, there can be a round of full performance test cycle along with regression test cycle in the last sprint. If we don’t do performance test in respective sprint, there is possibility that an item developed in Sprint 1 requires performance fix post last sprint. Which is definitely against the definition of done.
Sprint Performance Test
There can be two ways of achieving it.
First is Unit performance test i.e. including performance test cases in the unit test pack. One can also use unit performance test frameworks for this. In a simple way, add important performance test scenarios to the manual unit test.
Second is a quick round of performance test cycle at the end of each sprint. Something similar to system test. It would require performance test environment ready towards the end of first sprint itself. But it will also ensure that the product is shippable in true sense at the end of each Sprint.
Benefit of Automation
During first sprint itself, select an appropriate framework for unit performance testing. Integrate the performance unit test cases with nightly build through the Continuous Integration environment, and let the performance test reports get published daily along with Unit test coverage.
Performance Test Environment
In waterfall, the performance test environment, which is very close to the production environment, is made available towards end of the project, but here we might have to do that investment in the beginning. One alternative is to have cloud based environment so that the resources are shared with other resource requirements, and not blocked throughout the project life.