可测试性:软件研发的支点
如果无法正常显示,请先停止浏览器的去广告插件。
1. 可测试性:软件研发的支点
陈飞
2. 讲师简介
✓ 独立敏捷交流,OKR教练
✓ 师从《敏捷宣言》联合作者Arie van Bennekum
✓ 微软特聘软件测试和项目管理培训讲师
请插入
您的照片
✓ 国际一线对冲基金Pine River Capital Management
担任QA Manager/VP
✓ 国内某大型金融企业任职PMO经理
✓ 多家金融企业外部敏捷教练
陈飞
敏捷教练
✓ Atlassian中国用户社区Leader,Jira/Confluence专家
✓ 敏捷社区“破马张飞” 创始人之一
✓ OKR社区 核心成员
ee.msup.com.cn
3. 目录
自动化测试:永远的痛
可测试性:自动化测试的奇点
重拾可测试性
如何构建可测试性
可测试性的未来
ee.msup.com.cn
4. 摘要
• 为什么敏捷、DevOps和工程效率在实践中屡屡碰壁?
• 可测试性是软件工程中非常重要,但是又常常被忽视的一部分。
• 分享者通过一系列案例结合自己在软件研发行业二十年的实践经验,
为大家幽默风趣的介绍可测试性的意义、历史沿革、基本概念以及
在实践工作中的初步引用。
• 希望能帮助听众快速提高软件研发的实践水平。
ee.msup.com.cn
5. (自动化)测试是永远的痛
ee.msup.com.cn
6. (自动化)测试是永远的痛
研发效能
敏捷
(自动化)测试
ee.msup.com.cn
DevOps
7. 真假Scrum
ee.msup.com.cn
8. DevOps的全程都是测试
ee.msup.com.cn
9. 可测试性:自动化测试的奇点
测试环境难以复
数据准备时间长
制
API测试,不好找
到分层,耦合度
太高,缺少文档,
难以验证结果
UI测试找不到控
件,界面流程变
化剧烈
ee.msup.com.cn
10. 重拾可测试性
“软件可测试性就是[计算机程序]可以被测试的简
单程度”
Jeffrey Voas
• “ 软件组件的可测试性或应用程序的可测试性
被视为测试组件或应用程序时遇到的困难程度
的衡量标准 ”
• “ 软件可测试性是指选择输入以满足特定结构
测试标准(例如分支覆盖)的轻松性 ”
• “ 预测在测试过程中检测到现有故障的可能性 ”
ee.msup.com.cn
11. 重拾可测试性
ee.msup.com.cn
12. 微软的SOCK可测试性模型
Simple
Observable
Control
Knowledge
ee.msup.com.cn
• 简单:简单的组件和应用测试测试起来更容易
(而且花费也更低)
• 可见:内部结构和数据的可见性可以让测试程
序准确地判断测试是否通过。
• 控制:如果一个应用程序有阈值,能够设置和
重新设置那些阈值可以简化测试。
• 知识:通过参考文档(需求规格说明书、帮助
文件等)测试人员可以确保结果的正确性。
13. 真实案例
背景:TTS 语音合成
问题:如何测试断句?
下雨天留客天留我不留
下雨/天留客/天留/我不留
下雨天/留客天/留我不/留
ee.msup.com.cn
14. 构建可测试性:需求
需求的可测试性:
用户故事
用户故事的推荐格式:
作为一个<角色>,
我想要<活动>,
以便于<商业价值>
ee.msup.com.cn
一个好的用户故事应该
遵循INVEST原则:
独立性
(Independent)
可协商性
(Negotiable)
有价值(Valuable)
可以估算性
(Estimable)
短小(Small)
可测试性(Testable)
15. 构建可测试性:需求
需求的可测试性:BDD
Given-When-Then模型
•
Given:给定条件
•
When:触发事件
•
Then:期望结果
ee.msup.com.cn
16. 构建可测试性:始于架构
系统架构设计:横向分层,纵向分业务
基本原则:高内聚,低耦合
每层、每个业务都考虑如何测试
理论上微服务架构天然拥有更好的可测试性
ee.msup.com.cn
17. 构建可测试性:环境与数据
从一开始就考虑测试环境的快速搭建与复制
技术:脚本化、虚拟化
案例:Xblob–mini Xbox Live
SaaS服务:沙箱与公共测试环境
容器化:直接发布Dock Imange
从一开始就考虑测试数据的快速搭建与复制
数据架构:分层、提供业务级接口
数据快速生成、脱敏
数据集分层设计,最小数据集→全量数据集
ee.msup.com.cn
18. 构建可测试性:人是决定性因素
ee.msup.com.cn
19. 未来对可测试性的挑战:
• AI等不确定性场景
• 大数据始终是挑战
• 5G物联网设备、智能电车的仿真
• 区块链
• 元宇宙
ee.msup.com.cn
20. 总结
质量是奢侈品
可测试性是奢侈品中的奢侈品
用户水平提高,质量要求才会提高
ee.msup.com.cn
21. 关注msup公众号
获取更多工程效能实践案例