Postman进行接口测试(基础知识)

一、接口测试拷问
1、什么是接口?
软件提供给外部的服务,用于做数据传输
2、软件为什么需要接口?
接口能够让数据被外部进行修改
3、我们为什么要做接口测试?
1)尽早介入测试
2)安全考虑,前端有验证,但是接口未做限制的问题

接口测试本质:就是测试接口能否正常的交互数据、权限控制以及异常场景

二、接口返回数据和json详解
1、json格式
{ }
2、Html
三、接口测试协议
1、Websernice协议 接口地址:http://--------?wsd
restful规则:
Get获取数据、post提交数据、put修改数据、delete删除数据
2、Dobbo协议:接口地址以dubbo://—
3、http协议接口地址:http:// 80%
https:http+ssl安全传输协议 端口:443
http:端口:80
什么是http协议?
超文本传输协议,主要用于浏览器和服务器之间交互数据,交互有两个部分:
请求:get、post、put、delete
响应:1xx响应信息 2xx响应成功 3xx重定向 4xx客户端错误 5xx服务器错误
请求包含内容:
请求行:
请求地址、请求方式、协议

请求头:
Accept (客户端可以接收到数据格式)
X-Requested-With (异步请求)
User-Agent (客户端的用户)
Host (请求的主机地址)
Accept(压缩方式)
Connection(保持活跃)
Cookie (cookie信息)
Content-Length(内容的长度)
响应包含内容:
响应行 协议、响应码、响应信息
响应头
响应正文

四、企业接口测试流程和方案
1、拿到API文档,熟悉接口业务,接口地址,鉴权,入参,出参,错误码
2、接口计划方案
思路:
正例:输入正常的入参,查看接口是否返回成功
反例:
鉴权反例:鉴权为空,鉴权码错误,鉴权已过期
参数反例:参数为空,参数类型异常,参数长度异常
错误码的覆盖
3、编写测试用例和方案
4、执行接口测试
5、输出接口测试报告

五、接口测是简介和分类
接口测试就是系统组件接口之间的一种测试
分类:
测试外部接口:测试被测系统和外部系统之间的接口(只需要测试正例即可)
测试内部接口:
1、内部接口只提供给内部系统使用(只需要测试正例即可)
2、内部接口提供给外部系统使用(测试必须非常全面,正例,各种异常场景,权限控制)

六、接口测试的流程以及用例的设计
1、拿到接口api文档(通过抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,返回值,错误码
2、编写接口用例以及评审
思路:
正例:输入正常参数,接口能够成功返回数据
反例:
鉴权反例:
鉴权码为空,鉴权码错误,鉴权码过期
参数反例:
参数为空,参数类型异常,参数长度异常
错误码覆盖:
根据业务而定
其他错误场景:
接口黑名单,接口调用次数限制,分页场景
3、使用接口测试工具postman执行接口测试
4、Postman+newman+jenkins实现持续集成,并且输出测试报告发送邮件

七、接口测试工具(postman)
1、接口测试工具主要包括:postman,jmeter,soupui,apipost,
2、postman的安装及使用
1)Postman安装
下载地址:https://www.getpostman.com/downloads/
2)postman介绍
请求页签
Params:get请求传参
Authprization 鉴权
Headers:请求头
Body:post请求传参
Form-data:既可以传键值对参数页可以传文件
X-www-form-urlencoded:只能够传键值对参数
Raw:json、text、xml、html、javascript
Binary:吧文件以二进制的方式传参
Pre-request-script;请求之前的脚本
Tests:请求之后的断言
Cookies:用于管理cookie信息
Code:生成接口自动化脚本

响应页签:
Body:接口返回的数据
Pretty:以json、html、xml…不同格式查看返回的数据
Raw:以文本的方式查看返回的数据
Preview:以网页的方式查看返回的数据
Cookies:响应的cookie信息
Headers:响应头
Test Results断言的结果
Status:状态码
Time:响应时间

Get请求和post请求的区别:
1、get请求一般是获取数据,post请求一般是发送数据
2、Post请求比get请求更安全

八、Postman的环境变量以及全局变量
全局变量::可以在所有的接口请求里面使用,通过{{}}取值
作用:可以使用全局变量保存在所有接口都需要使用的变量
环境变量:可以在当前环境的所有接口请求使用,通过{{}}取值
作用:可以保存多种环境,可以让接口在多种环境中测试
如:开发环境、测试环境、生产环境、预发布环境

