接口测试基础
一、 什么是接口,接口有哪些分类
接口一般来说有两种,程序内部接口和系统对外接口。程序内部的接口是用于一个系统内方法与方法,模块与模块之间的交互,程序内部跑出的接口;系统对外的接口主要用于共享数据,提供方法给其它系统调用。
接口分类:HTTP接口、webservice接口。
HTTP api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
二、 什么是接口测试、接口测试的必要性
接口测试实际就是黑盒测试,基本的测试思路是通过输入输出判断系统的逻辑,可以更早的发现系统的bug,提高测试效率;其实接口测试就和普通功能测试没什么区别,区别就是功能测试是在页面上点点点,在页面上输入值,提交数据看结果,而接口测试没有页面,通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果。
接口测试相对更加简单,不会受web页面的干扰,比较容易实现自动化持续集成,减少人工回归测试的成本,缩短测试周期;由于前端与后台系统开发一般是分离的,只依赖前端进行测试已经完全不能满足系统的安全要求,需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。其次一些涉及用户隐私的也需要前后台同时进行加密验证,从而进一步提高系统的质量。
接口测试的必要性:1、可以发现很多在页面上操作发现不了的bug;2、检查系统的异常处理能力;3、检查系统的安全性、稳定性;4、前端随便变,接口测好了,后端不用变
三、 接口测试流程
1、 需求评审,熟悉业务和需求
2、 开发提供接口文档
3、 编写接口测试用例
4、 用例评审
5、 提测后开始测试
6、 提交测试报告
四、 接口规范文档
接口规范文档也就是接口的使用文档,是进行接口测试的依据。
接口文档至少包括:
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
eg:
登录接口
- 请求URL http://api.nnzhp.cn/api/user/login
- 请求方式 post
- 请求参数 参数为key-value形式
参数名 必选 类型 说明
username 是 string 用户名
passwd 是 string 密码
登陆用户名:niuhanyang
密码:aA123456
返回参数说明
参数名 类型 说明
error_code int 错误编码,0为操作成功
login_info object 登录对象信息
userId int 用户id
sign string 签名
login_time string 登录时间
五、 接口测试用例设计
接口测试实际就是黑盒测试,当然设计用例的时候也能遵循黑盒测试设计用例的规则;
基本功能测试(业务):符合业务逻辑和接口使用场景的用例;
边界值测试:业务规则边界值,输入输出参数的边界值分析,覆盖所有必选参数,组合可选参数,参数有、无、null,参数的顺序、个数、类型,参数类型数值大小,输入的位数限制,参数包含特殊字符;
参数组合测试:各必填参数、非必填参数组合;
异常情况测试:重复提交、并发测试、环境异常、0数据、大量数据;
安全测试:敏感信息加密测试(前端传输是否加密,后台日志信息是否加密)、sql注入;
接口测试用例模板:
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员
六、接口测试常用工具
1、切换host工具:SwithHosts
2、抓包: Charles 、fiddler、wireshark
3、调试工具:firebug等
4、http测试工具:Postman、HttpRequest、火狐JsonHandle
5、webservice接口测试工具:soapUI
6、性能测试工具:LoadRunner、Apache JMeter