行业资讯
Pm插件的使用技巧和验证测试
2019-06-11

 昨天我们介绍jmeter软件接口测试的相关知识和技巧,今天我们来说说PM的使用技巧和结果验证,话不多说开课了!

 

▲▲▲

又可以学新知识了

 


 

Postman

 

   

 

 

官方文档给出了很多验证方式,我们通过实例来进行学习

 

接口返回结果为json

[html] view plain copy

1. {  

2.   "status": 301,  

3.   "message": "购买商品库存不足",  

4.   "lists": [11]  

5. }  

 

 

1.检查responsebody中是否包含字符串

tests["测试点"] = responseBody.has("需要查找的字符串");

例:

tests["status code"] = responseBody.has("301");

tests["status是否存在"] = responseBody.has("status");

tests["lists是否存在"] = responseBody.has("lists");

tests["lists值为11"] = responseBody.has("11");

注:当jsonvalueinteger时,需要查找的值可以不带双引号,

tests["xxx"]xxx代表的是你测试点的名字,可以是中文

tests["xxx"]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复

value等于中文字符串时,这个方法貌似就不怎么好用了,但是我们有别的方法去验证,往下看,如果有读者知道怎么解决这个问题,也可以联系我,教教我

 

2.检查Response Body是否等于字符串

tests["测试点"] = responseBody === "Response Body返回的内容";

这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性,

例子:

接口返回:哈哈

tests["返回为哈哈"] = responseBody === "哈哈";

tests["返回为哈哈"] = responseBody === "";

第二个会返回False,必须完全匹配

 

3.检查相应时间

tests["Response time 小于200毫秒"] = responseTime > 200;

tests["Response time 大于200毫秒"] = responseTime < 200;

 

4.检查状态码

这个也好理解,就是http请求状态码

tests["Status code is 200"] = responseCode.code === 200;

注:

这里的状态码,跟上面我们用的json里边的"status"不是一回事。

 

5.Code name contains a string

tests["Status code name has string"] = responseCode.name.has("Created");

tests["502"] = responseCode.name.has("Server");

tests["502"] = responseCode.name.has("Unreachable Server");

这个我的理解是,检查HTTP code 对应的string,如下面给出的list

如下对应表,如果使用fiddler模拟相应的返回,注意fiddler返回的大小写有问题,用下表的string

消息(1字头)

▪ 100 Continue

成功(2字头)

▪ 200 OK

重定向(3字头)

▪ 300 Multiple Choices

▪ 301 Moved Permanently

▪ 302 Move temporarily

。。。。。

▪ 500 Internal Server Error

▪ 501 Not Implemented

▪ 502 Bad Gateway

▪ 503 Service Unavailable

▪ 600 Unparseable Response Headers(省略了一些)

 

6.设置环境变量/全局变量

postman.setEnvironmentVariable("key", "value");

postman.setGlobalVariable("key", "value");

 

7.XMLbody转换成JSON对象:

var jsonObject = xml2Json(responseBody);

 

8.检查json的值

var jsonData = JSON.parse(responseBody);tests["Your test name"] = jsonData.value === 100;

还拿上面的json数据做测试

tests["状态码为301"] = jsonData["status"] == "301";

tests["message"] = jsonData["message"] == "购买商品库存不足";

tests["list"] = jsonData["lists"][0] == "11";

 

9.检查有信息

tests["Content-Type is present"] = postman.getResponseHeader("content-Type");//不区分大小写

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");//区分大小写

 

10.POST request状态码

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

201 - Created 服务器已经创建了文档,Location头给出了它的URL

202 - Accepted 已经接受请求,但处理尚未完成。

 

 

▲▲▲

好好记录下来

 

官方文档中还给出了对于json的验证例子

这种基于JSON格式定义JSON数据结构的规范,我们叫他JSON Schema

 

 

 

 

还拿第一个json做例子

[html] view plain copy

1. {  

2.     "$schema": "http://json-schema.org/draft-04/schema#",  

3.     "id": "",  

4.     "properties": {  

5.         "lists": {  

6.             "id": "",  

7.             "items": {  

8.                 "default": 11,  

9.                 "description": "检查list值",  

10.                 "id": "",  

11.                 "title": "",  

12.                 "type": "integer"  

13.             },  

14.             "type": "array"  

15.         },  

16.         "message": {  

17.             "default": "购买商品库存不足",  

18.             "description": "message信息",  

19.             "id": "",  

20.             "title": "",  

21.             "type": "string"  

22.         },  

23.         "status": {  

24.             "default": 301,  

25.             "description": "返回状态值",  

26.             "id": "",  

27.             "title": "",  

28.             "type": "integer"  

29.         }  

30.     },  

31.     "type": "object"  

32. }  

 

 

一个完整的JSON Schema验证规范

 可以根据实际情况删除一些key,但是红色标记的要保留

default默认值,根据实际情况书写,上面例子商品库存不足时的状态码为301,如果要对statusmessage的值进行验证,那么default就可以加上,如果只是验证返回的valueinteger或是string类型,可以忽略。

还可以加入最大值最小值等限制

 

下面是测试代码

[javascript] view plain copy

1. var jsonData = JSON.parse(responseBody);  

2.   

3. var schema = {  

4.   "properties": {  

5.     "lists": {  

6.       "items": {  

7.         "default": 11,  

8.         "description""库存不足的商品id",  

9.         "type""integer"  

10.       },  

11.       "type""array"  

12.     },  

13.     "message": {  

14.       "default""购买商品库存不足",  

15.       "description""id为11的商品库存不足",  

16.       "type""string"  

17.     },  

18.     "status": {  

19.       "description""status",  

20.       "type""integer"  

21.     }  

22.   },  

23.   "type""object"  

24. };  

 

tests["json格式验证"] = tv4.validate(jsonData, schema); //验证json格式

tests["返回状态码是200"] = responseCode.code === 200;

tests["状态码为301"] = jsonData["status"] == "301";

tests["message"] = jsonData["message"] == "购买商品库存不足";

tests["list"] = jsonData["lists"][0] == "11";

 

 这样接口返回的json结构和数据我们就可以验证了。

 

tv4Postman引入的外部库,想了解的可以去看官方文档

另外Postman还提供了一些方法如:

responseCookies

request.data["key"]=="value"

request.headers["key"]=="value"

request.method

request.url

request

responseHeaders

responseBody 

responseTime 

responseCode 包含codenamedetail

iteration 

 

 这些方法可以帮助我们做更多的事情,比如通过一个接口拿到cookie值,然后把cookie设置成全局变量,提供给其他接口使用。

 

 现在大部分的问题都能够验证解决了,但是想要进一步优化完善就需要用到JS的知识了!

 

 

 

☆文章素材来自网络☆

 


 

下一期免费试听活动开始报名了!名额有限,报满为止!

 

 

 报名方式及活动内容:

 

 

 

文章下方评论留言也可以喔

咨询热线
预约试听:186 8212 6618
联系地址
深圳地址:广东省深圳市宝安区西乡街道劳动路冠润商务大厦13F整层
南宁地址:广西南宁市西乡塘高新区东盟财经广场25楼
Copyright © 2017-2023 南宁威扬教育技术有限公司 版权所有      桂ICP备2021005359号-1 桂公网安备 2021005359号