By Gilad David Maayan
20/12/2019
The complexity of software development is increasing. Development must now account for cloud-nativity and demands for Continuous Integration / Continuous Development (CI/CD). DevOps teams present an increased focus on efficiency over effort.
The agile methodologies used by most DevOps teams require that testing be integrated throughout the development cycle. Software testing methods and tools are evolving to keep up with these demands by integrating agile testing methods.
In this article, you’ll learn what agile testing is and how it is performed. You’ll also learn about five metrics you can use to ensure that your testing processes are as agile as possible.
What Is Agile Testing?
Agile testing is a continuous software testing process. It is designed to ensure a high quality finished product via early and frequent testing. It requires collaboration between testers and developers and follows an iterative development methodology.
When using agile testing methods, tests are performed by your entire team and defects are corrected immediately. The focus of tests in agile testing methodologies is on users and user concerns.
Agile testing methods are:
- Unstructured with minimal planning
- Best suited for small projects
- Begin with development and are performed in every iteration
- Require less documentation than traditional methods
There are five agile testing methods you can use:
- Behavior Driven Development (BDD) - employs feature samples, called scenarios, written in Gherkin to make program flow easily understood. Scenarios describe how a feature works in various situations, called executable specifications. You use scenarios to clearly outline testing conditions and inputs.
- Acceptance Test-Driven Development (ATDD) - combines insights of various perspectives, including customer, developer, and tester. Tests are designed collaboratively to ensure that an application functions as expected by all parties.
- Exploratory Testing - test design and execution are based on an application’s capabilities. Testers first explore an application to determine functionality. They then design and execute tests according to their findings.
- Test-Driven Development (TTD) - product development begins by defining test conditions. Your team first writes a unit test. They then test it against the current codebase. This test ensures that the functionality to be tested isn’t already present and the test is valid. Developers then program the missing feature and check it using the designed test.
- Session-Based Testing - builds on exploratory testing by introducing accountability measures into the testing process. Charters, or goals for testing, are defined in the beginning but can be adapted or added to during testing. Test sessions are then reported on and the results are used to inform future tests.
5 Metrics for Agile Testing
There are a wide variety of metrics you can choose to measure when testing your software, depending on your goals. The following five are a good place to start with.
- Defect Category
Defect category measures the number of defects according to type divided by the total number of defects. Categories include usability, functionality, performance, compatibility, and security. Using this metric requires clearly defining defect categories. It also requires tracking these categories as defects are reported.
This metric can provide you with insight into flaws in coding practices or tests. If you are seeing the same category over and over, it is a warning sign. It indicates you need more clarity when that aspect of your feature is defined. If you unexpectedly have zero defects from a category, it can indicate that you are not identifying defects successfully.
- Test Case Pass Rate
Test case pass rate measures the total number of passed test cases divided by the number of executed cases. You can use it to better understand the quality of your products and ensure that your team is resolving defects.
Test case pass rate should increase over the life of your project. If it does not, defects either were not successfully corrected or were reintroduced. When using this metric, keep in mind that if your tests are faulty, this measure is meaningless.
- Defect Density
Defect density measures the total number of defects found divided by the number of code lines written. You can use defect density to gauge the quality of your software. You can also use it to better estimate future sprint or iteration times.
When using this metric, keep in mind that it does not account for the complexity of the code your developers are writing. To maximize the meaningfulness of this metric, you should compare density to the density of like projects.
- Mean Time to Detect (MTTD) / Mean Time to Repair (MTTR)
MTTD requires you to track the number of defects found in each iteration and the time taken for testing during the iteration. MTTR requires you to track the number of defects repaired each iteration and the time from testing to completion. For a more accurate measure, you can track the individual times from detection to repair for each defect and find the average.
These metrics provide the greatest value when used together, to present a full picture of defect timelines. You can further refine the usefulness of these metrics by controlling for defect category. This refinement can highlight which defects are particularly time-consuming for your team.
- Automated Test Coverage
Automated test coverage measures the amount of testing done with automated tests divided by total testing. It can measure testing amounts by the number of code lines covered, the number of individual tests done, or the number of test functions performed. You can use automated test coverage to determine the efficiency of your testing.
If you find you have low coverage, it can indicate that you need to re-evaluate which tests you’re automating. Not all tests can be automated but many can and should be to improve efficiency and speed. Use this metric in combination with defect category and MTTD. This combination can help you determine which tests to focus on automating for the greatest ROI.
Conclusion
Agile is based on the iterative improvement of products and processes. If you are unable to retrieve or use feedback from your processes, you cannot benefit from agility. Metrics allow you to both retrieve objective feedback and have a bar against which you can compare subjective feedback.
Hopefully, this article helped you understand what agile testing processes are and how you can adopt these methods. Using the metrics covered here, you can ensure that the methods you have adopted are truly benefiting you and your customers.
Gilad David Maayan
Gilad David Maayan is a technology writer who has worked with over 150 technology companies including SAP, Samsung NEXT, NetApp and Imperva, producing technical and thought leadership content that elucidates technical solutions for developers and IT leadership.
Catch some more of his thoughts on LinkedIn @giladdavidmaayan
