一、什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。(来自百度百科)
接口测试一般来说有两种:一种是程序内部的接口,一种是系统对外的接口。
- 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
- 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。
最常用的两种接口就是webservice接口和http API接口
- webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
- http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
接口测试的必要性:
1) 可以发现很多在页面上操作发现不了的bug
2) 检查系统的异常处理能力
3) 检查系统的安全性、稳定性
4) 前端随便变,接口测好了,后端不用变
二、接口测试的流程和规范
1. 接口测试的流程
接口测试流程和普通功能测试流程类似:
1) 需求评审,熟悉业务和需求;
2) 开发提供接口文档;
3) 编写接口测试用例;
4) 用例评审;
5) 提测后开始测试;
6) 提交测试报告;
2. 接口测试的规范性
接口测试也需要有相应的接口文档作为支撑,接口文档至少包括:
1) 接口说明;
2) 调用URL;
3) 请求方法(get/post);
4) 请求参数、参数类型、请求参数说明;
5) 返回参数说明;
三、接口测试的测试用例。
1、接口测试用例的设计
- 通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
- 参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
- 接口安全:
- 绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
- 绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
- 参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
- 密码安全规则,密码的复杂程度校验
- 异常验证:异常的,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
2、接口测试用例的模板
1) 项目------------------是哪个项目的
2) 模块----------------- 这个接口是属于哪个功能模块的
3) 用例id
4) 接口名称
5) 用例标题---------------------用例是干嘛的
6) 请求方式 -----------------------GET/POST
7) 请求url ------------------ url地址
8) 请求参数
9) 前置条件----------有依赖的时候,比如说要测登录失败3次的
10) 结果验证---------------预期结果
11) 请求报文
12) 返回报文
13) 测试结果 ---------------通过/失败
14) 测试人员
项目 | 模块 | 用例id | 用例描述 | 请求URL | 请求方式 | 请求数据 | 前置条件 | 逾期结果 | 请求报文 | 返回结果 | 测试结果 | 测试人员 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四、最常用的接口测试工具比较
我们如何进行接口的测试呢?由于接口是通过不同的协议来进行传输,所以首先确定接口基于何种协议(HTTP协议还是SOAP协议),然后通过工具或者代码来模拟接口请求的发送与接收。
目前常用的接口测试工具(由于本人接触范围有限,只是简单的列举了几种常用的接口测试工具):
- postman:基本功能免费,最简单的基于http接口的调试和测试工具;
- soapui:主要用于测试webservices接口的工具;
- jmeter:可以测试http API和webservices接口,同时也可以作为压力测试的工具。
- python:自己写代码,搭建自动化测试框架,来实现自动化。也是将来学习接口测试和自动化测试的主要方向。不要仅仅满足于现有工具的点点点。。。。
关于工具如何使用,包括以后如何写python代码,再另外开帖子分享。