性能测试 - JMeter断言

before

win 10 + jmeter 5.2.1

本篇来学习在JMeter中常用断言:

  • 响应断言
  • 大小断言
  • json断言
  • beanshell断言

来看看都是怎么用的。

响应断言

http://www.neeo.cc:6001/get?stock=10   # get

来,新建一个线程组,添加两个"HTTP请求"取样器,配置如下,其实两个配置一样的........

来看如何添加响应断言:

重要的参数说明:

  • Apply to,保持默认吧
  • Field to Test,断言的内容来自于:
    • Test Response响应体
    • Response Code响应状态码
    • Response Message响应信息
    • Response Headers响应头
    • Request Headers请求头
    • Request Data请求体
    • URL Sampled请求的URL
  • Patterns Matching Rules,断言(匹配)规则:
    • Container:响应文本中是否包含某个字段值,支持正则
    • Matches:响应文本是否完全匹配预期值,支持正则
    • Equals:响应文本是否完全匹配预期值,不支持正则
    • Substring:响应文本中是否包含某个字段值,不支持正则
  • Patterns to Test,编写你的断言
  • Custom failure message,自定义的断言失败信息

你可以根据具体的场景来写的断言。

这里我们为第一个请求添加断言,配置如下:

上面两个断言结果,一个成功,一个失败。

再来看第二个请求的断言配置:

最终的"察看结果树"的执行结果:

大小断言

http://www.neeo.cc:6001/get?stock=10   # get

来看"HTTP请求"配置和执行结果:

我们从"察看结果树"中得到2个数据,接下来使用大小断言来进行判断:

来看两个"大小断言"的配置:

"大小断言"的各个参数读起来一点不难,我也不用再说了,大家一看就懂;断言结果肯定都通过,我也不贴图了!

json断言

如果响应体是json类型的话,断言使用"json断言"比"响应断言"更方便。

http://www.neeo.cc:6001/get?stock=10   # get

# 响应结果
{
  "args": {
    "stock": "10"
  }, 
  "headers": {
    "Connection": "keep-alive", 
    "Host": "www.neeo.cc:6001", 
    "User-Agent": "Apache-HttpClient/4.5.10 (Java/1.8.0_201)"
  }, 
  "origin": "222.35.243.75", 
  "url": "http://www.neeo.cc:6001/get?stock=10"
}

"json断言"内部对json路径及值的判断,可以参考json-path/JsonPath,一路点下去就行了,这里不存在同级路径下key重复的问题。

在线程组内添加"HTTP请求",配置和结果如下:

再来看如何添加"json断言":

看看怎么配置:

json断言相当的简单,就是判单之指定的路径下是否存在指定的key,顶多给同时判断key对应的value是否等于某个值。

beanshell断言

在beanshell中有个内置变量Failure boolean(false表示断言成功,true表示断言失败)变量,用来控制断言,断言失败使用FailureMessage显示失败日志。

来个需求,如下接口:

/pinter/com/getSku   # get请求  参数:id=1

# 返回
{"code":"0","message":"success","data":{"skuId":523,"skuName":"ptest-523","price":"912","stock":649,"brand":"testfan"}}

判断,如果返回的stock值大于等于500断言成功,否则失败。

新建一个线程组,并设置1个线程循环3次,添加一个HTTP取样器,然后配置后置json提取器,提取stock值:

现在,是时候来个beanshell断言了啊:

上代码:

prev.setDataEncoding("utf-8");  // 如果响应乱码,就添加这一行
// 获取json提取器中提取的stock值
String mystock = vars.get("stock");
// 转下类型
int intstock = Integer.parseInt(mystock);
// beanshell断言
if (intstock >= 500){
	Failure = false;  // 断言成功
}else{
	Failure = true;  // 断言失败
    // 自定义断言信息
	FailureMessage = "断言失败,stock值是: "+mystock;
};

配置和结果如下:

beanshell断言就这么简单!


欢迎斧正,that's all
posted @ 2018-10-08 10:56  听雨危楼  阅读(435)  评论(0编辑  收藏  举报