1、接口的定义
接口是指系统模块与模块、系统与系统间交互的入口。一般多是http协议接口、WebService协议接口。一般分为三种:API(应用程序接口)、GUI(图形用户界面接口)、CLI(命令行接口),测试的接口指的是API接口。
2、接口测试的原理
接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文处理,然后再把应答报文发送给客户端,客户端接收到应答报文这个过程。接口测试的重要意义是实现开发并行测试,减少页面层测试的深度,缩短整个项目的测试周期。
3、接口常见的请求方式
接口的请求方式有POST、GET、HEAD、PUT、DELETE、OPTIONS、TEACE、CONNECT,一般情况测试验证时,只有POST和GET。
GET和POST区别:
(1)GET通过URL提交数据,数据可以在URL中看见,POST提交数据在body体中;
(2)GET提交的数据大小有限,浏览器对URL长度有限制,POST没有这个顾虑;
(3)安全性问题:GET提交数据会显示在URL中,安全性相对较低,POST在body中
(4)GET一般用于获取数据,POST一般用于提交数据,当然GET和POST均可用于获取或提交数据;
(5)服务器取值方式不同。如PHP可以使用$_GET来获取变量的值,而POST方式通过$_POST来获取变量的值。
4、常见响应报文响应码
1XX 信息性状态码
2XX 成功状态码 200请求成功
201创建成功
3XX 重定向状态码 301永久重定向,指定资源所在的位置
302临时重定向
304可以使用缓存,服务器允许访问,但发送的请求未满足条件的情况
4XX 客户端错误 400请求报文语法错误
401需要通过http认证
403请求被拒绝
404服务器无法找到资源
405不允许使用此方法请求相应的URL
5XX 服务端错误 500服务器内部错误
501服务器不支持请求功能
502代理服务器从上级收到了一条伪响应
503服务器暂时不提供此服务,将来可以会提供
5、OSI七层协议
OSI七层模型分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP协议:一种面向连接的、可靠的、基于字节流的传输层通信协议。建立和断开协议连接有三次握手和四次挥手。
UDP协议:一种面向非连接的、不可靠的的传输层通信协议。
TCP/IP是协议族。包含:TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议。
TCP(Transport Control Protocol)传输控制协议
IP(Internetworking Protocol)网间网协议
UDP(User Datagram Protocol)用户数据报协议
ICMP(Internet Control Message Protocol)互联网控制信息协议
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
SNMP(Simple Network manage Protocol)简单网络管理协议
FTP(File Transfer Protocol)文件传输协议
ARP(Address Resolation Protocol)地址解析协议
HTTP协议:建立在TCP协议基础上的应用层协议。HTTPS协议是HTTP协议+SSL协议,SSL协议是一个加密协议,HTTP本身传输内容是明文,HTTPS是加密传输。HTTP端口是80,HTTPS端口是443,http和https本身都是超文本协议
6、常用的抓包工具
Chrome 浏览器 F12
Firefox 浏览器 Firebug
Fiddler、Charles
Httpwatch
7、常用的接口测试工具
商业工具:SoapUI、LoadRunner
开源工具:postman、Jmeter、Jsoup、HttpClient、Python的requests库
8、接口测试用例
接口测试用例至少需要包括项目名称(模块)+用例编号+标题+请求地址(URL)+接口名称+请求方式+前置条件+请求参数+请求报文+返回报文+测试结果+结果验证(断言)
9、接口测试常见bug
(1)传入参数处理不当,导致程序crash
(2)类型溢出,导致数据读出和写入一致
(3)对象权限未进行校验,可以访问其他用户敏感信息
(4)状态处理不当,导致逻辑出现错误
(5)逻辑校验不完善,利用漏洞获取非正当利益等
10、接口测试测试要点
(1)每个参数类型不合法的情况(不要忘了NULL型,容易遗漏)
(2)每个参数取值范围不合法
(3)参数为空
(4)参数前后台定义的一致性
(5)每个参数的上下限
(6)接口有上下游关联的情况
(7)不同的请求方式
(8)请求参数加密