借助 Python 开源⽣生态打造企业级⾃自动化测试框架(HttpRunner)
演讲⼈人: 李李隆隆(debugtalk)
主题概要
1、背景介绍
2、HttpRunner 设计思路路
3、HttpRunner 核⼼心特性
4、HttpRunner 实践案例例
5、Q & A
1、背景介绍
背景介绍
1、业务⾼高速发展,需求迭代频繁
2、普遍具有功能回归测试、性能
测试、持续集成、线上监控等需求 成本⾼高
效率低
投⼊入产出⽐比低
背景介绍
⾃自动化测试 ?
基于 Python 的⾃自动化测试⽣生态
传统⾃自动化测试⽅方法普遍存在的问题:
⼯工具多 & 杂 学习成本⾼高 团队协作难 维护成本⾼高
背景介绍
背景介绍
⽬目标:提升投⼊入产出⽐比
少投⼊入 ⾼高收益
•⼯工具开发 & 维护
•学习使⽤用成本
•编写 & 录制测试⽤用例例
•测试⽤用例例管理理 & 维护
•实现⾃自动化回归测试
•性能测试脚本复⽤用
•兼具持续集成、线上监控
•辅助⼿手⼯工测试:⾃自定义⽣生成特定业务数据
2、HttpRunner 设计思路路
设计思路路
如何快速实现从0到1?
如何避免闭⻔门造⻋车?
如何兼具⾃自动化、性能测试、持续集成、线上监控?
如何保障⼯工具(框架)质量量?
如何实现协作管理理?
如何将框架设计得更更优雅?
设计思路路 - 如何快速实现从0到1?
充分复⽤用开源项⽬目
HttpRunner
明显优势:
• 减少开发量量
• 保障稳定性
• 降低学习成本
设计思路路 - 如何快速实现从0到1?
遵循⾏行行业标准
设计思路路 - 如何避免闭⻔门造⻋车?
博客驱动开发
拥抱开源⽣生态
设计思路路 - 如何兼具⾃自动化、性能测试、持续集成、线上监控?
⾃自动化
性能测试
持续集成 线上监控
⼀一次投⼊入,多处复⽤用
实现命令⾏行行(CLI)调⽤用
引⼊入并发机制
Custom Mock Server
httpbin.org by kennethreitz
Postman Echo services
测试驱动开发
开源社区反馈
Github issues
TesterHome
设计思路路 - 如何保障⼯工具质量量?
复⽤用 Requests interface
统⼀一测试⽤用例例描述形式(JSON/YAML)
JSON Schemas
设计思路路 - 如何实现协作管理理?
约定⼤大于配置
设计思路路 - 如何实现协作管理理?
信息量量等价
规范
简洁重复
迥异
设计思路路 - 如何实现协作管理理?
脚本与平台⽆无缝切换
统⼀一存储和管理理
平台服务化⼿手⼯工编写
⾃自动化平台录⼊入
设计思路路 - 如何将框架设计得更更优雅?
debugtalk.py
测试⽤用例例模板语⾔言(JSON/YAML)
参数化机制(parameters)
环境变量量管理理(.env)
测试⽤用例例分层管理理
借鉴优秀(开源)项⽬目
遵循 Unix 哲学“Write programs that do one thing and do it well.”“Write programs to work together.”
prepare
loader
parser
initializer
runner
report
设计思路路 - 如何将框架设计得更更优雅?
逻辑流程图
逻辑流程图
3、HttpRunner 核⼼心特性
HttpRunner 是什什么?
接⼝口⾃自动化测试⼯工具
简单易易⽤用 功能强⼤大
核⼼心特性
抓包录制 & ⽣生成⽤用例例 Postman 转换⽣生成⽤用例例 Swagger 转换⽣生成⽤用例例
YAML/JSON ⽤用例例格式
测试⽤用例例分层机制
数据驱动机制
测试⽤用例例分组执⾏行行控制 setup & teardown hooks 动态计算(debugtalk.py)
性能测试 CLI 调⽤用 可扩展测试报告(Jinja2)
JSON Schema
… 加载环境变量量(.env)
核⼼心特性 - 测试准备
HAR
har2case
postman2case
swagger2case
export
⾃自动化平台录⼊入/⼿手⼯工编写
录制⽣生成测试⽤用例例
核⼼心特性 - 测试脚本优化
变量量定义 variables
结果提取 extract
setup_hooks
teardown_hooks
函数调⽤用${func($a, 9)}
变量量引⽤用 $var
结果校验 validate
⽤用例例集全局定义
数据驱动 parameters
核⼼心特性 - 测试脚本优化
函数定义 debugtalk.py
核⼼心特性 - 测试执⾏行行
核⼼心特性 - 测试报告
核⼼心特性 - 性能测试
HttpRunner 还是什什么?
不不仅仅是⾃自动化测试⼯工具
通⽤用的⾃自动化测试解决⽅方案
融合最佳⼯工程实践
打造接⼝口⾃自动化测试⽣生态
基于 HttpRunner 的接⼝口测试平台:
• HttpRunnerManager
• FastRunner
• SECO
• testcenter
• ApiTestWeb
4、HttpRunner 实践案例例
实践案例例
整体架构图
⾃自动化测试平台
打通功能测试平台(TestRail)
性能测试平台
实践案例例 - 整体架构图
核⼼心组件开源
实践案例例 - ⾃自动化测试平台
在线编辑 & 查看
实践案例例 - ⾃自动化测试平台
在线调试接⼝口
实践案例例 - ⾃自动化测试平台
拖拽组装⽣生成测试场景
测试⽤用例例分层管理理
实践案例例 - 打通功能测试平台(TestRail)
关联功能测试⽤用例例和⾃自动化测试⽤用例例
⾃自动化率统计
实践案例例 - 打通功能测试平台(TestRail)
触发执⾏行行
查看执⾏行行结果
实践案例例 - 性能测试平台
查看性能测试任务对应的 ⾃自动化测试⽤用例例
⽐比例例权重配置
实践案例例 - 性能测试平台
智能加压
性能数据 Grafana
New Relic
THANK YOU
You can find me here:
•Blog: http://debugtalk.com
•GitHub: https://github.com/debugtalk
•微信公众号:DebugTalk
http://debugtalk.comhttps://github.com/debugtalk