目录
什么是接口?
接口协议的类型
接口测试是什么
HTTP接口的测试用例设计
HTTP接口的测试方法
什么是接口?
在面向对象编程中,接口是一个抽象的概念,用于定义类应该具有的方法和属性。一个类可以实现一个或多个接口,并且必须实现接口中定义的所有方法和属性。通过实现接口,类能够表达自己具有某些功能或能力。比如:当我在手机上打开某个APP应用,点击应用里的某个按钮,一般就会调用某个接口,向服务端发起HTTP请求,接口返回数据后,我们就能在应用里看到相应结果
接口协议的类型
基于 HTTP
协议的接口是我们日常测试工作当中接触最多的接口类型,除此之外,还有其他协议的接口,如常见的WebService
、WebSocket
、Dubbo
等最好也有所了解。
接口测试是什么
接口测试是对测试系统组件间接口进行测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系
调用一个接口A后,通常会触发下面的业务逻辑,这取决于接口A的具体功能和设计。一般来说,调用接口A可能会执行以下操作:
- 验证请求:接口A可能会对请求进行验证,以确保请求的合法性和有效性。这可能包括检查请求的参数、权限、身份验证等信息。
- 业务处理:一旦请求通过验证,接口A可能会执行相应的业务逻辑。这可能包括处理数据、调用其他接口、更新数据库等操作。
- 返回结果:接口A处理完业务逻辑后,把数据格式化成
Json
或者HTML
等返回给前端。这可能包括返回数据、状态码、错误信息等。
从上面我们可以得知,调用一个接口后,数据的流动情况。以上述业务逻辑为例,有两条最基本的数据流,分别是写入数据流和查询数据流 。
- 写入数据流:从外部参数传入调用接口后,经过业务处理,数据最终会存储到数据库或者缓存当中
- 查询数据流:从外部参数传入调用接口后,经过业务处理,查询数据库或者缓存,将查询到的数据从接口返回
所以在接口测试时,涉及数据库相关的逻辑,我们都需要去检查数据库或者缓存里的数据是否符合预期。
HTTP接口的测试用例设计
和功能测试一样,在进行接口测试前,需要进行接口的测试用例设计,用例设计也不是凭空想象,我们需要以相关文档为依据
- 功能测试用例:一般是根据产品需求文档PRD或者交互设计文档来进行设计
- 接口测试用例:一般是依据接口文档和技术方案来进行设计
一个接口文档的例子:
请求方式
Get
请求URL
/test/api/getlist
请求参数
参数名 | 是否必传 | 数据类型 | 说明
source_type Y int 来源:百度1;好看2;贴吧3
page Y int 页码
per_page Y int 每页数量
word N string 关键词
预期返回结果
{
"errno": 0,
"status": 0,
"msg": "success",
"time": 1637156975,
"duration": 0.01242208480835,
"requestid": 29535354
}
有了接口文档以后,我们就可以开始接口测试用例的设计,而接口测试用例设计的重点,在于功能性的业务逻辑检查和参数检查。可以从输入(请求)参数、接口业务逻辑处理、接口输出(返回结果) 三个方面来进行考虑
另外对于客户端功能测试的用例设计方法,如等价类和边界值,在接口测试用例设计对于设计输入参数的部分同样适用,如对于请求参数的有大小限制,运用边界值设计,我们可以分别取空、最小值、最小值-1、最大值、最大值+1来测试
以下是一个接口测试用力的例子:
接口业务逻辑处理的接口用例设计是重中之重,对于这方面的用例设计,除了仔细看接口文档,还需要我们详细阅读开发写的技术方案,在技术方案当中一般有程序流程图,数据流图或者时序图
用例除了正常的接口功能流程,接口业务逻辑异常场景也需要考虑,常见的异常场景是数据库连接超时、没有满足前置条件,如:某个接口需要先登录获取 sesssion,如果直接调用该接口应该给出相应提示
HTTP接口的测试方法
接口测试用例设计完毕后,我们就可以开始正式进行接口测试了,一般接口测试都是对单个接口按照接口用例逐一进行测试
而接口测试方法,最开始可以使用Postman等工具进行手工测试,然后我们可以用Python或者JAVA编写代码进行自动化测试,自动化测试的代码可以逐步完善形成我们的测试框架,在回归测试时解放双手,提高测试效率
后面会给大家带来自动化的教程,希望大家的多多关注我噢💕🤷♀️