zoukankan      html  css  js  c++  java
  • Jmeter的作用域问题

      最近项目组遇到一个问题,想实现jmeter每隔一段时间跑一次线程组中的所有用例,因为不知道jmeter的作用域是怎么样的,胡乱试了很多都不清楚怎么解决,只知道应该用定时器,但不知道定时器要放在什么地方,最后还是一位开发叔叔帮忙解决了这个问题,涨知识了。

    首先看看我是什么试的吧

    1.想让线程组中的用例不停的跑,当然要让它循环次数“永远”

    2.然后我想,要让线程组中每条用例都跑一遍再进行等待,定时器当然要放在线程组下面嘛,哈哈,结果我就这么设置了:

    3.跑出来的结果让我傻眼,居然是跑一条用例执行一次定时器,再跑一条用例再执行一次定时器,和我想要的不一样啊

    4.怎么办,开发叔叔过来一看,定时器加在了最前面一条用例下面,问题解决

    5.现在知道了,原来是各种元素的执行顺序和作用域搞错了,那么这里面的规律是怎么样的呢,查看了官方文档后,答案终于揭晓了

    6.官方文档一上来就告诉了我们各个元素的执行顺序

    0.配置元件>1.前置处理器>2.定时器>3.sampler>4.后置处理器>5.断言>6.监听器

    jmeter是树形结构,执行顺序是从上往下的,然后按照各个元素的执行顺序进行每一步操作

    那么每个元素的作用域又是怎样的呢?官网直接给了个例子:

    在这个图中,有用例,定时器和断言

    每一条用例的执行顺序是按照从上到下执行的,(one,two,three,four,five代表了他们的执行顺序)

    看看Timer #1的作用域,发现Timer #1和two、three、four有同一个父节点,所以Timer #1可以控制这三条用例

    同理,Timer #2的父节点为线程组,所以它控制了全部的5条用例

    同理,Assertion #1只对Three进行断言

    结合元素的执行顺序和作用域后,得出完整的执行步骤

    Timer #2→one→Timer #2→Timer #1→two→Timer #2→Timer #1→three→Timer #2→Timer #1→four→Timer #2→five→Assertion #1

    7.回到我们最初的问题上来,现在不难理解了,为什么我把定时器放在线程组下面,我的每条用例都要受到定时器的控制了

    而在第一条用例下面加定时器,会先执行定时器,再执行我所有的用例,再执行定时器,再执行所有用例,问题解决。

  • 相关阅读:
    去掉百度地图左下角文字和图标。
    使用CMake,且在GCC编译时指定相对源代码路径选项BUG的问题
    一键杀死某些指定进程的脚本
    KMS使用CLion作为IDE来调试
    ubuntu 18.04下安装编译的KMS,依赖库
    ubuntu 18.04下编译最新版本的KMS
    configure.ac中AC_CHECK_LIB的问题
    C/C++下__FILE__参数过长的问题解决办法
    Linux 下 UltraEdit 版本 破解 30 天试用限制
    ubuntu下配置ProFtpd服务使用sqlite3作为后端用户认证
  • 原文地址:https://www.cnblogs.com/tekoyo/p/5996293.html
Copyright © 2011-2022 走看看