九、Postman内置动态参数和自定义动态参数
Postman内置动态参数:
{{KaTeX parse error: Expected 'EOF', got '}' at position 10: timestamp}̲}:自动生成当前时间的时间戳 …randomInt}}:生成0-1000的随机数
{{$guid}}:生成一个GUID长字符串随机数
自定义动态参数

自定义时间戳
// 获取系统当前时间
var times = Date.now();
// 把时间设置为全局变量
pm.globals.set(“times”,times)

十、接口关联
第一种方式:JSON提取器
// JSON 提取器:把返回的结果转化成JSON对象
var res=JSON.parse(responseBody)
//取值,并把值设置为环境变量
pm.environment.set(“Token”, res.access_token);

第二种方式:正则表达式提取器
// 正则表达式提取器,match匹配,new RegExp新建正则表达式
var res=responseBody.match(new RegExp(‘“access_token”:“(.+?)”’));
//取值,并把值设置为环境变量
pm.environment.set(“Token”, res[1]);

十一、接口业务闭环
当接口中参数需要上一个接口的返回值来传参时,将参数设置为全局变量,后续用到这个变量时可以直接使用全局变量替换;替换格式为{{参数变量名}}

十二、Postman常规断言、动态参数断言、全局断言
一般会有两个断言
状态断言:断言返回的状态码为200
业务断言:断言其中最核心的业务关键字
在这里插入图片描述
/1、判断返回状态码是200
pm.test(“Status code is 200”, function () {
pm.response.to.have.status(200);
});
//2、返回的结果中包含一个字符串
pm.test(“Body matches string”, function () {
pm.expect(pm.response.text()).to.include(“string_you_want_to_search”);
});
//3、返回的结果json字段检查
pm.test(“Your test name”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//4、返回结果等于一个字符串
pm.test(“Body is correct”, function () {
pm.response.to.have.body(“response_body_string”);
});
//5、断言响应头中包含有指定的响应头
pm.test(“Content-Type is present”, function () {
pm.response.to.have.header(“Content-Type”);
});
//6、断言响应时间少于200ms
pm.test(“Response time is less than 200ms”, function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
//7、断言post请求的返回状态码是否在指定范围
pm.test(“Successful POST request”, function () {
pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
//8、断言返回的状态码信息中包含指定的字符串
pm.test(“Status code name has string”, function () {
pm.response.to.have.status(“Created”);
});

十三、Postman数据驱动
将数据保存在CSV或者JSON文件中,准备运行时导入;
将请求的参数全部替换成CSV或者JSON文件中内容,如{{UserName}}
注意:

判断只有返回结果中包含了access_token时才提取
if(responseBody.search(“access_token”) != -1){
// 正则表达式提取器,match匹配,new RegExp新建正则表达式
var data = responseBody.match(new RegExp(‘“access_token”:“(.*?)”’));
// 取值并设置为全局变量
pm.globals.set(“access_token”, data[1]);
}
特别注意:
在断言里面取数据文件里面的值如下:data.变量名
// 取数据文件中的断言
var res=JSON.parse(responseBody)
pm.test(“返回code:”+data.value, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(data.value);
});

十四、Mock Server服务器
Mock介绍

使用场景:前后端分离,后端的接口没有完成时,前端已经完成,但是前端的业务流程依赖于后端的接口,需要测试自己去Mock接口。

Mock使用

在界面的Mock Server中新建一个mock接口

完成配置后自动生成访问链接
在这里插入图片描述

十五、加密和解密
MD5加密
// Postman的Md5加密
var username_md5 = CryptoJS.MD5(“admin”).toString().toUpperCase();
var password_md5 = CryptoJS.MD5(“123”).toString().toUpperCase();
console.log(username_md5)
console.log(password_md5)
// 设置成全局变量
pm.globals.set(“username_md5”, username_md5);
pm.globals.set(“password_md5”, password_md5);

十六、Postman+newman
1、安装newman
参考:https://www.jianshu.com/p/e8c282dfc02b
2、导出接口测试项目中的:测试用例、全局变量、环境变量、数据文件

3、在cmd中执行命令
newman run 运行
-e 引用环境变量
-g 引用全局变量
-d 引用数据
-r cli,html,json,junit --reporter-html-export ‘/filepath/report.html’ 生成测试报告

cmd进入postman文件夹下执行以下命令后会自动生成测试报告到指定目录:
newman run “/files/testcase.json” -e"/files/environment.json" -g"/files/globals.json" -d"/files/SDCC2.0.csv" -r cli,html,json,junit --reporter-html-export “/files/report.html”

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值