JMeter:什么是负载测试REST API的良好测试结构?

时间:2013-09-24 19:25:38

标签: jmeter load-testing jmeter-plugins

我正在使用JMeter对一堆API(例如用户服务,播放器服务等)进行负载测试(基线,容量,寿命)。这些服务中的每一个都有几个端点(例如,创建,更新,删除等)。我试图找出一种在JMeter中组织我的测试计划的好方法,以便我可以加载测试所有这些服务。

1)为每个API创建单独的JMeter测试计划(jmx)是一个好主意,而不是创建一个JMeter测试计划并添加线程组,如“用户服务的线程组”,“线程组的播放器”服务“等?我在考虑为每个API添加一个测试计划,然后为不同类型的负载测试(基线,容量,寿命等)添加几个线程组。

2)当JMeter计算采样时间(响应时间)时,它是否还包括BeanShell处理器所用的时间?

3)在每个简单控制器中放置一个监听器是个好主意吗?我正在使用JMeter插件进行报告。我想查看每个端点的报告。

非常感谢任何或所有问题的答案:)

我使用下面的结构在JMeter中创建测试计划。 enter image description here

1 个答案:

答案 0 :(得分:0)

1)我喜欢看起来像测试套件的测试计划。 JMeter有几种分离组件和测试要求的方法,因此很难设置规则。一个测试计划可能比几个测试计划更有效,并且可以配置为满足大多数要求。我发现计划之间可能存在很多重复,这通常意味着在不同的地方保持相同的代码。最好使用模块并包含在同一计划中以减少代码重复,但包括等效的,可以与测试片段一起使用以减少重复。

线程组最好用作用户组,但可以用来以任何方式分离测试。考虑不同页面/网站所需的扩展。即用户/管理员测试可以在不同的线程组中完成,因此您可以模拟50个用户和2个管理员并发测试。或者您可以区分前端/后端甚至页面/站点。

2)它不包括beanhell预处理和后处理时间。 (但是如果使用beanshell采样器,则取决于代码)

3)听众费用昂贵,所以越少越好。要分离结果,您可以为每个采样器提供不同的标题,然后监听器/图表可以根据需要对这些标题进行分组。您可以使用变量,属性和$ {__ javaScript}等将时间戳或索引作为采样器标题的一部分包括在内。这将导致或多或少的分组,具体取决于您选择的实现。