一、接口测试介绍

接口是什么?

API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

程序内部接口:提供给系统内部方法与方法之间,模块与模块之间的交互接口,比如bbs系统,有登录模块,发帖模块等等,要发帖必须先登录,那么这两个模块为了交互就会抛出一个接口供内部系统进行调用。

系统对外接口:提供给外部系统交互的接口,比如要从别的网站或服务器上获取资源和信息(别人肯定不会把数据库共享给你),他会提供给你他们写好的方法来获取数据,你引用他提供的接口就能达到数据共享的目的。

接口有哪些?

HTTP 接口(RESTful):基于HTTP协议开发的接口,也是现在应用是最为广泛的。RESTful API也是基于HTTP协议的,它是一种设计风格,用不同的HTTP动词(GET、POST、DELETE、PUT等)来表达不同的请求。

RPC 接口:RPC技术是指远程过程调用,本质上是一种Client/Server模式,可以像调用本地方法一样去调用远程服务器上的方法,它支持多种协议(如:HTTP、TCP、UDP、自定协议)和多种数据传输方式(如:Json、XML、Binary、Protobuf等)。

Web Service 接口:Web Service其实是一种概念,我们可以将以WEB形式提供的服务称为Web Service,所以像RESTful、XML-RPC、SOAP等都可以当成是它的一种实现方式。它支持更复杂的对象,而HTTP接口更多的是传输字符串或者JSON文本。

接口测试是什么?

从两方面来看,接口+测试。

接口来看:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

测试来看:接口测试是集成测试,是功能测试,也可以包括性能测试和安全测试。

接口测试测什么?

单一接口的测试:接口的输入输出,数据合法性,异常处理。

多接口组合测试:业务逻辑,业务场景。

结构检查:
(1)检查返回值的结构是否正确,如是json类型还是xml类型的数据,
(2)字段名称是否正确等。

为什么要接口测试?

性价比:
接口测试可以获得较高的投资回报。

优势:
发现前端上发现不了的bug
检查系统的异常处理能力
检查系统的安全性,稳定性

二、怎么设计用例

通过性验证:按照接口文档上的参数正常传入,是否可以返回正确的结果。
参数测试:包括测试参数是否必选、参数组合、异常参数类型,以及如下图的根据参数类型的长度内容测试。

图片说明

业务测试:根据业务逻辑设计用例,包括单接口业务逻辑和多接口混合业务逻辑。单接口业务如用户为(非)管理员时登录,多接口混合业务如用户已删除后登录。

(特别提示:没工作的同学我给你们说下,在设计用例时,开发人员是会提供详细的接口文档的,你是根据开发同事提供的详细接口文档来进行用例设计以及接口测试的,所有说并没有你想象的那么难,我以前觉得可难了,其实就是那么回事,所有不要有畏难心理。
下面是rpc接口文档中的一个例子,不同的接口的接口文档格式不相同)

// 请求
curl -X GET localhost:8080

// 结果
{
"jsonrpc": "2.0",
"code": -600,
"message": "测试用例"
}

接口用例设计之安全用例思路

1)绕过验证,比如购买了一个商品,它的价格是300元,那我在提交订单的时候,我把这个商品的价格改成-3元,后端如果没有做验证,那是不是我的余额还要增加?

2)绕过身份权限,比如修改商品信息的接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他卖家能不能成功?

3)参数是否加密,比如说登录接口,用户名和密码是不是加密,如果不加密,别人拦截你的请求,就能获取到你的信息了,加密规则是否容易破解

接口测试用例模版

用例大概包括如下字段