目录
1.简介
为什么要做接口测试?
接口测试由于绕开了前端,直接通过请求调用的方式进行测试,有很大优势:
1、更早的测试介入,只要接口开发完成,便可以测试。
2、更多的场景覆盖,因为绕过了前端控制,测试场景也比较自由。
3、接口测试从项目的角度,工作量低于功能测试,投资回报较高。
2.工具安装使用
一、工具下载
官网下载地址:https://www.postman.com/downloads/
注:记得选择下载的版本。
二、工具安装
下载完成后,双击 FiddlerSetup.exe 安装,可能会需要邮箱、用户名、密码注册、给团队命名,不然无法继续下一步,反正,我安装的时候是这样的。
成功进入postman页面后,接下来我们正式进行postman的系统教程吧。
1.在右上角的设置里可以设置postman的主题。
2.这里我没有修改主题,默认是白色背景,也可以设置成黑色的,看个人爱好吧!
3.一些常用的快捷键
4.接下来,介绍Postman的基础功能。
5.左边部分,collection(接口集)在postman里面相当于一个文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。这里我们做一个普通接口的简单的示例:
6.右键,创建一个请求。
7.给接口命名为 测试接口,对测试接口的描述可写可不写,点击 ‘Save to 测试’ 即保存成功。
8.点击刚刚创建好的请求,现在是空白的。
9.输入一个get请求,params里会自动显示参数,我这里用的是百度链接:https://www.baidu.com/。
注:点击 Send 按钮,查询成功。
10.这样就完成了一次简单的测试接口的请求。
3.请求区域介绍
1、 Authorization:身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务。当前的一套helpers可以帮助你解决一些authentication protocols的问题。
2、Headers:请求的头部信息。
3、Body:post请求时必须要带的参数,里面放一些key-value键值对。
4、Pre-requerst Script:可以让你在 请求之前自定义请求数据,这个运行在请求之前,语法使用JavaScript语句。
5、tests:tests标签功能比较强大,通常用来写测试,它是运行在请求之后。支持JavaScript语法。postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量以及对错情况。它也可以用来设计用例,比如要测试返回结果是否含有某一字符串。
6、form-data:它将表单数据处理为一条消息,以标签为单元,用分隔符分开。既可以单独上传键值对,也可以直接上传文件(当上传字段是文件时,会有Content-Type来说明文件类型,但该文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加文件。)是post请求里较常用的一种。
注:上传文件,选中 File 。
7、x-www-form-urlencoded:对应信息头-application/x-www-from-urlencoded,会将表单内的数据转换为键值对。
8、raw:可以上传任意类型的文本,比如text、json、xml等,所有填写的text都会随着请求发送。
9、binary:对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,一次只能上传一个文件, 也不能保存历史,每次选择文件,提交。
.
4.接口结果判断---断言
首先,既然是自动化测试,那么我们肯定需要通过工具Postman或者代码,帮我们直接判断结果是否符合预期。那么在接口测试上,大体就两个思路:
-
判断请求返回的 code 是否符合预期
-
判断请求返回的内容中是否包含预期的内容(关键字)
也可以自己之间编辑js脚本,上述部分断言可简单化
另一种断言方式:Tests
//根据返回的 Code 判断请求情况
tests[“Status code is 200”] = responseCode.code ===200;
Response body: Contains string
//判断返回的内容中是否存在“关键字”。(tests 的 key 可修改,将不再强调)
tests[“Body matches string”] = responseBody.has(“这里可以改为你要判断的关键字内容”);
//判断结果中是否存在 access_token 关键字
tests[“has access_token”] = responseBody.has(“access_token”);
Response body: is equal to string
//判断返回内容是否跟预期完全相等。
tests[“Body is correct”] = responseBody ===“这里可以改为你的预期内容”;
Response body: JSON value check
//上文提到,responseBody 为字符串类型,支持转为 Json 格式
varjsonData = JSON.parse(responseBody);
tests[“Your test name”] = jsonData.value===100;
Response time is less than 200ms
//判断请求时长是否小于200ms ,具体时长按情况自定义
tests[“Response time is less than 200ms”] = responseTime <200;
注:若返回对象是xml格式,可通过这个进行转换json,并在postman console (控制台)查看具体信息
5. 参数化
// 环境参数化,用户数据,接口动态关联参数....
环境变量与全局变量的区别?
环境变量相当于新建一个版本,在版本中设置变量,在该版本下所有接口都可以调用该接口。
全局变量是只能在本集合下所有接口调用
1.设置环境变量
postman.setEnvironmentVariable("key", "value");
例子: postman.setEnvironmentVariable("url", "http://192.168.36.47/v2/api");
使用环境变量的格式:{undefined{url}}
1.1清除环境变量
postman.clearEnvironmentVariable("variable_key");
例子:postman.clearEnvironmentVariable("url");
2.设置一个全局变量
postman.setGlobalVariable("key", "value");
例子:postman.setGlobalVariable("username", "123@qq.com");
使用全局变量格式:{undefined{variableName}}
2.1清除一个全局变量
postman.clearGlobalVariable("key", "value");
例子:postman.clearGlobalVariable("username", "123@qq.com");
2.动态关联,根据上一个接口返回的值设置为全局变量参数,下一个接口入参时直接引用{{参数名}},如登录态的关联token
3.文档参数化
当变量的参数可以有很多中不同数据时,可采用文档导入数据运行。
具体步骤如下:
1、登陆的账号和密码可有不同用例,可以先设置为变量
2.通过txt/csv文件编写测试数据,用逗号分割
- 3、点击接口所在的目录夹中的Run
4、选择完类型后自动按文件的行做为运行次数,若没有统计到,可自行输入运行次数。点击运行。
点击Preview可预览导入的数据是否正常
5、返回运行结果
6.批量设置测试集,执行
1.录入所有接口,然后接下我要对所有的接口进行这样的测试
2.执行自动化测试
点击集合的Run按钮
弹出如下界面,可以填写相应的参数,这里我用默认的
点击Run,执行结果如下