“Crash,” “bug” and “data breach” are terms that keep computer professionals up at night. When used in the context of Health Information Technology (HIT), they are the stuff of nightmares for health care providers, users and consumers. For example, personally identifiable information can be compromised due to a software-related data breach or software failing to carry out a function.
In a society where we are extremely dependent on electronic information, it is important that software functions optimally. This does not imply that software will be 100 percent infallible. It is a human creation and is prone to errors. These can be from design flaws and programming errors. The best one can hope for is that it is as functional as humanly possible. To reduce risks associated with bugs and errors, one can use software testing.
While recent increases in technology adoptions among health care providers is seen as a way to more efficiently manage and provide care, critics have echoed the sentiment that merely adopting HIT will not be a panacea for the industry. It is only through rigorously tested software that HIT can even begin to fulfill its promise. In a 2010 article published in the Journal of Medical Information Association, Karsh et al. make the case that the promise of HIT should be tempered with the reality that, like software in any other industry, HIT is subject to flaws that can severely affect service delivery. As such, rigorous software testing is an important component of developing and launching HIT software. Software testing provides a proactive measure to attempt to simulate real-world use and eliminate problems in performance before the product hits the market.
Given the importance of reliably performing HIT software, one must ask what does software-testing entail. In many ways, it is similar to the type of testing most other products undergo. To test a washing machine, a company runs the machine thousands of times, trying to mimic working conditions. If a flaw or weakness appears, engineers can make the necessary changes. For software, the same principles apply. Testers will place the software under conditions that simulate usage. Software testers evaluate software with the intent to determine if it accomplishes its specified requirements or not and to identify any missing components or errors that can compromise software functionality.
Software testing is a diverse practice that is subject to a variety of methodologies that can vary according to the type of software and the software’s ecosystem. For example, one cannot expect to test software for a mobile application in the same manner as software for a desktop application. These types of software run on different operating systems and operate under entirely different conditions. As such, software testing is not one-size fits all. Mobile apps should be tested under methods suited for the mobile environment and desktop software should be tested according to its intended environment.
Across mobile and desktop software testing methodologies, three main areas of testing can be identified: performance testing, reliability testing and security testing.
Performance testing involves examining how software uses resources when operating and measuring response time. For example, one might want to know how quickly software loads and the amount of memory it uses. Performance testing would ideally be able to resolve slow-running software or software that requires excessive system memory while operating.
Software reliability refers to the probability of failure-free operation. Simply put it is the chances the software will crash. When done correctly, this process tests two metrics - robustness and stress. The robustness of the software measures if it can function properly when multiple programs are operating simultaneously or when multiple users are using the software at the same time. Stress testing tests the whole system rather than just the software to see how it interacts with the system in which it will operate.
Along when compared to software performance and reliability, for HIT, security is one of the vital tests to be conducted given the sensitive information transmitted by the software. Security tests can model and simulate malicious attacks aimed at compromising data security. Through models and simulations, vulnerabilities can be discovered in a controlled setting allowing programmers to correct these flaws without risking secured data.
HIT software like any other product is subject testing for quality and for the safety of its users, as software becomes more sophisticated and is required to carry out more important tasks, the quality of testing must also mirror the risks involved. With vigorous software testing, the promise of HIT can be realized without a costly trial and error process.