Python 测开27期 - 柒柒 - JMeter使用

录制压测脚本

  1. 添加脚本录制器 “HTTP(S) Test Script Recorder”
  2. 添加线程组 “Thread Group”
  3. Thread Group 中添加 “Recording Controller”
  4. 打开 HTTP(S) Test Script Recorder
    • 设定 Port = 8088
    • 设定 Target Controller = Test Plan > Tread Group > Recording Controller
  5. Requests Filtering 添加“include”与 “Exclude”URL 正则匹配表达式
    • 目的:避免录制过多没必要的请求
    • Include: .*\.(baidu\.com).*
    • Exclude:.*\.(js|css|PNG|jpg|ico|png|gif).*
  6. 打开Firefox,配置网络代理 localhost 端口号 8088
  7. 开始录制脚本
  8. 结束录制
  9. 添加 View Results Tree 进行回放验证

测试计划

  • 独立运行每个线程组
    • 不勾选:各个线程组并行、随机执行
    • 勾选:线程组按照前后顺序来执行
  • 主线程组运行完成之后运行tearDown线程组
  • 函数测试模式,比如保存响应数据或者样本数据,需要注意的是选择该功能非常磁盘空间
  • 添加文件或者jar包,常用于外部功能调用

线程组

第一部分:在请求取样器执行错误时需要执行的下一步动作

  • Continue:继续执行接下来的操作
  • Start Next Loop:忽略错误,执行下一个循环
  • Stop Thread:退出该线程(不再进行此线程的任何操作)
  • Stop Test:等待当前执行的采样器结束后,结束整个测试
  • Stop Test Now:直接停止整个测试

第二部分:线程属性

  • Number of Thread (users):线程数,模拟的用户数量
  • Ramp-up Period(in seconds):达到指定线程数所需要的时间。举例:线程数设置为50,此处设置为5,那么每秒启动的线程数 => 线程数50/5 = 10
  • Loop Count: 循环次数
  • Same user on each iteration:每次迭代都用相同的用户, 勾选该选项则不同次迭代之间是串行执行,不勾选则为并行执行。
  • Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了

控制器

常用的逻辑控制器

  • 事务控制器 Transaction Controller
    • Generate parent sample:只显示事务控制器,不显示其子项
    • Include duration:包含前置和后置的时间
  • 条件控制器 If Controller
  • 循环控制器 Loop Controller
  • 随机控制器 Random Controller

采样器 / 取样器

  • 模拟用户操作,向服务器发出请求的组件;
  • 采样器作用:向服务器发送请求,记录响应信息与响应时间;
  • 常用采样器:
    • HTTP Request Sampler
    • Debug Sampler
    • BeanShell Sampler

监听器

  • 用来动态的监控JMeter执行测试的过程,实时查看测试结果
  • 常用监听器:
    • 查看结果树
    • 聚合报告
    • 后端监听器

静默压测

默认

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

  • -n : nongui
  • -t : jmx格式文件
  • -l : jtl格式文件,输出的日志文件
  • -e : 测试结束后生成报告
  • -o : outputflolder html报告输出的地址,该目录必须不存在

传入参数

jmeter -n -t 脚本名.jmx -l 不存在的文件名.jtl -e -o 空的文件夹名 -J参数名1=参数值1 -J参数名2=参数值2

  • -J参数需在jmeter中的函数助手定义