No discussion about software quality would be complete without examining the role of software testing. In the previous post in this series on quality, we mentioned that software testing is a vital part of software quality control (QC). That’s because it’s used to find and prevent defects, ensure performance, and confirm that requirements are met.
“Testing is the procedure of evaluating software quality by utilizing the software with appropriate test cases and to figure out whether the proposed software requirements are fulfilled.” – Manju Khari
In this post, we’ll take a closer look at which types of software need to be tested, when they should be tested, and how testing can help you ensure the quality of your software is high.
Types of lab software that should be tested
Every type of software in the lab needs to be tested. Whether your lab is using an off-the-shelf laboratory information management system (LIMS) with or without customizations, custom software applications, or instrument and system integrations, you’ll need to make sure that you test them all.
When to test software
We recommend testing frequently throughout the development phase, but especially before you go live in your production environment. Software should also be tested anytime a change is made to applications already in production. Lastly, we suggest testing production software periodically to ensure nothing has been broken by regular system updates such as those coming from other software vendors (e.g., LIMS version releases or supporting library releases, which may not be as obvious).
How to ensure testing supports the best quality software
There are several ways you can use testing to make sure software meets your lab’s requirements, is free from error, and fit for purpose:
- Include non-functional tests to ensure your software is robust, but also flexible, performant, and scalable. This is critical for labs in the process of scaling or wanting to scale in the future. Non-functional tests might include performance, load, stress, volume, and security testing.
- Automate testing to provide maximum code coverage. Code coverage is a software testing metric that refers to how much of the source code is being tested. In general, you should aim for about 80% code coverage. As Manju Khari notes, an increase in automated testing is proven to show quantifiable improvements in quality assurance. Also, there’s less chance of human error. LIMS workflow test automation is a good example of a common software test automation that clinical labs can take advantage of.
- Develop a software testing plan. Write an automated testing implementation strategy and risk management plan. An exercise like this can help you identify where you could add automated testing while avoiding common pitfalls — such as automating tests for unstable test objects, introducing too many test cases at once, failing to write test specifications, lack of leadership support for automated testing, or weak definition of project terminology.
Note that it won’t be possible to automate absolutely everything related to software testing. You’ll always need people to manually develop and maintain the tests. But we advise labs to start building now and continue to add automated testing wherever possible. We believe it’s helpful to view the effort expended in building tests as continually ensuring overall quality, rather than simply part of the development effort.
High-quality testing leads to high-quality software & more efficient lab processes
Typically when clinical labs make minor assay revisions, they need to make time to validate them prior to sending the revisions to the production environment. If you use automated software testing, however, you’ll save time during this phase, and you’ll spend less time validating minor revisions overall.
In other words, investing in automated testing during the initial software build pays significant dividends over time, in terms of efficiency and efficacy, as assays evolve. When researchers looked at the trade-offs between automated and manual software testing, they reported that “test automation is a plausible tool for enhancing quality, and consequently, for reducing software development costs in the long run.”