jmeter性能测试进阶使用纪要

目录

目录

随机变量:实现注册手机号不重复分配

正则表达式:token等变量提取

HTTP header manager:token传参Authorization使用

后置BeanShell PostProcessor设置prev.setDataEncoding(“utf-8”):响应中文乱码处理

同步定时器控制等待实现同时并发

调式取样器(Debug Sampler):在查看结果树中返回参数化和正则本轮取值

断言判断业务请求是否成功



随机变量:实现注册手机号不重复分配

jmeter性能测试进阶使用纪要_第1张图片

jmeter性能测试进阶使用纪要_第2张图片

jmeter性能测试进阶使用纪要_第3张图片

正则表达式:token等变量提取

jmeter性能测试进阶使用纪要_第4张图片

1、引用名称(Name of created variable):

Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名,后文中引用方法是$

2、正则表达式(Regular Expression):

使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。

3、模板(Template):正则表达式的提取模式。

如果正则表达式有多个提取结果,则结果是数组形式,模板$1$,$2$等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推。

若只有一个结果,则只能是$1$;

4、匹配数字(Match No):

正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值。

5、缺省值:

匹配失败时候的默认值;通常用于后续的逻辑判断,一般通常为特定含义的英文大写组合,比如:ERROR等。

下面重点分析一下正则表达式的匹配规则及注意事项:

1、下面是常用的正则表达式操作符

jmeter性能测试进阶使用纪要_第5张图片

jmeter性能测试进阶使用纪要_第6张图片

2、贪婪和非贪婪

提到正则表达式,必须要说一下匹配的两种模式:贪婪和非贪婪。

贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。

1)下面举个例子,假设有如下响应结果(只截取了其中一部分):

"code":"0","msg":"请求成功","bizSeqNo":"1804242UD01154300109392900987311" ,"result":{"bizSeqNo":"1804242UD01154300109423800987316","transactionTime":"20180424094239"

2)现在从中提取bizSeqNo的值:

"bizSeqNo":"(.*)":贪婪模式,提取结果是:1804242UD01154300109392900987311" ,"result":{"bizSeqNo":"1804242UD01154300109423800987316","transactionTime":"20180424094239

"bizSeqNo":"(.*?)":非贪婪模式,提取结果是:1804242UD01154300109392900987311

3、进阶匹配问题

1)如何获取数组结果?

如果有多个匹配的结果,则获取到的是个数组,此时若要提取其中的内容,调用方式为${ bizSeqNo _1},$...,如果想要得到匹配出的结果的个数,用$,如果想随机选取一个,只需要将匹配数字设为0,使用$调用即可。

2)如何获取唯一的匹配结果?

如果想要避免上面获取多种结果的情况,则需要注意把正则表达式写成非贪婪模式,或者增加正则表达式的前后边界,使结果唯一匹配既可。

HTTP header manager:token传参Authorization使用

修改HTTP请求的Header Manager

名称:Authorization
取值方式:Bearer ${token}

jmeter性能测试进阶使用纪要_第7张图片

后置BeanShell PostProcessor设置prev.setDataEncoding(“utf-8”):响应中文乱码处理

jmeter性能测试进阶使用纪要_第8张图片

 jmeter性能测试进阶使用纪要_第9张图片

同步定时器控制等待实现同时并发

右键--》线程组--》定时器--》Synchronizing Timer,这里我们设置为5

jmeter性能测试进阶使用纪要_第10张图片

解释:

Number of simulated users to group by:表示集合点,就是达到这个数量后,同时发,就比如说要测一个桥的并发量,比如达到10辆车的时候,开启阈值,把开关打开,让车经过

Timeout in milliseconds:超时时间,就是等待这些车到达的时间,等他们集合的时间,如果设置0,就是没有超时时间,到了就走,如果设置了,比如10s,那么10s还没到齐,就不等了,就走。

调式取样器(Debug Sampler):在查看结果树中返回参数化和正则本轮取值

 在调式JMeter脚本时通常有如下需求:——通过Debug Sampler+查看结果树实现
1、想知道参数化的变量取值是否正确;
2、想知道正则表达式提取的值是否正确;
3、想知道JMeter属性;
4、调试时服务器返回些什么内容。

