加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

关于JMeter原子性相关探究

发布时间:2019-12-24 05:32:35 所属栏目:资源 来源:宝路测试手记
导读:最近宝路遇到个项目,在使用 JMeter 过程中引发了一些思考,宝路尝试用各种方式去验证,进而有了今天“JMeter原子性”相关主题。 说道原子性,有的同学还一头雾水。。。。啥是原子性?相信大家应该都接触过 数据库 ,数据库的事务就具有原子性(其余的几个
  最近宝路遇到个项目,在使用JMeter过程中引发了一些思考,宝路尝试用各种方式去验证,进而有了今天“JMeter原子性”相关主题。  说道原子性,有的同学还一头雾水。。。。啥是原子性?相信大家应该都接触过数据库,数据库的事务就具有原子性(其余的几个特性本次不讨论),宝路觉得这个原子性的概念,更像是从化学这么学科中“偷”过来的。在化学中,原子是在化学反应不可再分的微粒。影射到事务,那就是一个或者多个操作步骤组成了一个原子单元,在事务执行过程中,如果其中任意一个操作步骤失败,那么整个事务即失败。  说下本次JMeter的测试计划,本次设计4个接口,“登录”、“活动信息”、“查卡列表”、“查询余额”,只有登录成功之后才会触发其余交易。  1.脚本结构(暂时全部交易默认成功):关于JMeter原子性相关探究  脚本中sampler都用相同代码来模拟,可以通过random参数控制返回内容,sleep参数控制交易耗时。  10并发执行1min结果:关于JMeter原子性相关探究  嗯?各接口样本数为什么不一样?有点意思?理论上每个接口样本数应该一致啊。。。。。  宝路调整了下事务控制器配置,勾选了Genernate parent sampler关于JMeter原子性相关探究  10并发执行1min结果:关于JMeter原子性相关探究  感觉目前没啥问题,宝路将执行过程中的结果保存了,打开本次jtl结果:关于JMeter原子性相关探究  嗯?如出一辙。。。从目前看与事务原子性,登录成功多少笔,其余的交易就应该成功多少笔。目前能看JMeter的事务控制不符合原子性,难道是我使用的姿势有问题?  多次执行过,宝路发现个共性:同一个测试计划的各接口的样本总数是递减的。所以宝路做了推测:在场景停止时(线程数从某个设定的值下降到0),比如某个线程在执行完“查询卡列表”时,线程就被kill了,进而导致“查询余额”接口没被执行。  宝路又做了验证:  不勾选事务控制器Genernate parent sampler关于JMeter原子性相关探究  勾选事务控制器Genernate parent sampler关于JMeter原子性相关探究  清除结果后,使用聚合报告打开本次执行的jtl结果:关于JMeter原子性相关探究  经过多次执行,发了个诡异现象:在不勾选Genernate parent sampler时,事务控制器统计的样本数与最后一个接口统计的样本数相同,在勾选Genernate parent sampler时,事务控制器统计的样本数与首个接口统计的样本数相同。  先不管这个是不是BUG,从事务角度看不满足原子性的相关定义。单纯的事务控制器并不严格的具备原子性,这是目前看到的表像。  那么怎么解决呢?宝路之前写过一篇关于JavaRequest探究的文章,感兴趣的同学可以点击看下。本文就不过多阐述了。直接看结果:关于JMeter原子性相关探究  清除聚合报告数据后,再打开本次执行的jtl结果文件;关于JMeter原子性相关探究  嗯,真香。目前觉得唯一的缺点就是没有一个能监听subResult的插件。相同的场景,都是基于java请求的编写的底层脚本,唯一的区别就是组织方式不同。  其实你完全可以这样看:把TestJavaLee中的main看成事务控制器,你细细品,再细细品。。。。  进而宝路得出:单纯用事务控制器来组织多个sampler,严格来说不具有事务的原子性。  如果有不同想法或者看法,欢迎给宝路留言,最后附下TestJavaLee代码:

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读