Tuesday, January 17, 2012

Web Services Load Testing


Now-a-days large number of web applications are either consuming web services or providing their business functions as web services.  Like the performance of accessing the application services from user interface (web pages or desktop forms) is important for satisfaction of the end users, same should be with web services that application is providing.  I found performance requirements are not explicitly mentioned in requirements documents, testers should ensure the performance requirements are mentioned in requirement document similar to the way the performance requirements are mentioned for web pages and servers.

We can test performance of web services like the way we test the performance of normal web applications. We can track metrics like Response Time, Throughput, Memory Consumption, Application Server performance, I/O performance for web services performance testing. I have worked on testing of some applications where  complete  application is built on web services. It's a smart client application which interacts with the server via web services. In such scenarios it is difficult to performance test the application from user interface for huge loads. In such cases we can actually test the core of the application which are web services, rather than testing the client. Performance testing of web services is supported many open source and commercial tools.  There are some open source and free tools available which can server basic performance testing requirements. I found JMeter is good choice among open source tools, JMeter offers good extensibility and scalability and has good options to performance test web services.  In one of the projects, I had to test the web services with 3000 concurrent users with huge data transfers, which is difficult to test with some SOAP testing tools as the data exchange and processing involved with each request is huge. JMeter is the good choice and has good extensibility of the performance testing.

The challenges in load testing of web services is, verification of response of each web service, parameterization of input data, and finding error rate of the requests. We can add assertions on web service response to check whether response is correct or not. This may cause some overhead on JMeter to verify each response and may affect the correct metrics. If your web services have robust logging mechanism, the verification for correctness of response or output can be verified from log files or log message tables.

Some considerations while designing performance tests are, to include think time between calling of different web service methods to when trying to achieve a business flow,  providing appropriate ramp up time, adding more remote machines to JMeter is necessary step if we want to test with large number of virtual concurrent users, configuring the proper Heap memory of JMeter to accommodate more load.

0 comments:

Post a Comment