写在前面

测试金字塔曾经神一样的存在,很多人认为制定测试策略知道测试金字塔就够了。 真的是这样吗?今天,利用这篇短文跟大家聊聊测试金字塔。

如果你恰好知道测试金字塔,也把它奉为测试策略的指导方针,那么这篇文章正好适合你。 如果你还不了解测试金字塔,但是很关注质量和测试,那么不管你是什么角色,这篇文章也适合你。

Most people know about the the Test Pyramid due to Mike Cohn, when he described it in his 2009 book Succeeding with Agile. In the book he refers to it as the “Test Automation Pyramid”, but in use it’s generally referred to as just the “test pyramid”. He originally drew it in conversation with Lisa Crispin in 2003-4 and described it at a scrum gathering in 2004. Jason Huggins independently came up with the same idea around 2006.

测试金字塔最早由Mike Cohn提出,Martin Fowler在文章TestPyramid中有详细介绍。如果你对测试金字塔不了解,可以先看Martin的文章。

总结说来,测试金字塔是自动化测试分层覆盖情况的一个参考模型,其特点是:

  • 金字塔底层的测试是最接近代码的测试——单元测试,编写成本低、执行速度快、定位问题也更准确,但是离业务层较远,不能很好的体现业务价值;
  • 金字塔顶层的测试是UI层的自动化测试,这一层离业务近,能够体现业务流程覆盖情况,但是编写成本较高、执行速度较慢、不够稳定、定位问题也更难;
  • 而中间层的集成测试,则是成本和价值都是处于居中位置。

因此,金字塔建议底层单元测试占比应该最多,而顶层UI层测试占比较少,中间层的集成测试居中,整体呈现金字塔结构。

这适合比较理想的项目,而实际项目中可能有很多不适合测试金字塔的情形存在:

###1. 微服务架构的系统
微服务系统服务间的依赖关系和连通性,是微服务测试的关键,相对而言,服务内部出错可能性小。因此,对于微服务架构下的自动化测试应该是蜂巢结构或纺锤形,也就是中间层服务间的集成测试最多,底层的单元测试和上层的UI测试都相对较少。

2. 遗留系统改造

为了支撑新型业务形态,越来越多的传统行业在向数字化转型,面临的一个问题是需要对大型业务复杂的遗留系统进行改造。这种情况,一般不适宜写大量的单元测试,技术和能力可能都不允许,而应该从顶层业务开始梳理,先增加业务层的功能测试作为基本保障,同时编写API集成测试和适量的单元测试。整个自动化测试覆盖情况,有可能是呈现为甜筒冰淇淋结构形式。

3. 人员技能不匹配的团队

有的团队可能开发人员忙着开发不参与写测试,只有测试人员来负责写测试,而测试人员的要写单元测试还得熟悉底层代码实现,可能比较困难,通常也只能是写更多的UI测试。

当然,这不是一个健康的状态,虽然客观存在,但是不提倡。

4. 测试策略不能仅依靠测试金字塔

把测试金字塔当做测试策略制定的唯一参考规范,是不合适的。别说是只关注测试金字塔,就是只关注测试金字塔背后的分层策略,也是远远不够的。
测试分层理论更多的是对自动化测试分层的指导,而测试策略需要考虑和关注的因素则比这个要多得多,比如:业务风险、质量目标、交付周期……很多很多,需要根据具体项目来确定。

如果只是关注自动化测试要测哪些,没有关注业务风险,有可能把精力都放在了对错误功能的测试上,事倍功半,得不偿失。

最后,测试金字塔不是万能的,不要再强调测试金字塔。

测试分层是测试策略的指导框架之一,另一个是测试四象限。更多的关于测试策略的内容,欢迎参考以下文章:

  • 《精益测试》
  • 《一页纸测试策略》
  • 《微服务测试的思考与实践》

文/Thoughtworks 林冰玉

原文链接:测试金字塔不是万能的-Thoughtworks洞见

