SOA应用程序的性能测试包括了benchmarking test(基准测试),capacity test(容量测试)和soak test(浸泡测试)三个主要测试阶段。

  基准测试(Benchmarking Test)

  基于SOA的性能测试第一阶段是基准测试,基准测试是用来确定被测应用程序是否存在性能衰退,并且收集可重复性能测试结果以作为性能基准。基准测试的好方法是每次测试只改变一个参数。基准测试包括了相应时间驱动的测试和吞吐量驱动的测试。

  响应时间驱动测试

  对于web service的应用程序,其中响应时间定义为发送一个服务请求到收到服务响应的时间间隔。响应时间驱动的测试主要用来测试单个service的性能。首先加一个虚拟用户作为负载量,然后对同一测试用例按照比例的增加并发虚拟用户数,并分别记录下测试结果,后计算出这些测试结果的平均值作为平均响应时间。

  下图为某个web服务在不同并发虚拟用户数下平均响应时间曲线图,由图可看出,平均响应时间随着并发虚拟用户数的增加而增加。在用户数从50到100,平均响应时间开始比较大幅度地增长,此时很有可能某个系统资源出现了瓶颈,当然前提条件是在被测应用程序没有出现错误的情况下。此时可以进行调优,但要保证每次只改动一个参数值,然后再次执行相同测试用例,并与之前的结果进行对比,选取结果优的参数配置。

  响应时间曲线图

图 1. 响应时间曲线图

  吞吐量驱动测试

  吞吐量被定义为在单元时间内能够成功处理的服务请求的数量。吞吐量驱动的测试主要是基于一组连续web服务形成一个或多个测试场景,来测量应用在单位时间内能够处理的事务数量。

  这是针对一个业务场景进行的性能测试用例,同样首先加一个虚拟用户作为负载量,然后对同一测试用例按比例的增加并发虚拟用户数,后记录下不同虚拟用户数下的吞吐量。

  下图为不同并发虚拟用户数下吞吐量的曲线图,与响应时间一样,吞吐量也随着并发虚拟用户数的增长而增长,但不同的是吞吐量在达到某一高点后,再增加并发虚拟用户时吞吐量则保持与高值接近。这是由于当用户数较少时,单位时间内发出的服务请求较少,所以测出的吞吐量较小,当用户数增加,发出的服务请求增加,所以吞吐量也随之增加,当吞吐量达到高值表明被测应用在测试的硬件环境下达到处理事务的高能力。后同样要做性能调优,以选取优的吞吐量大值时的配置情况。