文章目录
一、前言
(这部分较长的文字内容可以帮你更好的理解接口的本质)
1.1 名词解释:
TCP/IP:传输控制协议/互联网络协议
HTTP:超文本传输协议,是一个资源请求访问的工具。
URL:统一资源定位符,是一个资源在网络主机上的地址。拿现实类比,就像一个电视机在家里的位置,放在了什么地方。
1.2 网络数据传送
网络上数据的传送形式是一个个数据包。IP协议提供数据包的命名方法和递送机制,能够让一台主机在网络上向另一台主机传送包。TCP协议是建立在IP协议上,提供进程间可靠全双工连接的协议。
TCP/IP就像一辆汽车,用运输货物,但是在互联网世界,有无数辆这个模样的汽车,如何将这些一模一样的汽车区分开来,分清一辆汽车是做什么工作,就需要HTTP协议,HTTP就是给汽车定义类型改变外型的规则,比如这种车是小轿车,那种车是大客车。HTTP请求类型由此而来,GET、POST、DELETE、PUT等等。
1.3 浏览器访问实质
我们打开一个浏览器,要访问对应的网页,在地址栏输入URL,其实质就是发送一个HTTP请求,根据请求类型拿取那个地址对应的资源文件,本质就是你的电脑主机和目标主机建立一个连接,获取资源的过程。
这里用客户端和服务器来区分你自己的主机(客户端)和想取资源文件的目标主机(服务器)。服务器用两种不同的方式向客户端提供内容,分别为静态内容和动态内容。一般来说,磁盘文件就是静态内容,直接返回给客户端。而运行一个可执行文件,该文件的运行结果就是动态内容。
如下是静态内容一个典型的URL: http://www.google.com:80/index.html
就是到地址映射的域名为www.google.com因特网主机上获取一个html资源文件地址。域名映射的相关内容这里不多解释。
如下是动态内容的一个典型URL:http://bluefish.ics.cs.cmu.edu:8000/cgi-bin/adder?15000&213
‘?’字符用来分隔文件名和参数,每个参数用‘&’字符分隔开。上述URL标识了一个adder的可执行文件,带着2个字符串参数15000和213。
1.4 Http请求与响应
请求:上述提到的HTTP请求类型包含GET、POST、PUT等,就是对资源不同的操作方式。各种类型详细的区别这里不多介绍。在接口测试中使用的最频繁的就是GET和POST两种请求方式。我们一般掌握这两个请求就可以应对大多数的测试用例需求了。
响应:服务器收到客户端的请求后,就需要提供相应的响应结果给客户端。其中状态码是我们判定一次请求是否成功的依据。常见的状态码有 200(成功)、404(未发现资源)、403(资源禁止访问)等等。也是我们后续接口测试断言使用的判断依据之一({response.status_code})。
二、接口测试
2.1 接口含义
接口就是一个系统与外部系统,或者一个系统内部子系统之间,组件之间交互的节点。 1 拿现实类比,我们上下电梯,电梯的按钮就是一个接口。我们不需要关注我们按下那个按钮,电梯是如何工作的,我们只需要关心,按下按钮后,电梯能否到达相应的楼层。在程序员的世界里,广义上的接口也是指代一些经过其他程序员封装的函数(API)。比较直观的理解接口就是如同我上文提到的,是保存在远程主机上的动态/静态内容。
2.2 接口测试内容
一般来说,接口测试是指代web数据接口的测试。其原理就是通过GET或者POST等请求向远程主机发送数据包,然后获取反馈结果,将反馈结果与我们预期的结果进行比较,看是否符合要求。(模拟客户端向服务器发送请求,接收反馈,检查反馈数据是否符合预期)类似灰盒测试。
2.2.1 接口参数类型
- 字符串
- 数字
- 布尔
- 浮点数
- obj (python中字典)
- 列表 等等
2.2.2 接口测试的方式(用例设计)
- 等价类分析(属于黑盒测试)
- 正常的参数集合
- 异常的参数集合
- 边界值分析
- 业务规则边界
- 输入输出边界
- 覆盖所有必传参数
- 空参数
- 可选参数组合
- 接口性能测试
- 接口响应时间
- 并发数
- 服务器资源(内存、CPU、IO、网络等)
- 接口安全测试
- 加密
- 白名单
2.2.3 接口判定依据
- status code 200
- 返回消息体字段内容、类型和接口文档定义一致
2.2.4 cookie和session
- cookie: 存放在客户浏览器上,有失效时间
- session: 存放在服务器上
Randal E.Bryant / David O’Hallaron : Computer Systems: A Programmer’s Perspective (3rd Edition)(深入理解计算机系统)[M]机械工业出版社,2016-11. ↩︎