性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
- JMETER 函数助手 digest
- JMETER 函数助手 random
- JMETER 函数助手 RandomString
- JMETER Debug Sampler
- JMETER JSON 断言
-
- 匹配其中一个key
- 匹配正则表达式的值
- 匹配一个key且匹配value
- 匹配一个空值和非空值
- Invert assertion (will fail above conditions met)反转断言(将在满足以上条件时失败)
- BeanShell 断言
- BeanShell断言常用方法
- BeansShell 脚本编写
- JMETER 变量
- JMETER CSV参数化
JMETER 函数助手 digest digest 摘要函数返回特定哈希算法中的加密值
函数助手官方说明
文章图片
JMETER 函数助手 random ${__Random(1,50,randNum,randNum)}
文章图片
JMETER 函数助手 RandomString ${__RandomString(3,abc123,randStr)}
Chars to use for random string generation
- 需要随机的字符串 如:abc123,这个几个字符串随机 ,生成符合长度的数据
Random string length
- 随机生成的长度
文章图片
JMETER Debug Sampler
英文 | 中文 | 路径 |
---|---|---|
Debug Sampler | 调试样本 | 右键一个线程组Thread Group-Add-Sampler-Debug Sampler |
文章图片
JMETER JSON 断言 返回值是json格式的可以使用json断言,需要用到json path的语法格式
json path
匹配其中一个key
文章图片
返回的key不对就提示报错
文章图片
匹配正则表达式的值 Value expected to match regexp
文章图片
匹配一个key且匹配value Value expected to be ‘[0-9]’, but found ‘0’
文章图片
匹配一个空值和非空值
文章图片
Invert assertion (will fail above conditions met)反转断言(将在满足以上条件时失败) 意思就是取反
BeanShell 断言
BeanShell是使用Java语法的一套脚本语言,在JMeter的多种组件中都有BeanShell的身影,如:
- 定时器:BeanShell Timer
- 前置处理器:BeanShell PreProcessor
- 采样器:BeanShell Sampler
- 后置处理器:BeanShell PostProcessor
- 断言:BeanShell Assert
- 监听器:BeanShell Listener
通过BeanShell可以对请求数据、响应数据或环境变量进行更加灵活的处理和判断。Beanshell有一些默认的内置变量和方法,用户可以通过这些变量与JMeter进行交互,比如:
- prInt:非GUI模式下打印信息(输出信息到stdout)
- log:输出信息到日志(文件)
- log.debu(“调试信息”)
- log.info(“响应状态码” + ResponseCode)
- log.warn(“警告信息”)
- log.error(“出错信息”)
- ResponseCode:响应状态码(String类型)
- ResponseHeaders:响应头(String类型)
- prev:获取当前请求结果
- prew.getResponseDataAsString():获取响应体数据(String类型)
- prew.getResponseCode():获取状态码(同ResponseCode,String类型)
- vars: 操作jmeter变量
- String var1 = vars.get(“变量名”):获取变量的值(假设为String类型)
- vars.put(“变量名”, 变量值):设置变量值
- props: 操作JMeter属性
- props.get(String,String) 可以获取Jmeter中已经生成的属性
- props.put(String,String) 可以创建和更新Jmeter属性
- ctx:获取当前线程上下文数据(可获取所有信息)
- ctx.getVariables(“变量名”):获取变量值(同vars.get())
- ctx.setVariables(“变量名”, “变量值”):设置变量(同vars.put())
- ctx.getProperties(“属性名”):获取属性值(同props.get())
- ctx.setProperties(“属性名”,“属性值”):设置属性(同props.put())
- ctx.getPreviousResult():获取当前请求结果同(prev)
- ctx.getCurrentSampler():获取当前采样器
- ctx.getPreviousSampler():获取前一采样器
- ctx.getThreadNum():获取线程数
- ctx.getThreadGroup():获取线程组
- ctx. getThread():获取当前线程
- ctx.getEngine():获取引擎
- ctx.isSamplingStarted():判断采样器是否启动
- ctx.isRecording():判断是否开启录制
- ctx.getSamplerContext():获取采样器山下文数据
- ctx详细API可参考:JMeter上下文
方法 | 说明 |
---|---|
ResponseCode | 从样本响应中获取code |
ResponseHeaders | 从样本响应中获取响应头 |
ResponseMessage | 从样本响应中获取响应消息 |
ResponseDataAsString | 从样本响应中获取响应数据 |
BeansShell 脚本编写 beanshell官方教程
参考资料
log.info("打印一个beanshell日志");
String res_header = ResponseHeaders;
log.info("我自己打印的"+res_header);
boolean res = res_header.contains("UTF-9");
if(res==false){
Failure = true;
FailureMessage = "断言失败";
}else{
Failure = false;
FailureMessage = "断言成功";
}
文章图片
JMETER 变量
英文 | 中文 | 路径 |
---|---|---|
User Defined Variables | 用户自定义变量 | 右键一个测试计划TestPlan |
User Defined Variables | 用户自定义变量 | 右键一个线程组Thread Group-Add-Config Element-User Defined Variables |
文章图片
固定写法:${变量名}
后面只要ip,端口有改变,只需要修改变量的值就可以了
文章图片
JMETER CSV参数化
英文 | 中文 | 路径 |
---|---|---|
CSV Data Set Config | CSV参数化设置 | 右键一个HTTP请求-Add-Config Element-CSV Data Set Config |
文章图片
CSV 参数的变量名设置
文章图片
CSV 参数的迭代次数,这是线程的循环次数
【#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)】
文章图片
推荐阅读
- 测试|jmeter系列(关联数据库)
- 软件测试|腾讯拿20K出来的连“关键指标含义都答不上来,你跟我说你懂性能测试”
- python自动化测试|python自动化之数据驱动 - data driven(参数化)
- python|分享5个你不知道的软件测试小神器(赶紧收藏起来)
- java|SpringBoot从入门到入门学习笔记
- spring|SpringBoot 集成minio MinioClient无法依赖问题-已解决
- 软件测试|使用allure展示jmeter测试报告
- 性能测试|主流性能测试工具
- MyBatis|Spring Boot(十)(Druid的监控统计和多数据源配置)