Renowned enterprise software design consultant Martin Fowler has this to say about Service Oriented Architecture (SOA): "I've heard people say the nice thing about SOA is that it separates data from process, that it combines data and process, that it uses Web standards, that it's independent of Web standards, that it's asynchronous, that it's synchronous, and that the synchronicity doesn't matter!" Fowler's take on SOA may be light-hearted, but it does come uncomfortably close to defining the ambiguity that can surround SOA.
SOA promises to connect diverse services into a seamless process that is reusable, responsive to market conditions, effective in integrating heterogeneous systems and able to maximize the enterprise's existing IT assets. But with myriad available choices in hardware, software and process technologies, SOA also raises distinct challenges in testing and implementation.
SOA and the Travel and Hospitality Industry
The travel and hospitality industry (and airlines in particular) leads the pack in adopting IT - and SOA - into core business. An SOA can facilitate reusability and integration of systems crucial to efficient work cycles, customer satisfaction, and business scalability.
SOA brings the travel and hospitality industry the following benefits:
* Seamless connectivity over heterogeneous IT legacy
* Real-time deployment of new business partners
* Reduced change implementation cycles
* Faster customer service leading to higher customer loyalty
* Improved marketing analysis
* Effective failover management
SOA Application Testing: Challenges and Approaches
The SOA model requires numerous moving parts to communicate and work together closely amid constant change. This significantly impacts the 'what' and 'how' of testing. SOA focuses on delivering reusable parts rather than custom applications. This shift, along with outsourcing and off-shoring, means part-makers are further isolated from each other.
Scott Barber, chief technologist at PerfTestPlus, makes the challenges with SOA application testing easy to understand: "Since SOA applications are composed of loosely coupled, business-level services distributed over a network, we must test applications end-to-end, service-by-service, and interface-by-interface." Failure to start tests early (at the unit stage) and maintain them through the phases of inception, elaboration, construction and transition can also balloon time and costs.
Manual testing is difficult and often impossible in an SOA environment where change is rapid and functionality is extensive. Finding the balance between automated and manual testing is crucial to the process, as is the assurance that long-term savings will offset the short-term cost associated with automation.
Two of the most important facets of SOA testing are
* Large number of application programming interfaces (APIs) and communication paths between services
* Higher levels of integration necessitate interoperability testing
* Establishing testing ownership and trust
SOA applications are created to extend across departments and organizations. In order to test functionality of such breadth, a funnel approach is employed. Tests address end-to-end business pirate kings hack flows at the first and broadest rung. These flows are then broken down to identify inter-application, intra-application and finally unit tests. Testing at all these levels, starting with the most atomic, ensures that basic functionality is verified. The most critical functional tests are conducted at the stratum of integration. This happens both at inter- and intra-application levels. Test scenarios that encompass the end-to-end path are created, and data as well as expected results documented at every step. Once this is achieved a similar funnel breakdown into inter-application, intra-application and unit entities is carried out.
Exploratory testing using business experts can unearth defects hidden to other techniques. Integration tests can also be carried out with regular functional tests if they possess a similar technology stack.