Service-oriented architecture offers software testers an opportunity to engage stakeholders early and often. Before you dive in, prepare your testing practices to handle the potential challenges of SOA.
In today's IT environment, service-oriented architecture (SOA) adoption continues to be an important strategic approach for next-generation initiatives. SOA testing is "on the rise," according to Gartner's Hype Cycles 2011 research report . A major driving trend is the effort to migrate from legacy platforms such as client-server to a more robust, platform-agnostic SOA that is flexible enough to serve the needs of multiple corporate business objectives through a shared technology platform (web services). While this trend has been underway for several years, the Gartner study suggests that many organizations are still actively making the switch.
SOA is a business enabler, and the business—not IT—drives SOA. SOA supports active business stakeholder engagement throughout the project and offers an opportunity for you as a testing professional to foster active customer participation to deliver the highest quality product possible. Your job is to develop a comprehensive strategy that leverages SOA-specific testing practices to shape a holistic testing approach.
There are some clear challenges for testing organizations transitioning to SOA, such as determining which legacy testing practices will transition well and which will not, preparing the organization for the necessary phases of SOA testing, and preparing for SOA-specific test tools and other needed resources. A very important aspect of your job is to ensure that you have the necessary information. While many of the testing practices used for legacy testing efforts are still relevant and necessary, the organization must adopt new testing techniques and approaches and change its mindset in a few key areas of the software development and testing lifecycle (SDLC).
Know the Important Aspects of a Comprehensive SOA Testing Strategy
Today's SOA components demand more from testers than just business-level understanding of requirements. This is because an effective testing strategy often will require early involvement to have the best possible chance of creating a high-quality software product in a reasonable amount of time. While SOA is made up of much more than just web services, they are a major part of a SOA testing strategy and, as such, a general understanding of them is critical.
Because SOA components are often made up of atomic web services that are heterogeneous and configurable to work with other web services, the testing approach must take into account the highly variable nature of service independence. The large number of permutations that can arise from several services that must interoperate in different ways is very similar to what occurs on certain API-level client-server testing projects. A testing strategy must allow for non-GUI testing approaches that prove components interoperate per a defined services (or API) specification. This type of testing is typically referred to as headless testing . Because services are developed independent of and typically well before a GUI, the need to test a service early in the SDLC is critical. One main difference, though, is that the types of tools that you use on an SOA project will certainly be different than those you use for API-level client-server testing. The tools are not necessarily more complex, but using them to their full potential requires a level of architectural understanding. There are a number of commercial and open source web-service-specific tools that can help with the early testing phases of services.
Know the Most Important Components of Your Organization's SOA Architecture
While there will be many components in your organization’s architectural model, you should focus on the components that are going to help you serve the critical objectives defined in the testing strategy. Toward that end, there are at least three important architectural elements you should know.
The first element is the Web Services