Load Testing with Apache JMeter | Measuring Web Services Response Times

Measuring Web Services Response Times

The next application to test is from the article "Using Apache Axis version 1 to build Web Services". It’s currently not possible to record a web service (SOAP) application automatically so we’ll have to enter each web service request by hand. We’ll also have to download the latest nightly build of JMeter, since the SOAP support was not fully implemented in version 1.8.

Setting up a SOAP test plan resembles what we have seen above for HTTP test plans. To the Thread Group we first add a SOAP sampler:

In the sampler we must set the complete URL of the SOAP request. We must also set the SOAP data, and this isn’t always easy, because it has a complicated format. I find the simplest way to do this is to start Axis’ SoapMonitor, run the client, copy the SOAP data from the SoapMonitor, and paste it into the JMeter SOAP request. A request looks like this (this is a request for getting the DVD titles):

Then we must also add an HTTP Cookie Manager (same reason as before), and an HTTP Header Manager to set the SOAPACTION header to blank.

If we run this SOAP request once, we get this result in View Results Tree Listener:

You can spot the titles of the 3 DVDs at the bottom of the SOAP response.

Entering all the SOAP requests for the full DVD use case is fairly straightforward, but boring. Here’s the complete setup seen in the left pane:

To see what the response times are for single requests we define only one thread and loop 100 times:

If you compare the numbers with the numbers in the corresponding table for the web application, you’ll see that the SOAP application uses somewhat more resources. This shouldn’t be a big surprise, since Axis has some unpacking and packing of XML data to work with.