001 接口测试与postman
一.接口测试:
接口测试即功能测试,实质是各种操作数据库。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等 --百度百科
二.接口测试分类:
程序对外接口:从别的网站或服务器上获取资源的调用,比如某网站购物时,调用支付宝或微信或其他支付接口。
程序对内接口:程序内部方法直接的接口调用。比如电商平台的前台和后台之间接口调用,前台开发人员用HTML或CSS或JS等技术,后台开发人员用JAVA,PYTHON等语言,若用户从前台输入数据,怎样将数据传到后台呢?主要是通过http协议的get或post请求来实现前后端的数据传递,这些都是接口测试的一部分。
三.接口的组成:
1.接口说明文档;
2.接口url;
3.请求方法:post或get
4.请求参数、参数类型、请求参数说明;
5.返回参数说明;
由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header,cookie。
标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息
那么,header和入参有什么关系?它们不都是发送到服务器的参数吗?
首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。
四.接口测试一般需要注意的点:
1.检查接口返回的数据是否与预期结果一致;
2.请求结果是否正确;
3.接口的安全性:
a.绕过验证,比如说购买了一个商品,它的价格是300元,提交订单时,将商品的价格改成负数元,后端有没有做验证,那么这时是否余额会增加?
b.绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,若传一个普通用户,能不能修改成功?或传一个其他的卖家能不能修改成功?
c.参数是否加密,比如说登陆接口,用户名和密码是不是加密,如果不加密,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
d.密码安全规则,密码的复杂程度校验
4.参数组合:
现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
5.异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
6.接口用例的设计举例:
五.请求状态码说明:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
六.接口测试常用工具:
接口测试的工具很多,比如 postman、jmeter、loadrunner、SoapUI等,比较常见的是postman和jmeter。简介下postman和jmeter。
1.Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get/post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
2.jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。
七.postman:
Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来模拟get或者post或者其他方式的请求来调试接口。常见模拟场景有:get请求、post/k-v、post/json、添加cookie、添加header、上传文件。分别举例介绍。
1.get请求传参:
接口文档说明如下:
因为是get请求,因此可以直接在浏览器访问,当然也可以使用postman请求,浏览器直接访问:
postman模拟get请求调用接口:点击Params,输入参数及value,可输入多个用&连接,即时显示在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别声明时,可以不填。另外,注意HTTP状态码和请求的耗时,HTTP状态码是200时,代表这个接口请求是正确的。
2.post请求--表单提交,以key-value形式传参,接口介绍如:
使用postman来模拟post请求,form-data提交,它是网页表单用来传输数据的默认格式,可以模拟填写表单,并且提交表单。
3.post请求--模拟上传文件。接口信息:
使用postman来模拟post请求,form-data提交,可以上传一个文件作为key的value提交。但该文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加文件。如:
4.post请求--提交json。接口说明如下:
使用postman来模拟post请求,入参是json,当我们选择了JSON(application/json)时,postman会在Headers自动设置了Content-Type,如图:
Headers里自动添加Content-Type:application/json:
当然,提交json时,也可以选择Text,如图:
5.post请求--添加cookie。接口文档说明如下:
使用postman来模拟post请求,依据接口文档得知需求,该接口访问时需添加cookie,请求方式:post,输入url,Body 中选取"form-data" 格式,输入所需的key-value,再在Headers里写入Cookie值(上面接口文档写明:cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign), 点击"Send", 即可在"Response" 中查看返回的结果:
输入key,value页面:
6.post请求--添加Header.接口文档说明如下:
post请求,需添加header。将请求方式设为GET, 输入的url,点击Headers并添加"Referer"信息, 点击"Send", 即可在"Response" 中查看返回的结果。
.