Following the line of our latest interest in the topic of automation and improving tests with the use of AI, in this installment we want to go over how agile development can be improved with the use of continuous testing (CT). First, let’s get some concepts in order:
- Agile Development is the use of various approaches to software development and is based on self-organization and cross-functional teams, all joined together to create an iterative and effective developing process.
- Continuous Testing is a testing practice found in the DevOps process where applications are constantly being tested and feedback is always being sent. The bases of CT are: test early, test often, test everywhere and automate where necessary.
Now, bringing in the term continuous testing might make people wonder, do we need CT in order to have a successful agile development practice?
The answer is, maybe. While you can carry out agile methodologies you might find that work is not being delivered on time and tasks are being dragged weekly from sprint to sprint, this causes two major issues: 1) The allocation of QA resources becomes irrelevant and team members are left with nothing to work on. 2) Stories get dragged from sprint to sprint with no sign of real process, causing the process to become stagnant.
How do we avoid these issues? Test, test, test. Implementing continuous testing into our agile projects will eventually allow us to deliver what the client wants, when they want it and almost always, bug-free; how does CT ensure this? Let’s look at a few key points on this practice:
Software is constantly being released, implemented, and immediately sent into a testing phase.
Feedback for the code is quicker, allowing devs to have fixes in almost no time.
The tight relationship between devs and testers allows stories to be resolved more efficiently.
One could argue that efficiency can still be achieved when sticking to more classic ways of testing and implementations but, by only performing selective tests the end result will not be guaranteed and most likely it will need to be revised again. CT provides a more stable ground for feedback and collaborations since it involves teams, individuals tools, and services; an important key in an agile project that includes CT into its practices is that the team will often feel confident and empowered to make decisions and figure out solutions. If DevOps is given the autonomy to add and remove tools as they wish, success is more likely to happen.
How can we ensure that continuous testing is successful? We can put the following things into practice:
- Keep the use of robust testing plans to a minimum, spend less time on documentation.
- Test thoroughly with the use of negative and positive testing, “breaking” functionality will always bring more insight.
- Ensure that business goals are being met by developing a close relationship with the business analyst.
- Review all user stories and confirm that there’s no room for ambiguity, a story without acceptance criteria is not valid.
- Avoid wasting resources by correctly assessing what can be automated and what not.
- Run tests using a Continuous Integration server such as Jenkins or TravisCI
- Review internal processes and improve where needed, deployment and implementation should be issue-free.
Our biggest takeaway after reviewing the practices involved in Continuous Testing and the principles of Agile Development is that agencies should stick to agile methodologies and never stop finding ways to improve them. This will almost always secure success in a digital business environment.