自动化测试工程效能实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 自动化测试工程效能实践
针对接口自动化测试和服务端代码的解决方案
司文
《敏捷测试高效实践》作者
ECUG Meetup 第 3 期
2. 个人简介
司文
16 年 IT 工作经验( 2 年开发、 14 年测试)
曾在外企( HP )工作过 8 年
银行工作 5 年,技术经理
精通自动化测试、敏捷测试、探索测试、测试工具平台开发等工作
在 2021 年和朋友出版《敏捷测试高效实践 测试架构师成长记》一书
个人微信
ECUG Meetup 第 3 期
3. 为什么来听分享
学习技术、提高认知
News
No….
ECUG Meetup 第 3 期
4. 01 测试领域的工程效能
C
ECUG Meetup 第 3 期
目
录
02 API自动化测试解决方案
03 服务端代码染色覆盖率
04 评估成果与价值
5. 测试领域的工程效能
ECUG Meetup 第 3 期
6. 软件开发过程
产品
高效
低效
ECUG Meetup 第 3 期
开发
测试
运维
上线
7. 测试领域的工程效能
UI 自动化
MOCK 工具
混沌工程
API 自动化
数据服务
精准测试
代码染色
AI 赋能测试
本质
成本
ECUG Meetup 第 3 期
效率
…
8. 问题
自动化测试
是一种技术手段
与
交付质量
ECUG Meetup 第 3 期
的关系是什么?
9. 测试的痛点
计划
实际
0
自动化测试脚本
产品需求
开发
产品需求
测试
开发
测试
上线
上线
测试时间被压缩
week 1
week 2
测试执行
0
自动化测试脚本
week 1
week 2
测试执行
自动化测试总迟到
ECUG Meetup 第 3 期
10. API自动化测试解决方案
ECUG Meetup 第 3 期
11. 自动化测试的灵魂三问
1
2
3
ECUG Meetup 第 3 期
你是不是花了挺久的时间写自动化测试脚本?
时间又久
自动化测试执行失败了,你首先想到的是什么?
发现缺陷又少
砍掉自动化测试行不行?
还不得不做
12. 恶性循环
交付太晚
来不及测完(风险后置)
自动化测试时间不足
来不及写 维护困难
质量差 死胡同
线上问题 反复沟通 加班 复盘…
ECUG Meetup 第 3 期
未雨绸缪
13. API 自动化测试面临的问题
能不能一键生成自动化测试脚本?
API接口
开发
ECUG Meetup 第 3 期
执行
脚本
测试
报告
14. 测试领域生成自动化测试脚本的方案
1
2
3
ECUG Meetup 第 3 期
人工编写,工具辅助
借助请求日志,工具生成
AI 算法,路径矩阵 + n 阶随机游走 ……
15. 自动化脚本结构拆解
TestProject
接 口 层
接
层
TestApi.py
接口层
API接口定义,包含URL、入参、方法
支持环境URL托管切换
业务逻辑层
TestFlow.py
逻辑层
业务逻辑、上下文参数赋值、校验逻辑等
用例组织层
TestCase.py
用例层
用例步骤组织、执行环境参数等
数据驱动层
TestCase.csv
数据层
用例数据输入、优先级调整、用例描述等
ECUG Meetup 第 3 期
16. 极速生成自动化测试脚本的解决方案
文件仓库
devicexxx
deviceyyy
TestApi.py TestApi.py
TestFlow.py TestFlow.py
TestCase.py TestCase.py
TestCase.csv TestCase.csv
…
服务端
解析封装信息
处理报文结构
生成脚本文件
获取文件列表及下载地址
标记机器名:devicexxx 标记机器名:devicexxx
发送接口信息 查询最新脚本并下载
(接口地址、报文头、请求报文、响应报文…)
TestProject
接口层
PyCharm
配置命令
执行接口测试
1
ECUG Meetup 第 3 期
点击同步脚本
测试
2
自动化测试插件
TestApi.py
业务逻辑层 TestFlow.py
用例组织层 TestCase.py
数据驱动层 TestCase.csv
17. 极速生成自动化测试脚本的解决方案
调试接口
PyCharm
断言 单接口脚本
数据参数 数据驱动文件
多选接口 场景接口脚本
编排传参 数据驱动文件
自动化测试插件
接口列表
1 API A
2 API B
3 API C
4 API D
5 API E
… …
ECUG Meetup 第 3 期
执行
执行
18. 使用场景有哪些?
所谓全场景是指在手工测试的事前、事中、事后,
我们的服务都可以利用尽可能多的信息生成合适的自动化脚本。
01 02 03
事前 事中 事后
通过API接口契约生成自 通过Fiddler工具的抓包信 动化测试脚本 息,一边手工测试,一边 通过Postman工具的历
史请求记录,通过工具
生成自动化测试脚本
生成自动化测试脚本
ECUG Meetup 第 3 期
19. 解决方案成果
原来
≈
3 小时
设计用例
现在
准备数据
≈ 10 分 钟
生成自动化测试脚本工具
ECUG Meetup 第 3 期
10 个 API 场景脚本
脚本编写调试
维护
10 个 API 场景脚本
突破效率人力上限
20. 答案
脚本生成
是一款工具
赋能
自动化测试
赋能
交付质量
ECUG Meetup 第 3 期
是一种技术手段
21. 服务端代码染色覆盖率
ECUG Meetup 第 3 期
22. 交付测试时的痛点
自动生成 API 自动化测试脚本后,效率提升了
但是,上线还是有问题
信息不对称导致的生产问题
漏了、忘了、没想到、疏忽了、逻辑盲区、历史原因、夹带私货
公开 透明
打破信息差
靠工具 代码是骗不了人的
测试过的代码覆盖率
ECUG Meetup 第 3 期
代码染色
23. 捋清思路 - 覆盖率
ECUG Meetup 第 3 期
单测覆盖率 需求覆盖率
测试用例覆盖率 缺陷覆盖率
自动化测试覆盖率 代码覆盖率
24. 希望解决的问题
1
我想知道,这次版本新增 / 修改的代码,都测试过了吗?
避免漏测
2
上线前的回归,怎么弄清楚需要测试的范围?
避免漏测
ECUG Meetup 第 3 期
25. 测试执行的代码覆盖率
测试行为
交付代码
待测系统
测试工程师
评审
评审
补充测试用例
ECUG Meetup 第 3 期
未测试
√
-
√
-
开发工程师
26. 技术实现
构建
收集
计算
结果
手工/自动化 执行
代码染色覆盖率平台
Git 仓库
数据上传
API
待测应用接口
id
exec_no_1
测试
CI/CD
构建
平台
应用
部署
创建
执行ID
分类
合并
开发
计算
报告
自动化测试
自动化测试
脚本
覆盖率结果
拉取源码
准备
测试
ECUG Meetup 第 3 期
覆盖率报告
测试
Git 仓库
产出
测试
27. 问题
代码覆盖率是不是越高越好?
ECUG Meetup 第 3 期
28. 覆盖率工具的三点秘籍
1
核心代码覆盖率
bean
√
质量门禁
3
关注未覆盖的数据
常规覆盖率 非 Try Catch
版本 Diff 覆盖率 非 异常判断
controller
dao
√
√
2
service
business
config
utils
ECUG Meetup 第 3 期
30% → 38% → 45% → 60% → 80%
同自己作比较,一次比一次好
&
未覆盖的代码
29. 覆盖率工具的两个坑
已染色部分,无法判断是否漏测
已执行过
用例 A
用例 B
执行
测试通过
多人协作场景
小张
小李
小王
执行结果
用例 A
用例 B
执行
ECUG Meetup 第 3 期
谁测的不知道 …
30. 问题
代码覆盖率还能解决什么问题?
ECUG Meetup 第 3 期
31. 评估成果与价值
ECUG Meetup 第 3 期
32. 评估成果与价值
week 1
0
自动化测试脚本
5000 个 手工测试用例
week 2
测试执行
设计
数据
脚本编写
维护
1000 个 自动化测试用例
?
10 w 行代码
3小时 / 10 个API场景脚本
5000 手工测试用例
1000 自动化测试用例
0
week 1
week 2
设计、数据、脚本编写、维护
10分钟 / 10 个API场景脚本
迭代流程优化
ECUG Meetup 第 3 期
工作效率提升
测试行为
补充/优化
用例
10 w 行代码
7 w 行代码未测试
1 w 行核心逻辑未测试
此次上线版本Diff 2000行未测试
测试质量提高
33. 广告
特色:
• 漫画式的叙述方式
• 测试小工转型架构师的成长历程
• 三款测试创新工具
• 敏捷开发模式与测试工作创新
JD
ECUG Meetup 第 3 期
当当
个人微信
34. Q&A
JD
ECUG Meetup 第 3 期
当当
个人微信