自动化测试接口测试的具体内容和流程
Posted 黑黑白白君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试接口测试的具体内容和流程相关的知识,希望对你有一定的参考价值。
相关文档:
什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
- 测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
1)后端接口测试内容:
1.1 业务功能测试
- 正常场景
- 异常场景
1.2 边界分析测试
- 业务规则边界分析
- 输入输出参数边界分析:
- 覆盖所有的必选参数
- 组合可选参数
- 参数有、无或为null
- 参数的顺序、个数、类型
- 参数类型数值大小、输入的数值范围
- 参数字串长短,null-max-(max+1)
- 参数包含特殊字符
1.3 参数组合测试
1.4 异常情况测试
- 幂等(重复提交)
- 并发测试(并发提交)
- 事务测试(事务中断)
- 分布式测试(多机环境)
- 环境异常
- 大数据量测试:
- 同时处理大批数据的测试
- DB数据量很大时,测试DB操作
1.5 性能测试
- 响应时间
- 吞吐量
- 并发数
- 服务器资源使用率:
- CPU
- 内存
- IO
- Network
1.6 安全测试
- 权限验证
- 敏感信息是否加密:
- 前后端数据传输是否加密
- 日志信息是否加密
- 批量抽奖
- SQL注入
*接口测试的重点:
- 检查接口返回的数据是否与预期结果一致。
- 检查接口的容错性,假如传递数据的类型错误时是否可以处理。
- 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
- 接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。
- 接口的安全性,外部调用的接口尤为重要。
2)接口测试流程
一般情况下,由于项目前后调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送和接收。
2.1 开发接口测试案例的整体方案
- 分析出测试需求,并拿到开发提供的接口说明文档。
- 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点。
- 和开发一起对接口测试案例进行评审。
- 结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件。
- 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。
*做好接口测试的前提:
1、系统化的接口文档
传统的接口文档,一般采用word或wiki等系统来记录,从单次使用上似乎比较简单,因为大家会更习惯这样的操作,但这种形式存在比较大的问题:
- 接口文档非标准化,无法直接与接口测试工具接口使用
- 接口维护困难,接口有变化时比较难标识清楚,沟通成本很高
系统化接口文档,例如rap(淘宝分源的一个系统),具备接口维护标准化、版本化管理、MOCK测试等功能;对标准化的接口内容做二次开发,可以直接导出Soapui等工具使用的格式,直接导入工具中使用,有以下好处:
- 接口测试时不再需要手工输入相关字段,节省时间成本
- 版本化管理,能够清晰的知道哪些接口有变化
2、标准化的接口规范
- 按接口提供方为单位进行首次划分,按接口使用方进行二次划分,再按业务模块进行细分,分类原则根据内容多少进行优化,不需要固定,如本身接口较少就没有必要分得过细,较多时就需要多划分模块。
- 按接口链接URL做为唯一,不同的接口参数做为接口变量,接口有参数变更时在原来接口上进行维护,而不是新增加接口。
- 为接口增加版本号,方便清楚哪些接口本次有变更,易于维护用例。
2.2 接口测试环境准备
*接口测试常用工具:
JMeter
- JMeter是Apache组织开发的基于Java的压力测试工具,能够将请求转换为脚本来实现,并允许使用正则表达式创建断言来对请求返回结果进行判断,具备接口测试功能和性能的能力。
SOAPUI
- SoapUI是一个完整的自动化测试解决方案。
- 支持SOAP和REST的Web服务,JMS企业消息层,数据库,丰富的互联网应用,等等。
PostMan
- Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,具备Fiddler\\httpwatch之类的工具调试请求的功能,同时具备接口管理功能,官网提升脚本保存同步功能,支持接口导入导出。
Loadrunner
- HP公司的性能测试工具,使用C语言或JAVA语言编写脚本,易学易用
2.3 创建工程
-
用Postman创建一个简单的测试案例
-
用Jmeter创建一个简单的测试案例
- 暂未梳理,可先参考:https://www.cnblogs.com/zoraliu66/p/6743126.html
复杂测试案例均在此基础上扩展完成。
使用Jmeter工具开发的接口测试案例:
- 一个子系统建议放在同一个 “测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。
- 比较独立的接口,可以统一放在一个线程组内,顺序完成测试。
流程性接口的测试:
- 如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。
2.4 接口测试持续集成
对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。
接口自动化适用场景:
-
测试前置、开发自测:
一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。
- 开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。
-
回归测试:
开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来。
- 这些用于回归的接口测试案例需要配置到持续集成平台自动运行。
目前接口自动化主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:
- 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。
- 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等。
- 问题定位:报错信息、日志更精准,方便问题复现与定位。
- 结果校验:加强自动化校验能力,如数据库信息校验。
- 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
- 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
2.5 接口测试质量评估标准
- 业务功能覆盖是否完整
- 业务规则覆盖是否完整
- 参数验证是否达到要求(边界、业务规则)
- 接口异常场景覆盖是否完整
- 接口覆盖率是否达到要求
- 代码覆盖率是否达到要求
- 性能指标是否满足要求
- 安全指标是否满足要求
【部分内容参考自】
- 什么是接口测试?为什么要做接口测试?:https://www.cnblogs.com/zoraliu66/p/6743126.html
- 接口自动化:https://blog.csdn.net/lb245557472/article/details/73468014?locationNum=3&fps=1
以上是关于自动化测试接口测试的具体内容和流程的主要内容,如果未能解决你的问题,请参考以下文章