postman接口测试及接口自动化测试

接口

一、接口

1、什么是接口?
(1)软件:统称API,application,program,interface,微信提现和充值,支付宝支付,银联支付接口(鉴权码:token,key,appkey)鉴权码:token,key,appkey
(2)接口包括:内部接口和外部接口

  • 内部接口:开发人员自己开发的对自身系统提供的接口
  • 外部接口:开发系统调用外部的,微信,支付宝,其他的接口
  • 总结:借口就是软件提供给外部的一种服务

2、软件为什么需要接口

  • 因为接口能够让内部的数据被外部进行修改

3、为何做接口测试
(1)前后端开发进度不一致,需要把一开始开发出的接口进行测试

  • mock:mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为
    (2)基于安全考虑,前端有验证很容易绕过去,直接请求接口,特别是涉及到身份证信息、银行卡、金钱交易方面
    (3)测试推崇的是测试左移,测试尽早介入

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

二、接口返回数据和JSON详解

1、JSON格式 (包含三组数据)
(error_code:0,msg"提现成功",data:[])

  • error_code:错误码,0表示成功,code
  • msg:对错误码的中文说明
  • data:真正的返回的数据
    (1)json就是一种数据类型,整形,小数,字符串
    (2)JSON由两组数据组成:MAP对象,键值对(key:value)
    数组:{value1,value2,value3}

2、HTML格式

<html>
	<title></title>
	<body>
		<error_code>0</error_code>
		.........
	</body>
</html>

3、xml格式

<?xml?version="1.0"encoding="utf-8">
	<error_code>0</error_code>
	.......
</xml>

三、接口测试协议

1、webservice协议
接口地址:http://…?wsdl

soap协议(一种通信协议),wsdl是其描述文件
restful规则:get获取规则,post提交数据,put修改数据,delete修改数据

2、dubbo协议
接口地址以dubbo://…
适用于少量数据的传输(不适合传视频,大文件等数据),大并发

3、http协议(主流)
接口地址:http://…
https=http+ssl 安全传输协议 端口:443
http 端口:80
http协议:http是超文本传输协议,主要用于浏览器和服务器之间交互数据,交互有两个部分 请求和响应
请求:get、put、post、delete
响应:1XX信息,2XX成功,3XX重定向(跳转不传值),4XX客户端错误,5XX服务器错误
请求部分包含:
请求行:请求方式,请求地址,协议
在这里插入图片描述
请求头

Accept:application/json,tex/javascript,’/’,q=0.01(客户端可以接收的数据格式)
X-Requested-With:XMLHttpRequest(异步请求,一般应用在局部刷新的请求里)
User-Agent:PosmaRuninue/7.26.5(客户端的用户/代理)
Cache-Control:no-cache
Postman-Token:14a45257-b900-46e4-b760-e45c1a2ac824(postman的鉴权)
Host:47.107.116.139(请求的主机地址)
Accept-Encoding:gzip,deflate,br(压缩方式)
Connection:keep-alive(保持活跃,如果不是保持活跃这个状态,每请求一次就会断开)
Cookie:wNq_lastvisit=1029%091605272358%09%2Fphpwind%2F
wNq_visitor=pWS4zEbz%2F5x0XgEQQ4F20ipEcVIS8AU0DopI6Xoj7L3SmaUYR%2Fw%3D%
3D;csrf_token=68bd2c7857e99ca7(这个请求的cookie信息)
Content-Length:0(内容的长度)
空一行
请求正文

响应部分
响应行:协议,响应码,响应信息
HTTP/1.1.200 OK
Server.nginx
Date:Fri.13 Nov 2020 21:55:23 GMT
Conent-Type: text/html; charset=UTF-8
Connection:keep-alive
X-Powered-By: PHP/5.6.36
Set-Cookie:
wNq_lastvisit=1033%091605272362%2Fphpwind%2Findex.php%3Fm%3Du%26c%3Dlogin%26a%3Dorun; expires=Sat, 13-Nov-2021 21:55:23 GMT; Max-Age=31536000; path=/
Vary: Accept-Encoding(响应的
Content-Length: 196

四、企业接口测试的流程和方案

1、拿到api接口文档,熟悉接口的业务、接口地址、鉴权、入参、出参、错误码
2、接口计划和方案
思路:
(1)正例:输入正常的入参,查看接口是否返回正常
(2)反例:

  • 鉴权反例:鉴权为空,鉴权码错误,鉴权码过期…
  • 参数反例:参数为空,参数类型异常,参数长度异常,错误码的覆盖
  • 其他场景:分页异常
    3、编写用例和评审
    4、执行接口测试
    5、输出接口测试报告

五、接口测试工具以及Postman介绍

1、接口测试工具:postman、soupUI、apipost、fiddler、charies
2、postman界面介绍
在这里插入图片描述

  • Params:用于在get请求传参
  • Authorization:postman自带的鉴权功能
  • Headers:请求头(详情请点击“请求头”,查看相关内容)
  • Body:post请求传参(none:没有参数;form-data:既有文件又有键值对;x-www-form:只传输键值对;raw:创JSON,TXT,HTML,JS;binary:把文件以二进制的方式传输)
  • Pre-request Script:接口请求之前的脚本(js)
  • Tests:断言
    cookies:postman的cookie管理器
  • code:生成接口自动化脚本
    在这里插入图片描述
  • Body:返回的数据(Pretty:以JSON格式展示;Raw:以文本格式展示;Preview:以网页的格式展示)
  • cookie:返回的cookie信息
  • Header:响应头
  • Test Result:断言
  • status:状态码
  • time:消耗的时间
  • size:字节数

3、postman内置的动态参数
企业当中做接口测试的时候会出现接口不能把参数写死

  • 时间戳:{{$timestamp}}
  • 生成0-1000的随机整数:{{$randomInt}}
  • 生成一个GUID的字符串:{{$guid}}(很长的一个字符串)

4、postman环境变量和全局变量

  • 环境包括:开发环境、测试环境、预发布环境、线上环境
  • 环境变量和Globals都是全局变量
    在这里插入图片描述
    5、接口关联
  • JSON提取器
//提取access_token的值
var jsValue = Json.parse(responseBody);
console.log(jsValue.access_token);
//把提取的值保存到全局变量
pm.globals.set("access_token",jsValue.access_token);
  • 正则表达式
//使用正则表达式提取
var flag_id = responseBody.match(new RegExp('"id":(.+?),'));
//new RegExp 新建一种规则
var flag_id = responseBody.match(new RegExp('"id":(.+?),'))[1];
//取第一个值(id:518 是第 0个值)

在这里插入图片描述

  • Cookie提取器

6、断言
八大断言方式,八大元素定位

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、断言接口请求的时间少于200毫秒 (用于性能断言)
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");
});

待更新。。。。。。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值