Efficiently and effectively testing code in an Agile environment has proven to be a challenge that most software developers are woefully ill-equipped to do. After all, Agile is all about constant iterations, and a rapid deployment cycle that leverages the slipstream ideology. With that in mind, it becomes easy to understand why the QA process can be somewhat daunting in the world of Agile.
Marc Brown, CMO at Parasoft, said “While Agile does create a challenge for software testing iterations, the simple fact of the matter is that there are testing procedures and technologies that overcome those challenges.” One such technology is virtualization, where a virtual representation of the physical environment can be manifested and used to test software, quickly and repetitively.
Brown added, “The same issues that impact agile are also prevalent in the world of IoT, where QA testing has become a must to prevent unsecure products from reaching the market. The same can be said for mission-critical and safety-critical products as well.”
Therein lies the real challenge: How can today’s software QA practitioners effectively insert themselves into the development process and prevent buggy and poorly secured code from making it into a shipping product?
Brown said, “QA testers have to start viewing themselves as part of the process, and offer demonstrable value to their organizations by establishing themselves as a critical part of the development team.” Once enterprises realize that efficient testing can help them to avoid major issues, such as the breach that impacted Equifax or the spate of ransomware impacting operations, it becomes clear that QA is of the utmost importance.
“The answer for properly manifesting a QA test environment means that orchestration as well as virtualization must be used and testers should be creating virtual labs to create the appropriate dependencies and test environments that mimic production systems,” Brown said.
The power of service virtualization
To better understand how an application or service acts in the real world, a true analog must be created that can mimic dependencies, data, processes, and loads that would be experienced by a deployed service or application. That is exactly where service virtualization comes into the testing picture. Service virtualization simulates all of the dependencies needed by the application or service under test in order to perform full-system testing. This includes all connections and protocols used by the device with realistic responses to communication.
For example, service virtualization can simulate an enterprise server back-end that an IoT device communicates with to provide periodic sensor readings. Similarly, virtualization can control the IoT device in a realistic manner. Service and API testing provides a way to drive the device under test in a manner that ensures the services it provides (and APIs provided) are performing flawlessly.
What’s more, those tests can be manipulated via the automation platform to perform performance and security tests as needed. Meanwhile, runtime monitoring detects errors in real-time on the device under test and captures important trace information.
That trace information can be used to resolve issues that normally do not occur until after an application is actually deployed. Take for example problems related to memory leaks, which normally remain undetected until a product is finished and deployed under real world loads. The combination of service virtualization, orchestrated testing powered by automation, and the ability to monitor in real time delivers the intelligence that allows problems such as memory leaks to be caught and resolved early and cheaply.
Brown said “Unsurprisingly, most defects are introduced into a project at the beginning, even before the first line of code is written. Most bugs are found and fixed during testing, but a good percentage (as much as 20%!) are discovered during operation, after the product has been sold and shipped.”
Building a virtual lab:
Testing normally occurs in a lab environment; however, physical labs can rarely offer the same robustness as a production system. With that in mind, it becomes evident that even in the most sophisticated lab, it’s difficult to scale to a realistic environment.
Brown adds “Without service virtualization, none of the above would be possible. However, Parasoft has gone beyond just including service virtualization to making sure it can be deployed in a test environment without too much difficulty.”
Brown said “while many organizations are still new to the concepts of service virtualization, service virtualization has become a foundational element for Agile teams and DevOps teams that need continuous testing capabilities.”
WIth that in mind, it becomes very clear that organizations do not have to re-invent the wheel to bring service virtualization to fruition. Parasoft has gone to great lengths to build a suite of testing orchestration products that leverages virtualization. The company’s Parasoft Virtualize product suite allows testers to access a complete test environment, anytime, anywhere. Parasoft Virtualize, an open automated service virtualization solution, creates, deploys, and manages simulated dev/test environments. It simulates the behavior of dependent applications that are still-evolving, difficult to access, or difficult to configure for development or testing.