文章目录
接口测试
1.什么是接口测试
接口测试是测试系统组件间接口的一种测试。主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
主要包含接口功能测试、性能测试、稳定性测试、安全性测试等。
2.接口请求结构
请求协议:http协议、https协议、file(访问的是本地计算机上的资源,file://)、FTP协议(文件传输协议,主要用来访问共享主机的文件资源,ftp://)
IP地址:就是指提供接口的系统所部署的服务器地址
请求端口:标识了一个主机上进行通信的不同的应用程序,默认:http(80)、https(443)、FTP(21)、Tomcat(8080)、Oracle(1521)、Fiddler(8888)…
接口路径:接口请求路径名称
接口参数:传入接口的参数,跟在路径的 ? 后,用 & 连接多个参数
3.http请求方式
GET --- 通过请求URI得到资源
POST --- 用于添加新的内容
PUT --- 用于修改某个内容
DELETE --- 删除某个内容
CONNECT --- 用于代理进行传输,如使用SSL
OPTIONS --- 询问可以执行哪些方法
PATCH --- 部分文档更改
TRACE --- 用于远程诊断服务器
HEAD --- 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
PROPFIND (wedav) --- 查看属性
PROPPATCH (wedav) --- 设置属性
MKCOL (wedav) --- 创建集合(文件夹)
COPY (wedav) --- 拷贝
MOVE (wedav) --- 移动
LOCK (wedav) --- 加锁
UNLOCK (wedav) --- 解锁
4.http请求头
#Accept:image/gif.image/jpeg./ 客户端支持的响应类型
#Accept-Charset:GB2312 客户端支持的字符编码
#Accept-Language:zh-cn 客户端支持的语言
#Content-Length:348 请求内容的长度
#Content-Type:application/xxx 请求的与实体对应的MIME信息
#Connection:Keep-Alive 表示客户端与服务连接类型(长连接/短连接)
#Host:localhost 域名,表示请求的服务器网址
#User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0) 客户端使用的操作系统及版本、CPU类型、浏览器版本、浏览器引擎等
#Accept-Encoding:gzip,deflate. 客户端支持的编码格式
5.http请求体
有多种请求体格式:
- text格式(text/plain)
- JavaScript格式(application/javascript)
- json格式(application/json)
- xml格式(application/xml)
- html格式(text/html)
- 二进制格式(多用于上传文件)
- 字符串格式
6.接口文档
做接口测试需要开发提供接口文档,文档内容一般至少包含以下几点:
- 被测接口的地址
- 被测接口的功能
- 接口入参,以及对各个参数的说明(含义、取值)
- 接口返回参数,以及对各个参数的说明(含义、取值)
- 接口测试示例(给出请求url,请求体,返回的响应体的正确格式)
7.RESTful接口测试
1)什么是RESTful
是一种设计风格或开发规则,它基于 HTTP协议,通过对同一个接口使用不同的请求方式进行增删改查操作。
在 RESTful 架构中,浏览器使用 GET,POST,DELETE 和 PUT 四种请求方式分别对指定的同一个URL资源进行增删改查操作。
2)RESTful标准示例
- 当用“GET”方式时,只用来获取数据,成功了返回http状态码200
- 当用“POST”方式时,只用来创建数据,成功了返回http状态码201
- 当用“PUT”方式时,只用来修改数据,成功了返回http状态码203
- 当用“DELETE”方式时,只用来删除数据,成功了返回http状态码204
- 当请求发送失败,返回http状态码400
3)状态码
8.接口测试步骤
- 拿到接口的 url 地址
- 查看接口是用什么方式发送
- 添加请求头,请求体
- 发送请求并查看返回结果,校验返回结果是否正确
9.一个接口测试实例
以百度翻译的接口为例子:
请求地址:http://fanyi.baidu.com/v2transapi
请求方式:POST
请求参数:
- from — 翻译前的语言
- to — 翻译后的语言
- query — 翻译内容
使用 Postman 工具进行测试
- 输入发送方式"POST"
- 输入测试地址"http://fanyi.baidu.com/v2transapi"
- 输入下图红框参数
- 点击"send",查看返回结果,检查用例是否通过
10.接口测试用例设计
接口测试用例的设计与功能测试原理上基本一致,主要从功能、入参(请求头/请求体参数,单个参数/组合情况测试)、请求方法类型、接口安全性(sql注入、请求加密、请求拦截、接口防重入)、数据库数据查询/变更情况、是否存在跨域问题等方面入手设计用例。
设计用例时可以使用到用例设计的常用方法(如等价类划分法,边界值分析法等),在保证用例精简的同时也要保证覆盖率,这就需要在写用例的过程中不断积累经验了。
以下内容为 博客园—﹏猴子请来的救兵 创作,由于我还没有接口测试的实践经验,这里先借鉴一下前辈的接口用例管理方法,以后有了实践经验再补充。
- 使用Excel编写测试用例
- 一个模块对应一个Excel表
- 一个接口对应一张sheet表
- 表中一行对应一条测试用例
- 在开始要注明测试时需要的sql,如下图开始我会创建用户,用完了我会删除
11.接口测试自动化
1)基本流程
- 在测试工具中登记待测接口的报文格式;
- 编写测试用例,向用例中添加接口并进行配置关联;
- 准备测试数据并对测试数据进行参数化;
- 测试工具自动执行自动化测试案例;
- 测试工具比对预期结果和返回结果,验证案例是否执行成功(断言);
- 输出测试报告。
2)实现思路
接口自动化测试+生成报告思路:
在接口测试的开始阶段,用 POSTMAN 来手工测试接口,单一接口测试通过后,把测试用例 Copy 到 Jmeter 中,作为后续的定期执行的基础,在接口手工全部测完后,用 Jmeter+Ant+Jenkins 来定期检查每天的接口,并生成测试报告,再写一个脚本每天监控测试报告,如果出现了异常,发邮件报警。
3)覆盖率
由于接口测试一般只是对请求方式和参数进行操作,形式比较固定,所以接口自动化测试覆盖率一般需要达到90%甚至更高,最好能保证全部覆盖。要想如何保证高覆盖率,就要在用例设计时使用一些技巧:
- 对接口的各个参数,使用等价类、边界值等方法进行用例设计
- 对多个参数的可选、必选等进行组合测试
- 考虑接口测试的异常情况(缺少参数,网络延迟/丢包,数据库异常)
- 对于接口有依赖关系的情况,需要测试依赖的所有接口
覆盖率检查
借助 Jacoco+Ant 可以实现代码覆盖率的检测并生成覆盖率报告
Jacoco 是一个开源覆盖率工具,支持分支覆盖,基于 JAVA 实现,可嵌入到 Ant、Maven,引入了 Agent 模式,可以使用其 JavaAgent 技术监控 Java 程序等;
12.接口测试工具
接口测试常用的工具有以下几种:
- Apache JMeter:是一款基于 Java 的开源测试工具,主要应用于 WEB 应用程序的负载测试,同时也支持单元测试和接口测试;
- Postman:是一款功能强大的网页测试工具,支持 WEB API 和 HTTP 请求,能够发送任何类型的 HTTP 请求(GET、HEAD、POST、PUT等)。Postwomen 是与其近似的一款免费开源、轻量级测试工具;
- SoapUI,是一款用于 SOAP 和 REST 的开源 API 测试自动化框架,可以集成到 Eclipse 等开发工具中,支持用户二次开发;
- Robot Framework,是一款基于 Python3 的开源自动化测试框架,具有良好的可扩展性,支持关键字驱动,支持用户二次开发。
参考文章:
接口测试总结
接口自动化测试基本流程及测试思路