Postman接口测试从入门到精通(一)

 一、接口测试的简介和分类

接测试就是测试系统组件接口之间的一种测试。

分类︰
测试外部接∶测试被测系统和外部系统之间的接口。(只需要测试正例即可,看是否调用成功即可)

测试内部接口:
1.内部接口只提供给内部系统使用。((预算系统,承保系统)(只需要测试正例即可)

2.内部接口提供给外部系统使用。(测试必须非常全面,正例,各种异常场景,权限控制)

二、接口测试的流程以及用例的设计
1.拿到接口api文档(通过抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,状态码。
⒉编写接口用例以及评审。

思路:
正例∶输入正常入参,接口能够成功返回数据。反例:
鉴权反例:
鉴权码为空,鉴权码错误,鉴权码过期,-..…..

参数反例︰

参数为空,参数类型异常,参数长度异常。

错误码覆盖︰
根据业务而定的。

其他错误场景︰
接口黑名单,接口调用次数限制,分页场景。
3.使用接口测试工具Postman执行接口测试。
4.Postman+Newman+Jenkins实现持续集成,并里输出测试报告并且发送邮件。

三、微信公众平台接口
获取权限∶
appid( ID) ;secret(秘钥):
四、Postman的简介,安装,注册。
安装
1.Chrome应用商品搜索Postman安装。(FQ)

2客户端安装
官网地址: https:/ilwww.postman.com/downloads/

3.Postman的注册和登录。

4.Postman的界面介绍

Home主页
workspaces工作空间

  1. Collections集合,项目集合。
  2. Apis   api文档
  3. EnViromments环境变量,全局变量
  4. Mock Server   虚拟服务器。
  5. Monitors    监听器  
  6. History   历史记录

五、Postman执行接口测试

请求页签

  1. Params : get请求传参
  2. authorization:鉴权
  3. headers:请求头
  4. Body : post请求传参
  5. form-data:既可以传键值对参数也可以传文件。
  6. x-www-from-urlencoded:只能够传键值对参数
  7. raw : json , text , xml , html, javascript
  8. binary :把文件以二进制的方式传参。
  9. pre-request-script:请求之前的脚本。
  10. tests :请求之后的断言。
  11. cookies :用于管理cookie信息。

响应页签:

  1. Body:接口返回的数据。
  2. Pretty :以Json , html,XML....不同的格式查看返回的数据。
  3. Raw.以文本的方式查看返回的数据。
  4. PreView:以网页的方式查看返回的数据。
  5. Cookies:响应的Cookief信息
  6. Headers :响应头
  7. Test Results"断言的结果。
  8. 200状态码
  9. OK状态信息
  10. 681MS响应的时间

  11. 343B响应的字节数

面试题:
Get请求和Post请求的区别:
1.get请求一般是获取数据,post请求一般的提交数据。

2.post请求比get请求安全。

3.本质区别是传参的方式不一样: get请求在地址栏后面以?的方式传参,多个参数之间用&分隔。post请求是在body以表单的方式传参。

问题:

多种环境:开发环境,测试环境,生成环境。

接口关联:需要手动关联,参数需要手动修改。

 

六、Postman的环境变量以及全局变量

环境变量:环境变量就是全局变量
全局变量:全局变量是能够在任何接里面访问的变量,
获取环境变量和全局变量的值通过:{{变量名}}

 

七、接口关联

1.使用json提取器实现接关联

第一个接口:
//使用json提取器提取accesss_token值。
//把返回的字符串格式的数据转换成对象的形式。

var result =JSON.parse(responseBody ) ;

//把access_token设置为全局变量
pm.globals.set( "access_token" ,result.access_token) ;

第二个接口:
 {{access_token})

2.使用正则表达式提取器实现接口关联

1第一个接口:
//使用正则表达式提取器实现接口关联,match匹配。
 var result = responseBody.match(new RegExp(' "access_token" :" ( .*? )" '));

console.log(result[1]);
//设置为全局变量
pm.globals.set("access_token" , result[1]);

第二个接口:
{{access_token}}

 

八、Postman内置动态参数以及自定义的动态参数postman内置动态参数;
{EStimestampl}    生成当前时间的时问戳。

{}ESrandomlInt}     生成0-1000之间的随机数 

{guid}    生成速记GUID字符串。

 

{Stimestamp}生成当前时间的时间戳。{($randomIntl}生成0-1000之间的随机数{iSguid}}
生成速记GUID字符串。
自定义动态参数︰
1//手动的获得时间戳
2 var times = Date.now();

3//设置为全局变量
4 pm.globals. set("times" ,times );

5使用时使用:{{times}}

九、测试其他接口


十、Postman断言
Status code:Code is 200     检直返回的状态码是否为200

Response body:Contains string   检查响应中包括指定字符串

Response body:Json value check   检查响应中其中json的值

Response body : is equal to a string    检查响应等于一个字符串
Response headers : Content-Type  检查是否包含响应头Content-Type

Response time is less than 200ms :检直请求耗时小于200ms

 

//断言//业务断言
pm.test("检查响应中包括access_token" , function oE
pm .expect(pm.response.text()).to.include("access_tdksen't;);

posted @ 2024-11-12 17:38  开心的橘子皮  阅读(178)  评论(0)    收藏  举报