文章目录
三大组件
- Vuser:编写脚本(基于C语言编写,LR提供了一系列API使用)
- Controller:执行测试
- Analysis:结果分析器(run-time settings里的功能)
Vuser
一、脚本组成
vuser_init:脚本初始化,只在开始执行一次
action:方法
vuser_end:结束资源,只在结束循环后执行一次
执行顺序:vuser_init-action1-action2-action1-action2-vuser_end
二、Vuser环境的设置
Run-Time Setting(运行Controller时,里面的设置不会生效)
Run Logic:设置迭代次数,只针对Run里面的方法有效
Pacing:设置迭代的间隔时间
Log:设置请求和响应的报告,选择下面三个才能看到传递参数的请求值和响应值
思考时间:调试用的,Controller设置是为了模拟用户真实环境用的。不管在Vuser如何设置,场景执行都以Controller设置为准。
可以通过插入操作或删除操作来设置启动或禁止哪一个Action
三、创建请求
web_custom_request方法可以发送POST和GET类型的请求
web_submit_data只能发送POST类型的请求
所有web_submit_data方法发送的请求都可以使用web_custom_request来实现
form-data一般用submit,json一般用custom
注意参数存在双引号一定要用转义符 \ 处理
- Get方法:web_custom_request(自定义请求)
- Post form-data方法:web_submit_data(提交数据)
- Post Json方法:web_custom_request(自定义请求)
四、检查点(断言)web_reg_fine
- 检查点必须要写在检查的方法前,只会针对最近的方法进行检查。
- 每一个请求都需要设置一个检查点。
- 可以从返回的日志最尾部查看断言是否通过。
五、关联web_reg_save_param
- 关联函数的位置必须放在它要搜索的web页面请求之前,并且要紧贴着web_url()。比如获取登录Token,则关联放在登录请求前。
1、设置变量名、左边界、右边界
2、引用变量方法:{变量名}
六、参数化Replace with a Parameter
1、参数文件最后一行需要一行空行。
2、参数化的两种方法:
把每个变量都单独写入一个dat文件来引用,此时每个参数单独对应一个File名;
把变量全都写在同一个文件中,再引用,参数用逗号“,”隔开,此时每个参数对应同一个File。
参数化方法一:把每个变量都单独写入一个dat文件来引用,此时每个参数单独对应一个File名;此方法操作时更直观,但不利于维护数据。
1、在第一个参数右键选择Replace with a Parameter
2、修改参数名并点击属性
3、创建一个放单个变量参数的文件
4、点击编辑,纵向列出用户名参数
5、在第二个参数上进行上述1-4的操作,设置第二个变量的dat文件
参数化方法二:把变量全都写在同一个文件中,再引用,参数用逗号“,”隔开,此时每个参数对应同一个File。此方法利于维护数据
1、在项目文件夹里创建一个变量和参数关系的dat文件
2、在第一个参数右键选择Replace with a Parameter
3、输入参数名点击属性
4、文件路径选择编辑好的dat文件,按名称选择变量名列
5、关闭上述参数设置框后,点击确定,此时已经设置好该参数
6、在第二个参数上重复2-5操作
PS.调试运行时,需要把Run-Time Setting的迭代次数进行设置,否则只会运行第一个参数
- 设置数据取值方法和更新方法
(1)Select next row(选择下一行方法):
Sequential默认顺序,每个用户都按照参数化的数据顺序,从上往下一个个取数
Random随机取数,参数化中的数据每次随机从中抽取
Unique唯一,唯一的向下取值,只能被使用一次,每个用户取的值之间没有重复,如注册
Same line as xxx 和xxx列取同一行的值,(行相同)步调一致
(2)Update value on(更新方式):
Each iteration 每次迭代时取值 (常用)
Each occurrence 每次遇到该参数时取值
Once 取值仅一次,脚本运行过程中只取值一次值的是:一次选择,终身不变
(3)When out of values(选择Unique才需要选择,数据不足时取值越界的处理):
Abort Vuser 放弃虚拟用户,不再取值
Continue in a cyclic manner 以循环的方式继续,当参数化文件中的值取完最后一个值后,又从参数化文件的第一行开始取值
Continue with last value 当参数化文件中的值取完最后一个值后,持续一直最后一个值
七、集合点Rendezvous
1、在脚本中设置集合点(集合点设置在请求前,只对最近的请求有效)
2、Controller设置集合点执行策略(请跳转Controller部分的第3点)
八、事务Star/end Transaction;ctrl+T/D快捷键
默认把一个请求作为一个事务。也可以把几个请求设置为一个事务。
需要在请求前后添加开始和结束事务,如果几个请求为一个事务时,就在第一个请求开头和最后一个请求结尾添加事务。
同一个事务,开始事务和结束事务的名字要一直。
根据检查点(断言)状态来判断,一错就错,全对才对。
1、在请求前添加开始事务,同样的在事务的最后一个请求后添加结束事务
Controller
1、创建场景方法
方法一:Run Load Tests;
方法二:在脚本中Tools-Create controller Scenario
手动场景Vuser数:虚拟用户数,不是并发用户数,只有设置集合点才会发生并发,用方法1)时其默认设置为10。
Load Generator(压力生成器),IP地址是指压力机,可以操作其他机子。
Group Name(场景组):脚本。
2、Run-Time Settings
3、集合点设置Scenario——Rendezvous
设置集合点执行策略Policy:每个集合都可以单独设置
Vuser表示虚拟用户数
4、启动和停止策略(根据真实场景设置)和设置虚拟用户数Vuser
5、脚本运行
LR靠持续时间来运行,和循环次数无关
Analysis
在Controller界面打开方式:1、Results——Analysis Results;2、快捷图标
- 数据分析
1、Sunmary Report概要报告
Statistics Summary统计概要
total throughput(bytes) 总吞吐量,即总共花费的上传+下载的网络带宽
(注意Jmeter的聚合报告吞吐量指Tps,服务器处理能力的指标)
total hits 总点击数,总共发出去的请求,一般和TPS、Througput成正相关
average hits per second 每秒点击数/请求数,等于总点击数/总运行时间
Transaction summary事务摘要
90 Percent即90%Line
2、Graphs图表
- Running Vusers:用户的运行情况
- Hits per Second:每秒点击数
- Thoughput:网络吞吐量
- Transaction Summary:事务的柱状图
- Average Transaction Response Time:平均响应时间
- Rendezvous集合点
- Transaction Per Second即TPS
添加图表的方法:
合并图表——多表分析(Ctrl+M)
3、把图表形成Html的报告
Reports——Html Report