一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JMeter:事务的定义及事务控制器”。
1、事务的定义
在做性能测试的时候,有些操作或请求是逻辑上依赖相关的一个整体,不可分割;或者是为了方便度量我们关注的一组操作或请求的性能,将要将其看做一个整体。
基于这些原因,我们把这些操作或请求放在一个事务控制器下。
事务控制类似于简单控制器,不仅提供了元素分组的功能;除此之外,还可以度量其包含的所有测试元素执行的响应时间。
只有当事务控制器所有的取样器都成功时,事务控制器才成功。
2、事务控制器
使用事务控制器的典型场合:
1.当要度量生成某个页面的整体性能时,不仅考虑页面请求本身,还需要考虑完成页面渲染所需要的image、CSS、js等资源,因为请求这些数据也会消耗系统,网络等资源。
故需要页面请求与资源请求看做一个整体,放在一个事务控制器下;
2.在做API或接口性能测试时,接口之间存在逻辑依赖关系,后一个接口会引用前面接口返回的结果,故需要将这些接口看成一个整体,放在一个事务控制器下,度量性能才能接近真实场景;
3.在前面的请求服务器返回了token,后面的请求需要使用token,这些请求有逻辑上的依赖关系,需要看成一个整体,放在一个事务控制器下。
▲ 配置项
Generate parent sample:
若勾选此项,在聚合报告等监听器中只显示事务控制器本身的数据,不会显示其下的每一个取样器请求的数据;反之,则会显示事务控制器和其下的所有取样器的数据。
事务控制器有两种模式的操作:
1.事务控制器额外生成的取样器添加在其下所有的取样器后面;
2.事务控制器额外生成的取样器作为其下所有的取样器的父取样器。称之为父模式。
不选(默认)是以模式1操作;勾选则以模式2操作。
若以父模式操作,断言等可以被添加到事务控制器下,默认情况下会作用于事务控制器下的每一个单独的取样器以及整个事务取样器。为了限制断言的范围,可以考虑将多个取样器和断言同时放在同一个简单控制器下。
Include duration of timer and pre-post processors in generated sample:
事务控制器生成一个额外的取样器,用于测量执行嵌套测试元素所花费的总时间。默认不包含内嵌其中的定时器与前/后置处理耗费的时间。若勾选此项,则包含事务控制器下所有元素的处理时间。
3、应用案例
▲ 登录步骤
这里以ECshop前台系统登录为例。
s1.直接访问ECshop前台系统登录页面;
s2.在登录页面输入用户名及密码,点击登录;
s3.跳转到网站首页。
可以将步骤s1、s2、s3对应的操作看做一个事务。
▲ 运行结果
具体操作较简单,不再细讲。
1.先以非父模式运行,查看结果树与聚合报告如下:
2.以父模式运行,查看结果树与聚合报告如下: