Agile, Continuous Delivery and Testing
A lot is being discussed about Testing in the world of Agile and Continuous Delivery. Below are my two cents. Feedback is welcome.
With Agile, the separation in specific roles has been removed. Everyone is required to contribute to everything. Team members must be cross functional, with focus on achieving the team goal rather than segregation of duties. There are no distinct development and test phases and all the activities are iterated over the duration.
With Continuous Delivery, teams aim to deliver software to the customer in small increments. Deliveries are expected to be small and fast. It is expected to have automated quality checks and deployment pipelines. With this, as soon as the code is committed and if all the automated checks are positive, features can be made available to customer.
In the context of the above 2 practices, a general thinking is that testing seems to be not that important anymore. With agile, because of the shorter sprints and continuous changing environment and with continuous delivery, delivering the software instantly, traditional testing seems to be falling back because it seems slow and can slow down the entire process which has been improved by the above practices. On the contrary, what is happening is that testing has become more important than before in this era of faster delivery. As the software is delivered faster to the customer, it has become equally important to have faster feedback about the quality. Also because of small increments being released, it is equally important to have a robust integration and regression testing to verify that all related features are working fine. And the Testing process is getting continuously updated based on the new challenges we are facing.
With the new challenges in testing, following 3 practices have become extremely important
Risk Based Testing
With the faster changing cycles and the continuously changing requirements, it is really important to understand the priority in testing. With Risk based testing teams can concentrate their efforts on features that are really critical from an user perspective. This also helps in mitigating the Product risk as high risk features are tested thoroughly and can save excess time spent on low risk features.
Continuous Testing
Continuous Testing not only means automation of the test scripts, but also is about improving the test process in general to support the Continuous deployment process. The main objective of the continuous testing is to provide a constant feedback to the teams about the quality of the system they are building. It should remove the need for a handover from dev to test.
With continuous testing, it should be possible to have a continuous and ongoing regression test. As soon as a feature is committed, feedback is received about its quality with as little intervention as possible.
Exploratory Testing
Till AI can be effectively used in Testing, automation testing will only be test execution according to script. One of the major issue with this is that, execution paths not scripted will never be tested. Hence exploratory testing is very important aspect in Testing.
Exploratory testing provides immediate feedback and requires less preparation time than automated testing. This feedback helps in refining the testing further and helps to improve the quality of test. In case of applications which are dynamic, automation may not seem feasible, but exploratory testing can be really valuable.
. . .
In addition to above, it is important that the test engineers work closely with the developers. Participating in designing of the code with the developers gives a good insight to the testers which helps them in test design as well as actual testing.
With the changing software development process, the testing practices are also changing continuously. It is important that the testers spend time and keep acquiring new skills required for the future.
Testing? Isn't that what your users do all day long in production? :D
Well, if I may add my two cents : I think you should add all the static testing part proof reading stories and epic before developement and creating test cases along the line. A pinch of Test Driven Development because, while testing you could adjust with developement team participation some of the stories flaws as they come to light. Testing in an agile environement is a game of hide and seek where every strategy should be used in order to keep the effort channelled and the output reasonable.