前言
文档目的
接口自动化测试方案是为辣妈系统接口测试使用自动化框架,实现以接口自动化测试为主的目标而编写的技术和实施方案。 文档的主要目的是提供接口自动化测试的技术方案、实施内容、实施步骤,以及关键的技术实现手段等。
名词术语
- Httprunner:是大疆公司研发的一款接口自动化框架,基于http协议
- Hrun:httprunner框架下的执行接口测试的启动命令
- Validate:断言,来验证返回的数据是否和传入的参数一致
接口自动化测试实施原则
实施原则
接口自动化测试过程中工具不可能完成所有的工作,工具仍然是测试过程中的辅助手段。对于工具主要是解决测试过程中的重复性的工作任务。另外实施自动化的测试,对被测系统也有更高的要求,总结接口自动化测试的实施原则如下:
- 使用自动化工具测试,要求被测系统开发比较稳定,较少发生功能的变更;
- 在自动化测试脚本编写前,被测系统的接口相对稳定;
- 接口测试自动化要求测试数据环境中的测试数据相对独立,满足完全把控数据测试的要求;
- 要求被测系统的版本运行比较稳定,较少发生测试中止的情况;
- 完善的、可复用的数据参数,脚本库是一个长期的积累过程。
实施接口自动化测试的优缺点
接口的自动化测试与手工测试虽然有很多局限,但是同样有其优势,随着自动化测试技术和工具的发展,对于比较稳定的产品的功能测试中,自动化测试占有越来越重要的地位。使用接口测试可以加快整个测试的过程,在产品的版本发布之后,可以重复使用测试脚本进行测试,具体来说: 自动化测试的优点:
- 提高测试效率,降低测试成本;
- 重复性强的手工劳动独立用自动化实现;
- 快速的回归测试,提高新版本发布的速度和质量;
- 避免人工测试容易犯的错误,如:错误测试,漏测试,多测试等;
- 很容易就实现并发性测试;
- 测试可重用,采用脚本和数据可以很容易实现重用。
自动化测试的缺点:
- 规范的测试管理,测试需求,测试用例;
- 不能创造性发现测试脚本没有设计的缺陷;
- 高质量的测试用例;
- 高素质的自动化测试工程师;
- 对测试环境要求比较严格;
- 测试需求变化可能引起大量的测试用例,自动测试脚本的修改、维护。
实施范围和目标
实施范围
- 工具范围:目前考虑使用svn作为远程代码仓库,httprunner作为主要框架,jenkins作为持续集成工具
- 系统范围:定位在测试中心基础测试环境中的系统;
- 测试阶段的范围:新功能测试、回归测试、以及上线后的功能回归测试
实施目标
- 接口自动化测试系统应该能完成集成测试、以及上线后功能的回归测试;
- 接口自动化测试方案对目前大部分应用系统都可以进行测试;
- 实现自动化脚本编写、自动化脚本执行、自动化缺陷报告和管理。
总体实施策略
- 首先从目前系统中选择适合自动化测试的项目和功能;
- 其次确定接口自动化测试的阶段;
- 接口功能组合成为一个完整的系统测试
技术方案实施内容
Httprunner的特性和优势
- 继承?Requests?的全部特性,轻松实现 HTTP(S) 的各种测试需求
- 采用?YAML/JSON?的形式描述测试场景,保障测试用例描述的统一性和可维护性
- 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
- 支持完善的测试用例分层机制,充分实现测试用例的复用
- 测试前后支持完善的 hook 机制
- 响应结果支持丰富的校验机制
- 基于 HAR 实现接口录制和用例生成功能(har2case)
- 结合?Locust?框架,无需额外的工作即可实现分布式性能测试
- 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
- 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
- 极强的可扩展性,轻松实现二次开发和 Web 平台化
Httprunner 的工作原理
- 明确的测试目的(achieve a particular software testing objective)
- 明确的输入(inputs)
- 明确的运行环境(execution conditions)
- 明确的测试步骤描述(testing procedure)
- 明确的预期结果(expected results)
第一步:环境搭建
- 在服务器上安装python环境
- 执行pip install httprunner
- 运行如下命令,若正常显示版本号,则说明 HttpRunner 安装成功
$ hrun -V 2.0.2 $ har2case -V 0.2.0
第二步:编写脚本
Name: api的描述 Base_url:基础网址 Request:http的请求形式 Method:请求方式 Url:拼接的接口名 Json:传参 Validate:断言
?
第三步:执行测试
执行命令: hrun + api(path)
Jenkins 的安装部署与配置
第一步:代码上传svn
第二步:jenkins部署
Jenkins新建工程
?
Jenkins的工程描述
?
?
Jenkins的代码配置
?
选择构建前删除工作区
?
执行windows批处理命令
?
测试报告的css渲染
?
测试报告的配置
?
第三步:查看测试报告
打开项目目录,点击HTML_Report
?
选择对应时间戳下的.html文件
?
测试报告的内容
Request
?
?
?
Validators
Staristics
?
?
实施管理建议
实施策略建议
策略有如下建议:
- 从底层往上的数据覆盖,解决测试数据的依赖从属关系,把控整个接口测试数据的正确性
- 测试用例的评审覆盖
- 准备对应的api文档
人员配置
在自动化测试实施过程中,需要以下的人员配置:
- 测试经理:负责测试用例的覆盖评审
- 开发人员:接口文档的编写和沟通
- 脚本编写人员:需要有http协议的基础,以及python语言的基础
实施计划
阶段 | 时间 | 阶段关键任务/里程碑目标 | 计划准备阶段 | | 确定项目的目标和范围; 确定项目的实施计划; 确定项目实施的人员需求; 接口自动化测试方案通过评审。 | 环境搭建和准备 | | 搭建自动化测试环境; 熟悉和了解被测系统的功能需求。 | 测试需求分析阶段 | | 分析被测系统需求; 分析测试系统的数据需求; 完成测试数据需求,初步完成主要的测试数据。 | 测试脚本开发 | | 完成脚本框架; 完成被测功能的脚本的编写和调试; 完成被测脚本的参数设置和测试数据; 发布测试脚本基线版本。 | 测试执行 | | 测试执行、报告问题。 | 测试分析总结 | | 测试结果; 测试总结。 |
|