Software testing is not optional.
Let me repeat: Software testing is not optional!
Software defects are one of the most common reasons for clinical or consumer medical device recalls, and serious issues stemming from software errors abound. A 2020 study by the Australian government identified a rash of problems, such as errors related to resilience and reliability, including software that crashed, froze or functioned only intermittently — or failed to respond at all.
How do software errors present themselves in the real world? Here’s just one example of software gone wrong. In 2016, clinical software used widely by practitioners in the U.K.’s National Health Service had been miscalculating patients’ risk of heart attack, errors that had gone undetected since 2009. As a result, at least 300,000 heart patients over that seven-year period were given the wrong drug or medical advice.
The consequences of the software defect were tragic. Many patients who had erroneously been told they were low risk suffered heart attacks or strokes. Many others endured the side effects of heart medication they didn’t actually need.
That’s why every software application must undergo meticulous testing before it is released to users. Testing improves the quality of the product, as well as increases user satisfaction, verifies the system meets requirements, promotes security, identifies preventable errors, and mitigates costs by identifying defects early when they are less expensive to fix.
Yes, testing takes time, but the benefits far outweigh any stress to the schedule.
Objective of software testing
The primary purpose of software testing is to provide stakeholders with accurate, timely and useful information on the state of the application under test.
Testing can:
- Determine whether requirements have been met, including performance requirements
- Identify areas of weakness (high concentration of defects)
- Help prevent defects, not just find them
- Provide confidence in the system
- Establish the degree of system quality
- Confirm the system is usable, operable, secure and ready to deploy
Types of software testing
Manual testing is the most hands-on type of testing. There are two varieties: White Box testing and Black Box testing.
White Box testing tests the system’s underlying structure, architecture and code to validate input-output flow, which enhances design, usability and security.
Black Box testing approaches testing from an end-user (external) perspective. It involves testing against the specifications and requirements, focusing on what the application is supposed to do.
Though manual testing is employed by every development team at some level, the major drawback is that it is tough to scale in today’s fast-paced development life cycle.
Automated testing
Test automation uses automation tools to maintain test data, execute tests and analyze test results without human involvement to improve software quality. It can be used for:
- Unit testing, where a single unit of the application is tested in isolation
- Integration testing, which verifies how the modules communicate and behave together
- Smoke testing, used to evaluate the stability of the system build
- Regression testing, used to determine if recent code changes have affected any existing functionality of the code
Continuous testing
Continuous testing is the process of executing automated tests as part of the software delivery process in order to obtain feedback on the risks associated with a software release as rapidly as possible. This approach applies the principles of automated testing in a scaled, continuous manner to achieve the most reliable test coverage for an enterprise.
Verification versus validation
Software verification testing is the process in which the software is evaluated in the development phase to determine whether it meets the requirements and design specifications. You are verifying all the aspects of the software, including unexpected conditions. If an error is found, the development team has an opportunity to correct it before the product reaches the end users. In essence, verification testing determines whether you’re building the product right.
Software validation testing, on the other hand, determines whether you’re building the right product. Validation testing evaluates the product or system at the end of the development process to determine whether it meets end-users’ expectations and ensure the system actually meets their requirements.
The takeaway on software testing
While it may be tempting to skip or skimp on software testing in an attempt to accelerate feature development and product release, the potential harm to software quality and user satisfaction — even user safety — is just not worth the risk.
Careful testing improves consistency, performance and customer satisfaction and is therefore fundamental to the software development process.
Jay Noble heads Integrated Computer Solutions’ global team of engineers, leveraging his more than 25 years of experience leading global software engineering and professional services teams in the medical, military and industrial spaces. He holds a B.S. in computer science from the University of Massachusetts in Lowell, an M.S. in computer science from Boston University and an MBA in international business from Suffolk University in Boston.
Stephanie Van Ness is associate director of marketing and chief storyteller at Integrated Computer Solutions, writing about user experience design and innovations in technology, from gesture-controlled medical devices and extended reality-powered surgical training simulators to autonomous truck fleets. Her work has appeared widely in medical device and software publications. She holds a journalism degree from Boston University.
The opinions expressed in this blog post are the author’s only and do not necessarily reflect those of MedicalDesignandOutsourcing.com or its employees.