Service testing
19.3.2 Service testing
Testing is important in all system development processes as it demonstrates that a system meets its functional and non-functional requirements and to detect defects that have been introduced during the development process. Many testing techniques, such as program inspections and coverage testing, rely on analysis of the software source code. However, when services are offered by an external provider, source code of the service implementation is not available. Service-based system testing cannot therefore use proven source code–based techniques.
As well as problems of understanding the implementation of the service, testers may also face further difficulties when testing services and service compositions:
1. External services are under the control of the service provider rather than the user of the service. The service provider may withdraw these services at any time or may make changes to them, which invalidates any previous application testing. These problems are handled in software components by maintaining different versions of the component. Currently, however, there are no standards proposed to deal with service versions.
2. The long-term vision of SOAs is for services to be bound dynamically to service-oriented applications. This means that an application may not always use the same service each time that it is executed. Therefore, tests may be successful when an application is bound to a particular service, but it cannot
be guaranteed that that service will be used during an actual execution of the system.
3. The non-functional behavior of a service is not simply dependent on how it is used by the application that is being tested. A service may perform well during testing because it is not operating under a heavy load. In practice, the observed service behavior may be different because of the demands made by other serv- ice users.
4. The payment model for services could make service testing very expensive. There are different possible payment models—some services may be freely available, some paid for by subscription, and others paid for on a per-use basis. If services are free, then the service provider will not wish them to be loaded by applications being tested; if a subscription is required, then a service user may
be reluctant to enter into a subscription agreement before testing the service. Similarly, if the usage is based on payment for each use, service users may find the cost of testing to be prohibitive.
534 Chapter 19 ■ Service-oriented architecture
5. I have discussed the notion of compensation actions that are invoked when an exception occurs and previous commitments that have been made (such as a flight reservation) have to be revoked. There is a problem in testing such actions as they may depend on the failure of other services. Ensuring that these services actually fail during the testing process may be very difficult.
These problems are particularly acute when external services are used. They are less serious when services are used within the same company or where cooperating com- panies trust services offered by their partners. In such cases, source code may be available to guide the testing process and payment for services is unlikely to be a problem. Resolving these testing problems and producing guidelines, tools, and tech- niques for testing service-oriented applications remains an important research issue.
Parts
» Software Engineering Ian Sommerville(www.ebook dl.com)
» An insulin pump control system
» A patient information system for mental health care
» A wilderness weather station
» ■ Agile software development 57
» Plan-driven and agile development
» ■ Requirements engineering 83
» The software requirements document
» Requirements engineering processes
» Architectural design decisions
» System context and interactions
» Preventative maintenance by refactoring
» ■ Sociotechnical systems 265
» Verification and formal methods
» Safety and dependability cases
» Components and component models
» Two-tier client–server architectures
» Multi-tier client–server architectures
» Distributed component architectures
» ■ Service-oriented architecture 509
» ■ Service-oriented architecture 511
» ■ Service-oriented architecture 513
» Services as reusable components
» Service candidate identification
» Service implementation and deployment
» Workflow design and implementation
» Project duration and staffing
» The process improvement process
» The CMMI process improvement framework
Show more