一,什么是接口
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
二,接口的作用
作为一个互联网公司,很多资源和信息需要内部共享或外部流通,那相关的数据就需要通过接口来传输。
三,接口理解
API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。
站在非研发角度可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数。
站在研发角度:
接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。
接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
四,接口工具
1,postman ---> Postman 的应用
是谷歌开发的一款接口测试软件,它使用简单,功能强大,能够发送任何类型的HTTP请求 (GET, HEAD, POST, PUT..),可以进行文件上传、响应验证、变量管理、环境参数管理,还可以批量管理和运行用例,并支持用例导出、导入,可以进行接口的自动化测试。
缺点是自动化断言不够强大,不能和jenkins、代码管理库进行持续集成测试。
2,jmeter
是一款100%纯Java编写的免费开源工具,主要用来做性能测试,但也可以做接口测试,配合后置处理器与断言,可以满足大部分的接口测试场景,JMeter提供了BeanShell编程能力,可以写出比较灵活的测试脚本,通过jmeter+ant+jenkins可以实现接口和性能自动化测试。
3,soapUI
是一个开源测试工具,通过soap/http来检查、调用,实现Web Service的接口和性能测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
五,接口的样子
1,可以参照微信小程序开发APIhttps://developers.weixin.qq.com/miniprogram/dev/api/
2,下图讲解接口的扭转
六,接口文档
接口说明:
接口功能:本接口用于获取用户的token信息 ---登录。
接口请求地址:
https://xingzoushamodewoniu.com/long/api/login |
请求头 :
请求头 | 请求方式 | 说明 |
Content-Type | application/json | 请求方式 |
请求方式: POST
参数类型 :JSON
请求示例:绝大多数为json,格式自定
{
"account": "小白龙",
"password": "123456",
"clientId": "long",
"responseType": "code"
}
请求参数说明
字段名 | 字段说明 | 字段类型 | 是否必填 |
account | 用户名 | varchar(30) | 是 |
password | 密码 | int(15) | 是 |
clientId | 客户编号 | varchar(50) | 是 |
responseType | 响应类型 | varchar(50) | 是 |
响应示例
成功响应编码:
{
"code": "200",
"message": "OK",
"data": {
"code": "4dd529b3-c4b0-4066-a363-742c5b6b6e74_generate_token",
"accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiJVNjA3NkIwMTI0Q0VERkQwMDAxMTdFREU3IiwiZXhwIjoxNjM5NDY1NzYzLCJpYXQiOjE2MzkyMDY1NjN9.ZHkW6j6rfbyyRQ5ZSRW_Z1nRTiYqyiWgSINBEZA99UMw92H1eiy4JxxC6n3AIAcE3Y9j_p8ZNTtJWIsSlsFbOZfmAuOr2ih4oR0tpjCWLU1UTesVmn7tCkeTpbmjeNJolcd4X7knKIKuXyi88SC6ZIhMJRE1ZTI3eK4hJUCi6Rx50lcHvjV_HX2ZHqEly5wqvr_jQ0ZWXquNlGTrPRXofQ6cLawVea8Z_EnXermECQrjWpRelhKYyl2hlqGd48n46avHFAaxp3UZhy1TeE_xeLxYMaBOpUADcPaezSj2Q_Qbq4T24w83iV2JwGAKAVPMQgBjn68IYuucS-j7fxXqFQ",
"accountId": "U6076B0124CEDFD000117EDE7"
},
"extra": null
}
响应参数说明
接口返回码 | 接口返回描述 |
200 | 成功 |
201 | 请求参数错误 |
202 | 密码错误 |
七、抓包工具抓取接口
借助工具(Fiddler、Charles、Proxyman、Wireshark、Tcpdump、控制台{F12})抓取以下内容
General
Request URL: https://xingzoushamodewoniu.com/long/api/login
Request Method: POST
Status Code: 200 OK
Remote Address: 127.0.0.1:7367
Referrer Policy: strict-origin-when-cross-origin
Response Headers
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Sat, 11 Dec 2021 07:14:39 GMT
Server: openresty
Set-Cookie: ac=ed09abaa400c19fff38a588d6c412c21; expires=Sun, 11-Dec-2022 07:14:39 GMT; Max-Age=31536000; path=/
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Powered-By: PHP/7.1.12
X-RateLimit-Limit-second: 80000
X-RateLimit-Remaining-second: 79004
Request Headers
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 134
Content-Type: application/x-www-form-urlencoded
Host: qac-qupost.qutoutiao.net
Origin: https://mp.qutoutiao.net
Referer: https://mp.qutoutiao.net/
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
Form Data
{
"account": "小白龙",
"password": "123456",
"clientId": "long",
"responseType": "code"
}
Response
{
"code": "200",
"message": "OK",
"data": {
"code": "4dd529b3-c4b0-4066-a363-742c5b6b6e74_generate_token",
"accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiJVNjA3NkIwMTI0Q0VERkQwMDAxMTdFREU3IiwiZXhwIjoxNjM5NDY1NzYzLCJpYXQiOjE2MzkyMDY1NjN9.ZHkW6j6rfbyyRQ5ZSRW_Z1nRTiYqyiWgSINBEZA99UMw92H1eiy4JxxC6n3AIAcE3Y9j_p8ZNTtJWIsSlsFbOZfmAuOr2ih4oR0tpjCWLU1UTesVmn7tCkeTpbmjeNJolcd4X7knKIKuXyi88SC6ZIhMJRE1ZTI3eK4hJUCi6Rx50lcHvjV_HX2ZHqEly5wqvr_jQ0ZWXquNlGTrPRXofQ6cLawVea8Z_EnXermECQrjWpRelhKYyl2hlqGd48n46avHFAaxp3UZhy1TeE_xeLxYMaBOpUADcPaezSj2Q_Qbq4T24w83iV2JwGAKAVPMQgBjn68IYuucS-j7fxXqFQ",
"accountId": "U6076B0124CEDFD000117EDE7"
},
"extra": null
}
以上是通过抓包工具或者浏览器的控制台(检查、F12)中获取的数据,这个接口经过了上图的流程,最终实现登录成功。
八,接口用例设计
接口测试的原理就是模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程。
接口测试采用的方法其实与黑盒测试一致的,甚至可以把接口测试理解为没有界面的功能测试。只不过接口测试的测试点更多一些,除了界面上需要验证的各种功能点,还包括接口的安全、接口的性能等。
一般测试用例的设计要从单接口参数的校验到整个业务功能点的验证,还可以验证一些安全性和异常情况。
接口用例设计点基本原则如下:
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!