一、什么是接口
接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
按照分类来说,最常用的两种接口是webservice接口和http api接口。
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都要通过工具才能进行调用,测试。
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
前端和后端的交互也是通过接口实现的。
二、什么是接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
三、接口测试流程
1.需求评审,熟悉业务和需求
2.开发提供接口文档
3.编写接口测试用例
4.用例评审
5.提测后开始测试
6.提交测试报告
四、测试依据----接口规范文档
即这个接口的使用文档。
接口文档至少包括:
1、接口说明
2、调用url
3、请求方法(getpost)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
五、怎么测接口
(1)怎么测接口-http接口
我们已经有了接口文档,就要根据接口文档来拼接参数调用接口,那么怎么调用呢?
接口请求报文拼接:
1、url?param=value¶m2=value
这种是最简单的一种,问号前面是请求url,后面是请求的参数名和参数值,多个参数用&来连接。例如https://api.douban.com/v2/book/search?q=小白
2、还有一种就是入参是json串的,那就不能拼接参数了,需要借助工具来完成比如postman。
*GET和POST请求:
如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。
1.Get请求只有请求头没有请求体。它的数据之间放在URL里面。Post请求是放在BODY里边。
2.以前技术不行的时候,Get请求数据有长度限制,post没有。现在都没有限制了。
3.Get请求不安全,post请求也不安全。只要通过抓包,post数据也可以看到。
4.一般get请求用来获取数据,post请求用来发送数据。
*HTTP状态码:
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
1.200
2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2.300
3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3.400
400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4.500
5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
(2)怎么测接口-webservice接口
webservice接口怎么测试呢,他不需要你在拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就可以看到这个webservice里面的所有接口,也有报文,直接填入参数调用,看返回结果就可以了。
天气预报wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl
六、通用接口用例设计:
(1)通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
(2)接口安全:
1.绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2.绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3.参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4.密码安全规则,密码的复杂程度校验
(3)异常验证:
根据必传非必传、参数类型、入参长度等内容设计。
总之,根据业务逻辑,即根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。
七、接口测试用例模板
咱们测试接口的话,肯定要写测试用例,写测试用例的话,就要有一个用例模板,那需要有哪些字段呢?
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员