备注:未经博主允许禁止转载
个人笔记(整理不易,有帮助,收藏+点赞+评论,爱你们!!!你的支持是我写作的动力)
笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客
目录
一:简单了解
Apache JMeter是基于java的压力测试工具。
JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
二:下载与安装
1:首先要安装jdk
2:jmeter下载地址:Apache JMeter - Download Apache JMeter
(Windows版本下载.zip,Linux版本下载.tgz)
解压后是这样的
backups:脚本备份目录,格式JMX
bin:存放可执行文件、配置文件、模板文件
1)jmeter.bat:windows的启动文件
2)jmeter.log:日志文件
3)jmeter.sh:linux的启动文件
4)jmeter.properties:系统配置文件,源、编码格式、端口等
5)jmeter-server.bat:windows分布式测试要用到的服务器配置,多台测试机运行
6)jmeter-server:linux分布式测试要用到的服务器配置
docs:api文档,可打开index.html 页面查看
extras:存放与第三方的集成构建文件。集成Ant,Jenkins
lib:存放Jmeter依赖的jar包和用户扩展所依赖的jar包;\lib\ext是存放第三方库的
1)JMeter 组件以 Jar 包的形式放罩在 lib/ext 目录下,如果我们要扩展 JMeter 组件,扩展后的 Jar 包即放在此目录下,JMeter 启动时会加载此自录下的 Jar 包
2)JMeter 依赖的一些基础包放在 lib 根目录下,比如我们扩展了 Java 请求,这个扩展是为了完成我们特定的任务,而这个特定的任务程序需要依赖其他的 Jar 包,那么这些 Jar 包就放置在 lib 根目录下
3)JMeter 支持运行 Junit 测试类,其测试包放在 lib/junit 目录下面
licensce:许可证文件
printable_docs:
1)demos:常用的Jmeter脚本案例
2)usermanual:用户使用手册;component_reference.html是最常用的核心元件帮助文档
NOTICE:版权声明
README.md:JMeter 简明介绍
未配置jmeter环境变量时,启动jmeter方法
双击运行出现这个Warning
原因:JMeter未注册表项。解决方法:以管理员身份运行程序的时候会自动创建注册表相关项(下一次就不用了)
启动Jmeter时候,提示信息如下:
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
中文翻译如下:
================================================================================
不要使用GUI模式进行负载测试!此模式仅适用于测试创建和测试调试。
对于负载测试,请使用CLI模式(NON GUI模式):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
并且增加Java堆以满足您的测试要求:
在jmeter.bat/jmeter.sh文件修改当前的env变量HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
具体请查看官方文档:https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
如果想汉化:
Jmeter 长期汉化(修改后,重启默认为中文简体版)
修改bin下的配置文件 jmeter.properties,加上language = zh_CN
三:工具了解
使用Jmeter前,先了解常用的组件
1.测试计划:起点。所有组件的容器
2.线程组:代表一定数量的用户,实际的请求内容在Sampler中定义
3.取样器:模拟各种请求
4.逻辑控制器:结合取样器实现一些复杂的逻辑
5.前置处理器:在请求之前的工作
6.后置处理器:在请求之后的工作
7.断言:用于判断请求是否成功
8.定时器:负责在请求之间的延迟间隔
9.配置元件:配置信息
10.监听器:负责收集结果
顺序:
测试计划>线程组>配置元件(Config Elements)>前置处理器(Pro-processors)>定时器(Times)>取样器(请求Sampler)>后置处理器(Post-processors)>断言(Assertions)>监听器(Listeners)
其中作用域的概念:
1、配置元件:影响其作用范围内的所有元件
2、前置处理器:在其作用范围内的每一个 sampler元件之前执行
3、定时器:对其作用范围内的每一个 sampler有效
4、取样器:不和其它元件相互作用,不存在作用域的问题
5、后置处理器:在其作用范围内的每一个 sampler元件之后执行
6、断言:对其作用范围内的每一个 sampler元件执行后的结果执行校验
7、监听器:收集其作用范围的每一个 sampler元件的信息并呈现
8、逻辑控制器:只对其子节点中的取样器和逻辑控制器作用
例子:
查看结果树(监听器)是请求1的子节点,所以只作用与于请求1
循环控制器(逻辑控制器)作用于请求2
聚合报告(监听器)作用于请求1、2、3、4
固定定时器作用于请求1、3、4;请求2由于受到循环控制器的控制,所以不受影响
循环控制器作用于请求2和随机控制器(逻辑控制器)
随机控制器(逻辑控制器)作用于请求5
响应断言作用于请求3
固定定时器作用于请求4
查看结果树(监听器)请求1、3、4
结果树1作用于同级的请求1、2
结果树2作用于同级的请求3、4
结果树3作用于同级组件的子组件
测试计划、线程组不属于元件
取样器是不与其他元件发生交互作用的元件(因此不存在作用域问题)
逻辑控制器只对其子节点的取样器和逻辑控制器有效
除取样器和逻辑控制器元件外,其它6类元件,如果是某个取样器的子节点,则该元件对其父节点起作用
除取样器和逻辑控制器元件外,其它6类元件,如果父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点
(这里我有个疑问:第一个例子,监听器不作用于请求2,和第四点,如果父节点不是取样器,则作用父节点下的后代节点,不就作用请求2了吗??)
前置处理器、后置处理器、断言只对取样器作用,如果他们作用域没有取样器,则不执行
如果同一个作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行