编程测试相关整理(初)
什么是接口测试
接口测试是测试系统组件间接口的一种测试.
1.作用
主要用于检测外部系统与系统之间以及内部各个系统之间的交互点,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统的相互逻辑依赖关系等.
2.有哪些接口
(1) Webservice接口
走soap协议通过http传输,请求报文和返回报文都是xml格式,测试通过工具soapUI进行测试.
(2) HTTP api接口
走http传输协议,通过路径来区分调用的方法,最常用的是get和post请求. 请求报文都是 key-value字典形式的,返回报文一般都是json串.
3.接口测试的目的
(1) 通过测试,暴露问题
(2) 保证系统的正确和稳定性(以持续集成为手段)
(3)提高测试效率,降低产品维护成本
4.如何进行接口测试
可以从以下几个角度进行验证:
- 输入参数分析
- 接口逻辑分析
- 输出分析
1) 参数详解
-
参数类型(1) ----数值型(int,float,double等)
运用等价类,边界值,特殊数值(-1,0),数值类型最大值范围进行数值录入验证. -
参数类型(2) ----字符串类型
运用等价类,边界值,特殊字符,敏感字符,超长字符,空等进行录入验证. -
参数类型(3) ----日期类型
输入正常日期,非法日期,输入非日期格式字符 -
参数类型(4) ----数组或链表
运用等价类,边界值,合法成员,非法成员,重复id等输入验证 -
参数类型(5) ----参数安全性输入验证
sql注入,XSS攻击,越权访问等
验证方法
- 测试传递正确的参数,返回结果是否正确
- 参数组合,通过排列组合,或者正则分析用例设计方法,得出组合参数,验证返回结果
- 异常参数传递,测试接口对异常处理是否正确
2)接口业务逻辑分析详解
- 约束条件分析
比如: 已完成的问题不能修改 - 操作对象分析
比如: 无权限的用户不能越界操作等 - 状态转换分析
比如: 已通过状态的问题不能回退到待整改问题 - 时序分析
比如:
1.用户必须有效登录才能上传数据
2.新增问题上传,必须先 问题主记录上传,才能上传问题抄送人记录,不能跳过主记录就能上传从表记录(具体业务逻辑)
概括来说: 就是通过分析,得出需要验证的场景,验证接口逻辑处理是否正确
3)输出结果分析详解
接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况,很多值.
如果知道返回结果有很多种,就可以针对不同结果分别进行验证.
5.接口测试的实现过程
-
手动测试
(1)拿到接口定义文档
(2)编写接口测试用例
(3)准备接口测试
(4) 执行测试 -
自动化测试
(1)拿到接口定义文档
(2)编写接口场景用例
(3)根据用例编写脚本
(4) 准备测试数据
(5) 持续集成测试(jenkins)
6.接口测试的工具
-
手工测试
介入时间: 接口手工测试不依赖于界面,接口开发完便可以测试.
使用工具:手工测试一般使用fiddler,postman(谷歌浏览器工具),RESTClient,jmeter等工具测试.ps:推荐使用postman工具,使用简单,有各种记录留存,方便回溯,个性化设置(如各种url地址,参数等)
-
自动化测试
介入时间:自动化测试一般是等接口稳定以后,对接口主流程场景进行脚本化,现在做法是在每个迭代完成以后进行接口脚本补充.
使用工具: jmeter,postman,RFS+ReqyestsLibrary,Python+unitest+Request测试.
ps:以上工具各有优劣,meter,postman断言功能不够强大,RFS框架安装复杂,但封装的类库比较丰富,用例组织比较清晰. Python+unitest需要编写脚本代码,要有代码基础,学习成本比较高.
关于在测试过程中用到的测试用例,请参考我的另一篇测试用例的文章,
<<PHP测试用例概述及详解>>
这里可以详细了解测试用例的一些知识点.
结尾
写于11/22日质检组测试帅哥-红灵分享会