jmeter性能测试进阶使用纪要_第11张图片

 jmeter性能测试进阶使用纪要_第12张图片

断言判断业务请求是否成功

默认情况下,Jmeter会根据接口的响应状态码是否为200来判断接口是否成功,但是很多时候,200只能代表HTTP请求成功了,但是业务上未必成功。因此还需要对接口的返回数据做判断。因此可以使用 Jmeter断言来对返回数据做判断。

 断言通常是针对某个HTTP请求的,判断HTTP的返回值是否符合断言的规则,比如是否包含“success” 等,如果断言通过,Jmeter就认为HTTP请求成功,否则就标记为失败,在查看结果树中标记为红色。

 常用的断言有Json断言和响应断言

 Json断言

针对接口返回是json格式数据的,可以使用json断言,它可以判断json字符串中的某个值是否符合预期。

比如,登录接口成功后,服务器会返回此用户的username和nickname

     "access_token": 

"eyJhbGciOiJIUzUxMiJ9.eyJzZWxmT3BlcmF0ZWQiOjAsInN1YiI6IkNMRVJLIiwicm9sZSI6IlNVUE VSX1NFTExFUiIsImZvdW5kZXIiOm51bGwsInJvbGVzIjpbIkJVWUVSIiwiU0VMTEVSIiwiQ0xFUksiXS wic2VsbGVyTmFtZSI6IjExMSIsImNsZXJrSWQiOjE2LCJ1dWlkIjpudWxsLCJ1aWQiOjE5NjUsInNlbG xlcklkIjo0MSwiY2xlcmtOYW1lIjoibXR4LTAwMSIsImV4cCI6MTYyOTg3MDU5OCwidXNlcm5hbWUiOi JtdHgtMDAxIn0.BEnmRfCU2nfkqMwQVajaxMP5uoUtcyoAsTHMkaK_9RoHwaxS0GNUDY- 9I048wx8LX7pmyMqWl70Q4B31dlVTHw", 

     "uid": 1965, 

     "refresh_token": 

"eyJhbGciOiJIUzUxMiJ9.eyJzZWxmT3BlcmF0ZWQiOjAsInN1YiI6IkNMRVJLIiwicm9sZSI6IlNVUE VSX1NFTExFUiIsImZvdW5kZXIiOm51bGwsInJvbGVzIjpbIkJVWUVSIiwiU0VMTEVSIiwiQ0xFUksiXS wic2VsbGVyTmFtZSI6IjExMSIsImNsZXJrSWQiOjE2LCJ1dWlkIjpudWxsLCJ1aWQiOjE5NjUsInNlbG xlcklkIjo0MSwiY2xlcmtOYW1lIjoibXR4LTAwMSIsImV4cCI6MTYyOTg3MTE5OCwidXNlcm5hbWUiOi JtdHgtMDAxIn0.54MSaFcXIuGexBeXY-79oO5_8tAHvmEvtbJ0qKUE9A5VpqKmbECahX4zcb_2XQEox- H0aIZX49P9ncRrH22Jgg", 

     "face": null, 

     "role_id": 0, 

     "founder": 1, 

     "nickname": "mtx-001", 

     "username": "mtx-001" 

}

添加json断言,判断服务器返回的username是否符合预期。

在HTTP请求上,右键添加json断言

jmeter性能测试进阶使用纪要_第13张图片

 解释:

Assert JSON Path exists:填写Json路径表达式,其中$代表整个json,$.username就是 username对应的值

Additionally assert value:是否对Json路径表达式对应的值进行判断

Expected Value:期望值的内容,填写你的期望值

Json Path的更多详细用法参见:https://github.com/json-path/JsonPath

响应断言

响应断言的应用范围更广一些,只要返回的响应内容是文本内容,无论什么格式,HTML、Json等,响 应断言都可以判断 在HTTP请求上右键,添加响应断言

jmeter性能测试进阶使用纪要_第14张图片

 解释:

测试字段:对哪部分数据进行判断,默认是响应内容

模式匹配规则:判断规则,默认是包含字符串

测试模式:具体判断的内容

你可能感兴趣的:(jmeter)