#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)


性能测试_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 摘要函数返回特定哈希算法中的加密值
函数助手官方说明
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER 函数助手 random ${__Random(1,50,randNum,randNum)}
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER 函数助手 RandomString ${__RandomString(3,abc123,randStr)}
Chars to use for random string generation
  • 需要随机的字符串 如:abc123,这个几个字符串随机 ,生成符合长度的数据
Random string length
  • 随机生成的长度
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER Debug Sampler
英文 中文 路径
Debug Sampler 调试样本 右键一个线程组Thread Group-Add-Sampler-Debug Sampler
如果每次都想查看一下随机数,可以添加一个debug 样本查看具体的数值
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER JSON 断言 返回值是json格式的可以使用json断言,需要用到json path的语法格式
json path
匹配其中一个key #|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

返回的key不对就提示报错
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

匹配正则表达式的值 Value expected to match regexp
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

匹配一个key且匹配value Value expected to be ‘[0-9]’, but found ‘0’
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

匹配一个空值和非空值 #|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

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上下文
BeanShell断言常用方法
方法 说明
ResponseCode 从样本响应中获取code
ResponseHeaders 从样本响应中获取响应头
ResponseMessage 从样本响应中获取响应消息
ResponseDataAsString 从样本响应中获取响应数据
来分别获得String格式的响应状态码、响应头、响应体数据,结合if判断通过变量Failure=false或Failure=true来设置断言是否通过,当设置Failure=true时,还可以设置FailureMessage来设置失败原因。
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 = "断言成功"; }

#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER 变量
英文 中文 路径
User Defined Variables 用户自定义变量 右键一个测试计划TestPlan
User Defined Variables 用户自定义变量 右键一个线程组Thread Group-Add-Config Element-User Defined Variables
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

固定写法:${变量名}
后面只要ip,端口有改变,只需要修改变量的值就可以了
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

JMETER CSV参数化
英文 中文 路径
CSV Data Set Config CSV参数化设置 右键一个HTTP请求-Add-Config Element-CSV Data Set Config
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

CSV 参数的变量名设置
#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

CSV 参数的迭代次数,这是线程的循环次数
【#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)】#|性能测试_Day_05(jmeter函数助手、json断言、beanshell、参数化)
文章图片

    推荐阅读