There’s something magical about a peanut butter and jelly sandwich. The earthiness of the peanut butter mixed with the tanginess of the jelly creates a whole new flavor that doesn’t exist anywhere else but in the magical combination of those two ingredients. To me, a peanut butter and jelly is the perfect example of the idea of a whole being greater than the sum of its parts. This exact same thing can be achieved in the world of software testing, and at large software deployments for Parasoft, I have essentially just been making a bunch of peanut butter and jelly sandwiches. So I thought I would go through some of these combinations I’ve created at Parasoft, describe how to combine them, and illustrate what you can achieve.
In the world of testing tool peanut butter sandwiches, this is number one. I may be biased here as the product manager of functional testing tools, but IMHO there is no greater combination of Parasoft technologies than the marriage of SOAtest’s API testing capabilities and Virtualize’s service virtualization capabilities.
The most obvious value add you can get when combining these two technologies is the ability to create dynamic test environments. Ordinarily, this is a function that tends to be relegated to service virtualization, but an often-overlooked piece is the ability to execute test cases in the context of an environment. By combining SOAtest and Virtualize, a user can create a reusable template that can be deployed as a function of Continuous Integration. This environment template will be a combination of virtual services and test cases.
This essentially achieves a sort of sandwich effect on your application, which is powerful because you can align the test cases and their validations with the backend virtual services. This allows you to achieve true CI because you know that when you go to execute your test cases, they will be tied together with the corresponding virtual services, and your test environment can provision itself. As the SOAtest test cases get ready for execution, the first step in the test case is to call Virtualize and set the proper virtual services and data in place. The last step of the test is to call Virtualize and tear down the environment. Viola! Environment sandwich.
Above, we used SOAtest in the context of a virtual environment provisioned by Virtualize. By turning this relationship the other way around, we can use Virtualize to support SOAtest during test execution.
Virtual services can listen at endpoints. They don’t have to respond back when called they can actually send the call on. Something you can do with service virtualization is create a virtual service to sit in a middleware application and simply monitor. Then, when one middleware component calls another middleware component, you have an “interception point.” At this point, you could call a virtual service that simply reports the message sends it on its way. But what can we do with that message?
This is where combining SOAtest and Virtualize becomes powerful. Virtualize can report those messages back to SOAtest for validation purposes. SOAtest can then execute calls against the front-end, while Virtualize “listens” in the middle. And as test cases execute, Virtualize can report transformation messages back to SOAtest. The events are reported in the middle of test case execution and the data from the request can be tied to the event that comes back from Virtualize in the form of a validation, thus creating true dynamic end-to-end testing.
Work that you do inside of SOAtest can become immediately available inside of LoadTest, Parasoft’s performance testing solution that sits inside of SOAtest and allows you to not only execute API tests at speed, but automatically validate the responses in accordance to your SLAs.
SOAtest has been around for a long time, and users have been working within the solution to create powerful end-to-end test case scenarios for a long time. But what most people might not know is that all of those test cases can be run within LoadTest. Quick functionality exists inside of SOAtest that allows you to configure and validate all of your API tests for LoadTest. This means that you don’t have to create performance tests, you can simply leverage the work that the testing team is doing and run it at speed.
This is software test automation at its finest. By combining these two technologies together, you can efficiently create more meaningful performance tests. SOAtest calls APIs and exercises the web front-ends prior to load test execution, providing you with a greater sense of comfort that your performance test is going to execute without issue because the environment has been pre-validated. This combination allows you to save a lot of time on initial test creation as well as during test execution.
Virtualize can create virtual services with “performance profiles.” These performance profiles slow down the virtual services’ response times to a predictable baseline. You can either configure these performance delays manually or pull them in from an application performance engine such as AppDynamics or Dynatrace. These services can then be deployed into an environment that is set for performance testing, making the combination of Virtualize and LoadTest very powerful.
Virtualize sets the stage and provides a baseline for the environment. LoadTest can then execute against this environment to surgically identify performance issues. This is exceptionally powerful because you are creating an environment that is customized for the LoadTest. As a precondition of executing performance tests, LoadTest can tell Virtualize to switch into performance mode, thus applying the performance baselines to specific applications that have been simulated.
LoadTest then validates the whole environment, and we can understand the delay time that came from virtual services vs. from our real services. This information is valuable because it tells us exactly where our performance bottlenecks are, and by switching different components between real and virtual, and applying different performance baselines, we can surgically identify performance issues.
As we cross the aisle between API functional testing and development testing, we can leverage our reporting and analytics platform, Parasoft DTP, to greatly extend our technologies. It is designed to take in all sorts of information from development and testing activities, to provide meaningful widgets and reports that users can leverage to assess release readiness.
DTP can connect to requirements engines like Jira, pull out specific information about requirement sets, and display that information inside of DTP for clear visibility. On the other side of the fence, SOAtest can tie specific test cases to their associated requirements. By combining these two technologies together, you can supercharge the workflow: DTP can present the requirements to the user, providing the ability to create test cases for them, and then those test cases will appear on the SOAtest server or desktop. The user can then create, modify, or update any of the test cases to have the functionality that covers their specific requirement.
And now the real magic begins! Since there is a tie to the requirement inside of the reporting and analytics engine, every time you execute that test case it will tie those results to the requirement. If you want to dig into the details of this, it’s covered in depth in a recent blog post, but the net effect is that you will be able to see if all of the requirements have associated test cases, as well as how those specific test cases are performing. This really helps with release readiness because you will know whether something has been tested as well as whether some business-critical functionality is failing.
Just as peanut butter and jelly sandwiches combine ingredients for optimal deliciousness, combining software testing technologies together gives you a powerful framework for next-level software testing automation that is more efficient, and frankly, more fun. There are many more ways to combine our automated software testing tools together, but this is a good place to start. At the end of the day, it’s really all about making sure you have thoroughly tested your application. So go out there and get snacking testing.
A Product Manager at Parasoft, Chris strategizes product development of Parasoft’s functional testing solutions. His expertise in SDLC acceleration through automation has taken him to major enterprise deployments, such as Capital One and CareFirst.