Part 1
现在很多公司的项目都使用前后端分离的开发模式,这样不仅仅能提高开发效率,还能方便维护。在进行前后端分离开发时,后端的开发人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性,这就需要前后端的开发人员的开发进度保持一致,但是就算是这样也提高了测试的难度,不利于及时完成功能模块的测试。所以后端开发人员,在独立开发完成某个接口后,需要自己先进行测试,这样不仅能提高开发的效率,而且还能减少送测时的bug。我们都知道前后端分离的开发模式就是前端页面的某个功能调用后台的对应的功能接口,然后后台再将具体的数据返回给前台即可。所以后端测试的时候只需要模拟该请求即可,这时候就需要使用接口测试工具。目前市场上有很多优秀且完善的接口测试工具,比如SoapUI,Postman等,这些都能够高效的帮助后端开发人员独立进行接口测试。我们公司使用的是Postman接口测试工具,,这也是目前使用较多,比较主流的接口测试工具。这篇文章就详细的介绍下Postman以及如何使用它。
Part 2
Postman的下载安装比较简单,直接去官网:https://www.postman.com/postman/下载,一般使用免费版即可满足基本接口测试,也可以根据个人或者公司的项目实际情况考虑是否需要专业版或者其他。
下载完成后,直接双击Postman-win64-5.5.2-Setup.exe应用程序,即可进行安装。
安装完成后,会出现下面的页面,可以注册一个账号,也可以关闭下面的页面跳过注册账号。
进入postman主页面以后,会默认出现创建新项目的弹窗。
接下来再看看具体的主页面的功能和说明:
接下来正式进行测试。在之前的一篇文章:SpringBoot开发Restful风格的接口实现CRUD功能,这里我们还以这个项目的接口为实例,来进行接口测试的演示。
首先我们创建一个collection,方便以后查找测试记录。
Authorization是验证是否拥有从服务器访问所需数据的权限。当发送请求时,通常必须包含参数,以确保请求具有访问和返回所需数据的权限。Postman提供了授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。
以上两个在创建集合和接口的时候都有,一个是对集合有效,一个是对某个具体的接口,作用一样。
具体说明:
1、Inherit auth from parent (从父类继承身份验证)
向集合或文件夹添加授权。假设我们在集合中添加了一个文件夹。在授权选项卡下,默认的授权类型将被设置为“从父类继承auth”。“从父”设置的“继承auth”指示默认情况下,该文件夹中的每个请求都使用父类的授权类型。
2、No Auth
默认情况下,“No Auth”出现在下拉菜单列表中。当不需要授权参数发送请求时,使用“No Auth”。
3、Basic Auth
是基础的验证,所以会比较简单 会直接把用户名、密码的信息放在请求的 Header 中
4、Digest Auth
要比Basic Auth复杂的多。使用当前填写的值生成authorization header。所以在生成header之前要确保设置的正确性。如果当前的header已经存在,postman会移除之前的header。
5、OAuth 1.0
postman的OAuth helper让我们签署支持OAuth。1.0基于身份验证的请求。OAuth不用获取access token,我们需要去API提供者获取的。OAuth 1.0可以在header或者查询参数中设置value。
6、OAuth 2.0
postman支持获得OAuth 2.0 token并添加到requests中。
7、Bearer Token
Bearer Token是安全令牌。任何带有Bearer Token的用户都可以使用它来访问数据资源,而无需使用加密密钥。
Pre-request Script是集合中请求发送之前需要执行的代码片段。请求参数中包含一个随机数或者请求header中包括一个时间戳,或者我们的请求参数需要加密。也是在collection和具体的接口都有,作用一样。
比如上面的Pre-request Script脚本就是获取时间戳,并设置为环境变量。
tests脚本是用做测试结果断言,支持js语法。是在完成API访问并得到其response回应之后运行的脚本,一般用于获取response的内容,用于之后的其他操作。Test脚本需要在某个指定的函数pm.test(…)中执行才会被识别,且作为test脚本运行,比如:
pm.test("这里是测试描述",function(){ //需要执行的代码 });
第一个参数是测试描述(会在测试结果栏显示),
第二个参数是一个函数,具体执行代码都在这个函数中运行。pm对象是Postman的主要对象,所有的内置函数,数据调用等,都需要通过它来实现。
在创建collection的时候还有个valiables标签,这是用来创建变量值的:
变量允许我们在多个地方重复使用值,这样可以让我们的代码更高效(不用重复工作)。此外,可以更改一次变量值,就能改变其他代码中的所有相关联的值。
比如有3个使用相同域名的API端点your-domain.com。我们可以在该网站保存为一个变量,而不是重复的值,可以使用在请求构建器中使用{{domain}}/endpoint1和{{domain}}/endpoint2。那么,如果我们的域更改为another-domain.com,则只需要更改此值一次就可以了。
介绍完以上的概念,我们正式进行测试。由于这里使用的是以前的代码,所以如果有不清楚的可以阅读:SpringBoot开发Restful风格的接口实现CRUD功能,并且项目源码已经同步至github。
postman支持很多的http请求,具体的如下图所示。 请求类型可以模拟Form表单文本提交,Form表单文件提交,raw原始数据提交,二进制文件提交。对于原始数据类型raw还支持不同文件格式,包括JSON,TXT,HTML等多种文件格式。这里我们具体演示如何测试post、get、delete、put请求,其他的请求也类似。
首先来验证get请求
测试根据姓名查询数据:
接下来来验证delete请求
数据库中id为3的数据已经被删除了:
测试put请求:
数据库中id为2的数据已被更新:
测试post请求:
数据库中新增了id为3的数据:
Part 3
Mock Server就是一个服务器,即针对某个特定的接口,返回我们自定义的返回值的工具。通常在需要调用第三方服务的开发或在前后端分离的开发中,前后端开发人员可以约定接口的名称、请求参数、返回结果等等,在后端人员未完成接口开发工作的情况下,前端利用Mocke Server模拟出对应接口,拿到返回数据来调试,无需等后端开发人员完成工作。即我们可以理解前面的http请求的调试时模拟前端访问后端的代码,测试后端代码逻辑是否正确(前端没有开发好,后端开发人员自测),而Mocke Server则是模拟假设后端返回了前端需要的数据,测试前端的功能(后端没有开发好,前端自测)。
假设我们需要前后端开发某个功能模块但是后端接口没有开发好,这时候我们可以搭建一个Mocke Server来自测前端的逻辑是否正确。假设请求的接口是:
/localhost:8080/do/user/usrall
返回的数据样例:
{ "code": 200, "msg": "请求成功", "data": [{ "name": "张三", "age": 24, "email":"123@qq.com", }, { "name": "李四", "age": 26, "email":"258@qq.com", } ] }
点击New,然后选择Mocke Server,然后填写请求的地址,以及response body。接着写一个自定义的Mocke Server的名字,点击create创建Mocke Server,即可获得一个URL:
配置完成之后,postman会生成一个mock server的地址,我这里生成的URL是:
https://3dd39ca6-40bd-41ae-a045-ed80d1e5gac01.mock.pstmn.io
接着点击run按钮启动Mock Server。在浏览器中输入刚刚生成的URL+自己的请求接口,发送请求,查看返回的数据验证是否成功即可。
作者:江夏、
原文链接:https://blog.csdn.net/qq_41153943/article/details/107736588#comments_13181097