性能测试-jmeter工具

683 阅读5分钟

注意:本篇对基本组件的介绍较少,更多是介绍jemter工具的进阶使用,若为初学者可以借鉴其他参考文档或官方网站:jmeter.apache.org/usermanual/…

1. Jmeter的常用组件、执行顺序、作用域

1.  测试计划  TestPlan

2.  线程组Thread Group

3.  配置元件Config ELement

4.  前置处理器 Preprocessor

5.  定时器Timer

6.  采样器Samper

7.  后置处理器Postprocessor

8.   断言组件Assertions

9.   监听器Listener

10. 逻辑控制器Logical Controller

11. 测试片段 TestFragment

12. 非测试组件Non-Test Element

组件间执行顺序:配置元件→前置处理器→定时器→采样器→后置处理器→断言→监听器

相同组件执行顺序:顺序执行,谁在最上,谁先执行

作用域:组件影响的范围为同级节点和子节点

2. Jmeter 参数化配置

1. 通过User Parameters组件

image.png

image.png 如上图:添加了两个参数,username和password;配置了三个用户;引用变量时,使用usernaem{usernaem}、{password}方式引用;注意此处用户数轮询取值的,什么意思呢,如果你有三个线程,依次为线程1取admin,线程2取tom,线程3取jack;如果你有4个线程,则线程4取admin(下一个轮回)

2. 通过CSV Data Set Config组件

通过读取CSV文件的方式与参数原理上一样的,引用的方式也是通过${变量名}引用定义的参数,简单的举例如下:

Demo.CSV文件内容

Username,password
Admin,123
Tom,123
Jack,123

读取文件的设置和定义变量如下:其中因我的csv文件的有表头和使用英文的逗号分隔;故配置如图

image.png

  1. 通过函数助手添加参数

image.png

选择红框的函数,点击绿框生成,复制蓝框的内容到需要引用的地方

3. 逻辑控制器-事务控制器

image.png

事务控制器可以将多个请求组合为一个事务,已事务为单位进行聚合报告的分析。

注意:如果事务的请求数据和其下面的http请求数据相加的和差距不大,此时的数据可以作为正确的数据使用,如果事务的总数与其下相加的总和差距较大,则测试的数据价值性很低;原因可能是:

  1. Jmeter的运行内容设置不够,需要修改配置文件调整内存

  2. 单机运行请求的线程太多,CPU和内存饱和了;需要使用分布式请求(联机负载)

  3. 本机的配置较低或有其他的程序在运行,资源不足;使用命令行运行

4. 后置处理器-正则提取器

image.png

正则表达式

详情www.runoob.com/regexp/rege…

QQ图片20211009204457.png

5. 后置处理器-json提取器

image.png

6. 集合点(真正的并发使用)

利用同步定时器实现

image.png

7.jmeter联机负载和命令行

联机负载:主控机(存放脚本)→负载机(运行脚本)操作步骤:A. 首先在各负载机启动jmeter-server.bat 或jmeter-server.shB. 修改主控机上的jmeter.properties文件主控机的配置

# 请找remote_hosts配置
remote_hosts=127.0.0.1,192.168.6.166:1099

负载机的配置

# 寻找server_port参数去掉注释
server_port=1099
# 寻找server.rmi.localport参数去掉注释,修改端口与上面一致
server.rmi.localport=1099
# 寻找server.rmi.ssi.disable=true去掉注释
server.rmi.ssi.disable=true

C. 在主控机启动jmeterD. 在控制机运行的时候选择远程启动或远程启动即可命令行运行

Jmeter  -h  查看所有的命令
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件-l 
日志文件 -> 记录结果的文件
-r 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
例如:jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080
运行命令格式:
jmeter -n -t [jmx脚本路径] -l [测试输出文件路径]
参数解释:
-n: 表示 non gui mode,就是非图形化模式
-t: 表示jmeter脚本的路
-l:表示输出结果路径,如果没有该文件就自动创建,可以生成csv或者jtl文

8.Beanshell

是一个小型的嵌入式java源代码解释器,具有对象脚本语言的特性,能够动态的执行标准的java语法。

  1. Jmeter的beanshell

l  定时器 beanshell

l  前置处理器 beanshell

l  采样器beanshell

l  后置处理器 beanshell

l  断言 beanshell

l  监听器 beanshell

2 jmeter的beanshell的常用内置变量

log→写入信息到jmeter.log文件 log.info(“这是日志”)

ctx→引用当前线程的上下文

vars.get(string key)→从jmeter获取变量

vars.put(string key, string key)→把数据写入变量中

Props.get(string key)→从jmeter.properties中读取

Props.put(string key, string key)→定义属性

Prev.getResponseDataString()→获取响应信息

Prev.getResponseCode()→获取响应代码

最后:  可以通过在 点击蓝色字体后面 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!