你还只知道测试金字塔?相关推荐

  1. 敏捷实践 | 浅谈测试金字塔

    Why 为什么要学习测试金字塔 之前做测试培训的时候经常会被问到几个问题--我们项目没有自动化测试,老板想让我做,我搞了几个星期 selenium 怎么不行呢?我应该先做 API 测试还是 UI 测试 ...

  2. 用测试金字塔指导数据应用的测试

    由于数据应用开发和功能性软件系统开发存在很大的不同,在我们实践过程中,在开发人员和质量保证人员间常常有大量关于测试如何实施的讨论.下文将尝试总结一下数据应用开发的特点,并讨论在这些特点之下,对应的测试 ...

  3. What is 测试金字塔?

    [答疑解惑]| 作者 / Edison Zhou 这是恰童鞋骚年的第271篇原创内容 我的女朋友是一名测试工程师,但她之前却不知道测试金字塔的概念,为此我曾经在家里的白板上画了一个图一层一层给她讲解过 ...

  4. 软件测试|测试金字塔是什么,它的目的是什么,以及它包含哪些层次?

    一.测试金字塔的概念: 测试金字塔是2009年Mike Cohn在他的著作<Succeeding with Agile>一书正式提出的.他是一个类比的概念,形容每一层,或者说不同集成阶段测 ...

  5. 业内人士真心话:只会测试没有前途的,我慌了....

    借着CSDN这个平台,今天就来聊聊我对测试职业发展的看法. 先上我的结论: 1.只会简单的测试,没前途. 2.会中级的测试技能,短期内不愁,但长期不好说. 3.掌握开发技能,将会提升你在行业中的竞争力 ...

  6. 什么是测试金字塔?如何使用测试金字塔来构建自动化测试体系?

    测试金字塔 (Test Pyramid)是一套使用单元测试,集成测试和端到端测试来构建自动化测试体系的方法. 如下图所示,在金字塔的最下方是单元测试,中段是集成测试,最上方是端到端测试.单元测试实现的 ...

  7. 业内人士真心话:只会测试没有前途?

    文章转载链接:http://www.51testing.com/html/68/n-4477468.html 先上我的结论: 只会简单的测试,没前途. 会中级的测试技能,短期内不愁,但长期不好说. 掌 ...

  8. 业内人士真心话:只会测试没有前途的,我慌了......

    借着CSDN这个平台,今天就来聊聊我对测试职业发展的看法. 先上我的结论: 1.只会简单的测试,没前途. 2.会中级的测试技能,短期内不愁,但长期不好说. 3.掌握开发技能,将会提升你在行业中的竞争力 ...

  9. 敏捷测试金字塔和持续自动化测试(最详解)

    目录 背景 测试金字塔 持续自动化测试 背景 背景:云测CloudTest 敏捷和DevOps开发模式下,产品要具备随时可发布的能力,本文介绍如何应用测试金字塔和CI/CD持续自动化测试实现高效的测试 ...

最新文章

  1. java+构建+工具+Ant+Maven+Gradle
  2. 微信小程序的tab选项卡的实现
  3. 面试:说说你对 HashMap 的认识?
  4. Oracle RAC禁用DRM
  5. 浏览器标准模式与怪异模式的区别
  6. 虚函数和作用域(C++ primer 第五版)P550
  7. Dictionary To Dynamic
  8. 轻松做性能测试,月入3万的主流测试工具大揭秘
  9. Sublime Text 3快捷键
  10. LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
  11. Android动态加载字节码
  12. linux模拟发包工具,linux发包软件-线不是一个压力测试工具的linux以上收缩服务器可...
  13. 致远互联的下一步:从“协同”到“门户”
  14. 2014年终总结回顾与2015年工作总结
  15. 云原生的进一步具象化
  16. NLP/常用数据集简介
  17. leetcode刷题第21天——1763,117,572
  18. HTC官解后刷机步骤
  19. 后张忠谋时代,台积电面临诸多挑战
  20. mimic-iii数据库说明-01数据库介绍

热门文章

  1. 计算机视觉-图像检索
  2. 豆浆机清洗应彻底 如何清洗豆浆机
  3. excel smart流程图增加_用 SmartArt 轻松制作流程图,搞定 Office 多图排版
  4. 【渝粤教育】21秋期末考试工商企业文化10631k2
  5. 局域网网盘 构建局域网网盘
  6. 利用网络分析工具对城市管道网络进行分析 对一个物流公司的运送路线进行合理的规划
  7. 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL
  8. 黑莓:iMessage垃圾信息多 大家来用BBM
  9. 【考研计算机操作系统】 强化笔记
  10. 维宁尔将以约1.76亿美元出售在日本和中国的制动系统合资业务