by Don McElwee
Courtesy of App Developer Magazine
Composite applications, which may rely upon hundreds or even thousands of third-party services to perform their functions, are becoming ubiquitous for application development in many industries. As they take control, they are causing an entire generation of conventional testers a world of headaches. One aspect of composite app testing in particular that is especially troublesome for many teams is web services testing.
Web services—software code that enables the client application and the services to interact successfully—are literally the building blocks of application function. To ensure application performance and minimize user problems in production, each web service should be tested—and its functionality and connectivity trusted—before the developing organization integrates it into the application.
Yet, thorough testing of vast collections of web services—each of which may be composed of multiple services, database extraction layers, message queues and other “headless” entities—leaves many companies overwhelmed. Compounding the issue, testing web services and their application integration generally encompasses operations—from functionality and interoperability to security, boundaries and standards compliance—that are either largely absent from conventional testing or their function is substantially altered when they make the transition to web services testing.
The Value of Automation in Web Services Testing
To resolve this challenge, several mechanisms for web services testing have been devised, including service mocking, parsing and manual testing. In Orasi’s experience, companies may achieve partial success with one or more of these approaches, but the process is still cumbersome and inadequate. In our experience, organizations that implement web services testing in a functional and successful manner almost always integrate automation into their web services testing framework.
In the automation market, organizations have access to a highly sophisticated palette of tools. These can quickly and completely test not only the web services but also their integration and interoperability with each other and with composite applications. Automating web services testing and testing at the API level lets organizations isolate the API layer and test integration points, then verify and validate the quality of the end-to-end business process.
Based on pure financial calculations alone (the cost of automation tools, licensing, training, etc., per build, compared with the cost of equivalent manual testing resources), the ROI for automation testing is more than 160%. For web services functional testing, where large numbers of repetitive tests are the only way to ensure accuracy and test consistency, the benefits and the ROI of automated web services testing can be even more impressive.
Tips for Developing a Web Services Testing Framework
Despite the benefits of thorough web services testing, it doesn’t exist in a vacuum, and it works best when it is part of a properly managed and executed overall QA strategy. Considerations for accomplishing this goal include:
- Develop a test plan and test data management plan that includes web services testing to promote complete integration into the testing process.
- Make use of automation tools, and energize automation with accelerators for even more efficiency and faster results.
- Start testing early (after stakeholders agree upon use cases and interface definitions) for best results, but continue to perform QA tests at important junctures in the project.
- Don’t assume web service testing is best left to developers. With an effectively designed framework, QA teams can and should be handling web service testing for optimal results.
- Make a provision in the test plan for sharing test results quickly and early.
- To ensure test reliability, always analyze test coverage.
- For best results, combine web service testing with a test data management strategy. Doing so makes it practical for QA teams to introduce hundreds or even thousands of additional test cases or business processes.
Factors to Consider When Selecting an Automation Tool
If your enterprise isn’t already using automation for web services testing, following are some criteria to consider in your evaluation of an automation product:
- Is the tool simple to use and learn, with minimal training required?
- Does it offer out-of-the-box support for XML, WSDL, HTTP, REST, JMS, etc.?
- Does it offer “drag-and-drop” functionality for creating and editing test cases?
- Does the tool offer a fully, or at least partially, visual interface (GUI)?
- Does it reduce repetitive activities? For example, can the user create new tests from a “template” created by an earlier effort?
- Does it support text-based tables and Excel files?
- Can it be customized, such as with custom code or event handlers?
- Does it support web services security configuration (X509, Kerberos, etc.)?
- Does it support API testing?
- Does it offer test data management features?
Eliminating Unsatisfactory Outcomes
With very few exceptions, correcting defects in a production environment is more expensive and time consuming than identifying them during testing and correcting them before release to production. This rule is even more applicable with composite architectures, where inferior connectivity and interoperability can render an application essentially useless.
With user expectations at an all-time high and continuing to accelerate, companies cannot afford to dismiss the value of web services testing any longer, nor can they ignore the value of automation in making web services testing more efficient, effective and affordable.
When web services testing approaches are properly structured—and are supported with quality tools—testing is far easier to accomplish. It also can be started as soon as services are available, enabling QA teams to discover defects early on, when they are less expensive and faster to remediate.
More than 90% of web and mobile applications are abandoned within a month, and poor performance is a leading cause of user abandonment. Thorough web services testing with automation speeds testing cycles, promotes higher product quality and increases user satisfaction. Organizations that desire strong adoption of their applications should not risk ignoring the value of integrating web service automation into their overall testing approach.