Test Plan
测试计划的作用
- 测试计划描述了JMeter在执行时,一系列的步骤
- 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】
测试计划添加/删除元素
- 通过右键点击树中的元素,选中要添加的元素
- 也可以通过合并(merge)或打开(open)从文件中加载和添加元件
配置树中的元素
- 树中的每一个控件都能通过右边内容区显示
- 树中的每一个控件都能在树中随意拖动
运行测试计划
- 可以通过ctrl+r运行测试计划
- 通过右侧的数字:活动线程数/线程总数,这仅适用于本地运行的测试;
- 使用客户端-服务器模式时,它们不包括在远程系统上启动的任何线程**【分布式压测时,master机不会显示所有远程salve机的线程总数】**
特别注意
仅在调试测试计划时,才应该使用上面的 GUI 模式**【界面模式】,如果实际运行负载测试的时候,应该使用CLI模式【命令行模式、无界面模式】**
暂停运行测试计划
两种暂停方式
- 停止线程(ctrl + .)【硬中断】
- 关闭线程(ctrl + ,)【软中断】
stop threads
- 许多采样器(Samplers)都是可中断的,这意味着可以提前终止活动采样
- stop命令将检查所有线程是否已在默认超时(即5000 ms = 5秒)内停止
如果有线程还没被停止,则会发送一条信息;此时可以再发送一次 stop 命令,但如果还是失败的话,就得退出 Jmeter 来清理
特别注意
上述说的默认超时可以通过Jmeter属性来改变 jmeterengine.threadstop.wait 【jmeter安装目录/bin/jmeter.properties】
shutdown threads
- 线程会在当前运行任务结束后停止,不会中断活动线程正在执行的任务
- 会出现一个【正在停止测试】的窗口(如下图),直到所有线程都运行完成了才会关闭
- 如果停止时间太久,也可以直接发stop命令
注意点
- 在Linux CLI模式下,是没有快捷键来停止线程运行的,所以Jmeter 在 CLI模式下会监听特定端口上的命令(默认端口4445,可以通过 jmeterengine.nongui.port 修改)
- 如果 4445 端口被占用了(比如,另一个Jmeter实例用了),Jmeter 会自动选择备用端口;
- Jmeter 将尝试监听下一个更高的端口,直到到达Jmeter属性 jmeterengine.nongui.maxport 为止,该属性默认为4455
在CLI模式下,如何停止线程执行
在bin目录下,运行脚本
- stoptest.cmd / stoptest.sh 【硬中断】
- shutdown.cmd / shutdown.sh 【软中断】
**注意,**只有在同一个 host 下运行的脚本,Jmeter 才会接受
测试计划参数
用户定义的变量
这里用户添加的变量,相当于全局变量,所有线程组都共用
一般添加一些系统常用的配置
一般不建议在测试计划上添加变量,因为不方便启用(disable)和禁用(enable)
可以添加用户自定义变量组件来代替,如下图
独立运行每个线程组(例如在一个组运行结束后启动下一个)
默认:不勾选,默认各线程组并行、随机执行
作用:勾选后,用于控制测试计划中的多个线程组的执行顺序,保证顺序执行各线程组
特别注意
- 线程组中的取样器执行顺序:默认是从上到下执行
- 交替控制器、随机控制器、随机顺序控制器、循环控制器可以改变取样器的执行顺序
函数测试模式
勾选后,如果监听器(如:查看结果树)配置了保存到一个文件中(如下图),那么jmeter会将每次的请求结果保存到文件中,在负载测试中不建议勾选,平时调试脚本情况下可以勾选
添加目录或jar包到classpath
当BeanShell脚本需要调用外部的java文件或jar包时,可以把jar包路径添加到这里,然后在BeanShell中直接import进来,并调用jar包中的方法