The Federal Government's efforts to develop a truly robust health data information exchange among the various clinical providers, particularly the Department of Defense, Department of Veterans Affairs and their commercial providers, presents a challenging environment for those that must test software being developed to support their missions. There are inumerable stakeholders, challenges with live data and all its variances, and multiple systems and system owners that must be considered. Add to this the configuration changes that ripple through a system of systems--the job of conducting quality testing becomes its own unique, complex and frequently daunting engineering problem.
As part of our efforts to continually improve upon existing methods and technology, our team has developed customized automated testing for any web application. Using an open source product called Selenium Web Driver, this customized tool can log into a platform and perform testing by navigating application screens, clicking buttons, and filling out text boxes, similarly to how engineers perform manual testing. As with all automated testing methods, these tests can run fast and often in an agile environment, allowing testers and quality assurance (QA) engineers to accommodate and react to the progression of requirements that emerge when maintaining a complicated software system. In this particular use case, some lesser-known benefits of automated testing became evident for improving performance:
- Provides a mechanism for simultaneously performing load testing – It is possible to cue up and loop automated testing even while running manual tests. This practice simulates the actual user demand that complex systems are subject to in a production environment, for ensuring the system’s performance remains fast.
- Finds timing issues – Test automation can bring timing issues to light by using multiple overlapping threads. This overlapping activity produces intermittent problems that would otherwise be difficult to reproduce.
- Expedites continuous improvement – With the addition of new and evolving requirements after every change, testing becomes more laborious, eventually getting to the point where it would be hard to imagine manual tests successfully verifying everything still works. Automated testing, however, is scalable and may identify unintended consequences while QA teams manually test an iteration’s new changes.
Automated software testing can save time and money throughout the development cycle and is critical for software development with complex systems. Using open source products to customize tools to perform automated testing is one of the many ways that the software community can develop more efficiently, improve their processes, and ensure quality.