|
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
Functional Testing
Challenges
- Large number of application programming interfaces (APIs) and communication paths
between services
- Higher levels of integration necessitate interoperability testing
- Establishing testing ownership and trust
|
Approach
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 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.
Performance Testing
Challenges
- Unit and service-level testing during development
- Interface validation
- Multiplicity of platforms and technologies, requiring various test tools
- Collating data and monitoring application performance without a single tool that
contains the whole picture
- Maintaining quality across applications
Approach
Performance testing can identify how the model will actually work under real-world
business demands. It requires a design of the end-user workload and environment.
Markov chains are commonly used to define how the entire suite of applications will
be used. Subjective assessments are drawn from usage feedback given by stakeholders
and product managers. Raw data in the form of Web server and application server
logs are then mined for data on usage probability. With this information, appropriate
performance scenarios can be defined.
SOA: A Promising New Paradigm
More businesses are beginning to adopt SOA solutions for significant market response
and resource advantages. While the benefits of SOA may seem compelling, they are
not inevitable.
The travel and hospitality industry thrives on the ability to turn first time or
occasional customers into loyalists. SOA applications can go a long way in smoothening
experiences across the value chain: but not without robust implementation and rigorous
testing throughout the SOA life cycle.
|
|
|
|
|
|