目录
前言
前言
在使用Jmeter进行GUI/页面压力测试时,通常会用到事务控制器,我们通常会将页面上的一个动作(例如一次点击)看成一个事务,然后对该动作包含的请求进行事务化,此时结果的聚合报告中就会统计整个事务的响应时间,本文分析了聚合报告中事务的响应时间与其包含的子请求的响应时间之间的关系
一.事务控制器:事务的响应时间与子请求响应时间关系
不压测情况:
事务的响应时间 = 子请求响应时间的和
压测情况:
事务的平均响应时间 ≈ 子请求平均响应时间的和 【准确来说是相等的,但是聚合报告中的响应时间为四舍五入之后的整数,会产生误差】
事务的median/90%/95%/99%/最大/最小响应时间 ≠ 子请求median/90%/95%/99%/最大/最小响应时间的和
二.详解
举例:有测试脚本如下,事务Goods Sale Page包含子请求4、5、6
1.不压测情况
设线程数、循环次数为1,跑单笔业务查看聚合报告结果
当事务控制器取消勾选Generate parent sample时,聚合报告会统计事务的响应时间与子请求的响应时间,我们取消勾选Goods Sale Page事务控制器Generate parent sample选项
聚合报告结果:
可以看到:事务Goods Sale Page的响应时间=请求4响应时间+请求5响应时间+请求6响应时间
2.压测情况
压测情况下聚合报告结果:
可以看到:
事务Goods Sale Page平均响应时间=请求4平均响应时间+请求5平均响应时间+请求6 平均响应时间 [18=6+5+7]
事务Goods Sale Page的median/90%/95%/99%/最大/最小响应时间 ≠ 子请求median/90%/95%/99%/最大/最小响应时间的和
原因是:
以平均数为例:
多组数据的平均数的和 = 数据和的平均数
以中位数median为例:
压测时,事务响应时间的median是取的子请求总和的值的中位数
多组数据的中位数的和 ≠ 数据和的中位数
数据组1 :6,3,2,8,9 --中位数6
数据组2 :9,1,2,7,8 --中位数5
数据组和:15,4,4,15,17--中位数15 结论:5+6≠15
可以把数据组的和看成一个事务,把数据组1、2看成子请求来理解
当然,当系统各方面都特别稳定时会出现相等的情况,例如下图 出现了事务中位数响应时间 = 子请求中位数响应时间的和的情况
总结
以上是本人学习过程中对聚合报告响应时间做的一些分析,如有不严谨之处请大家指正