【答疑解惑】| 作者 / Edison Zhou

这是恰童鞋骚年的第271篇原创内容


我的女朋友是一名测试工程师,但她之前却不知道测试金字塔的概念,为此我曾经在家里的白板上画了一个图一层一层给她讲解过。我和同事在给团队面试测试和开发岗位时,也会必问到这个问题,想到可能有很多开发童鞋都不知道,这里我就用一篇推文给大家科普一下。

1传说中的金字塔

我们都知道,针对项目的测试有很多分类,比如单元测试、集成测试、组件测试、端到端测试 以及 探索性测试等。那么,测试金字塔其实就是给我们的一个指导,它指导我们要在不同类型的测试工作投入多少的精力是最合适的。

废话不多说,先上图:

测试金字塔示意图(来自波波老师的课程)

从上图中我们可以看到,测试金字塔建议我们:

(1)尽可能地多做单元测试 和 集成测试,因为他们的执行速度相较于上层的几个测试类型来说快很多且相对稳定,可以一天多次执行。一般来说,我们都会将单元测试 和 集成测试 做到持续集成构建任务中去,比如放到Jenkins中每天定时执行1~2次,或者每次push代码到git仓库后执行,总之,就是要确保可以频繁执行以确保代码质量。

(2)尽可能地少做 组件测试、端到端测试 和 探索性测试,因为他们的执行速度相较单元测试 和 集成测试 会慢很多,且不够稳定,无法做到一天多次执行,每次执行都要等很久才能获得反馈结果。但是,他们的覆盖面比下层的单元测试 和 集成测试 要广一些。总之,就是要确保一定周期内 或者 关键节点时间 执行以下这几个测试以确保软件质量。

画外音:金字塔里,越往下速度越快且越稳定,那么就可以频繁执行,反正执行一次也花不了多久时间,开发人员还可以知道我的代码有没有影响到其他模块。越往上则速度越慢且越不稳定,跑一次要N久,开发人员往往会觉得还是先继续开发吧,到时候出了bug再说,我可不想加班等测试结果。

2端到端的测试实践

在具体实践中,位于上层的端到端测试是粒度相对较粗 但是 我们又不得不做的测试实践。在微服务架构风格中,端到端测试涉及到的相关服务依赖很多,且异步等可变的因素较多,因此它也是一种最不稳定的测试。

端到端测试示意图(来自波波老师)

端到端测试:验证工作流中的所有流程,以检查一切是否按预期工作。它还确保系统以统一的方式工作,从而满足业务需求。

这里也跟大家分享一下在微服务架构场景中,对于端到端测试的一些实践要点,仅供参考:

(1)80/20原则,花更多的精力聚焦核心业务服务;对于我司来说,可能就是统一鉴权服务、订单下单服务、统一支付服务等;

(2)用户使用场景驱动,即尽可能使用最终用户的用例流程来驱动测试,这样可能更加容易覆盖到产生业务价值的场景;

(3)适当Mock不稳定测试点,如果有些微服务依赖的第三方服务不够稳定的话,那么可以适度牺牲一些覆盖面,使用Mock来测试。

(4)规范测试环境和环境自动化,即团队可以具备几种测试环境一键创建的能力,比如使用Docker + Kubernetes就可以帮助实现这个点。这一点,我相信大部分的小团队都不具备这个能力,我司其实也一样,所以我建议小团队尽可能上云,直接使用云上的能力帮助我们克服自身团队的技术储备弱的问题,提升端到端测试的效率。

(5)测试数据管理,即团队可以具备一键生成测试数据的能力,而不是每次环境启动起来才去修改数据以便于测试,一般都会通过维护测试数据的自动化脚本来实现。

画外音:对你们团队的测试同事好点,他们做端到端测试的时候会问候你的。

3小结

本文介绍了测试金字塔的概念 及 耗时的端到端测试的实践要点,最后温馨提示一下,快下班时尽量别改自己不了解影响范围的Bug,否则你会像下面这样:

 ????点个赞和在看如何?

What is 测试金字塔?相关推荐

  1. 敏捷开发中的测试金字塔(转)

    最近一个爱尔兰的同事介绍了我们agile模式下的automation的工作机制,提到了测试金字塔的概念.值得推敲. 其中主要的思想就是,针对automation工作我们更多的focus点应该是Unit ...

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

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

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

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

  4. 软件测试模型 — 测试金字塔

    测试金字塔模型: ui测试 api测试 单元测试 探索性测试 端到端测试 系统测试 集成测试 单元测试 reference: The Practical Test Pyramid

  5. Day918.测试金字塔 -SpringBoot与K8s云原生微服务实践

    测试金字塔 Hi,我是阿昌,今天学习记录的是关于测试金字塔的内容. 软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,如果没有良好的质量管控,很容易造成产品质量不满足客户预期,最终导致项目 ...

  6. 你还只知道测试金字塔?

    写在前面 测试金字塔曾经神一样的存在,很多人认为制定测试策略知道测试金字塔就够了. 真的是这样吗?今天,利用这篇短文跟大家聊聊测试金字塔. 如果你恰好知道测试金字塔,也把它奉为测试策略的指导方针,那么 ...

  7. 软件测试面试题:请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述。

    请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述. 1)单元测试自动化:在面向过程编程中,单元也可以是整个模块,单常见的是单个函数或过程. 在面向对象编程 ...

  8. 【软件测试】移动端测试金字塔

    提到测试金字塔,大家都只是单元测试是底座,上方是集成测试和端到端测试. 分层控制产品质量.移动端测试金字塔你知道吗? 无论是游戏,淘宝,还是其他网站,如果没有一流的网站,就没有数字上的成功,为世界各地 ...

  9. 测试金字塔,你在哪一层?

    摘要:软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,自动化测试金字塔给大家提供了一种测试策略,根据项目具体的情况,优化测试活动,最终让软件质量得到提升. 前言 软件质量是衡量一个软件是 ...

最新文章

  1. hadoop job 数量_大数据Hadoop常见面/笔试题
  2. 火狐浏览器下DIV不能居中的解决办法
  3. Linux keepalived
  4. 和“内存杀手” Chrome 说再见!新版 Edge 即将发布
  5. ​JavaScript 开发人员的主要基本技能是?
  6. 让我们用心感受泛型接口的协变和抗变out和in
  7. 如何长期且快乐的学习?
  8. SMSBMS超市订单管理系统详解(一:准备工作)
  9. 最好的6个大数据处理分析工具
  10. 有关matlab裁剪图片方面
  11. 入门级元宇宙AR avatar制作教程
  12. 【微信小程序】微信小程序生成二维码报错errcode=41030,invalid page rid
  13. MCD12Q1数据处理教程——基于HEG、ArcGIS和ENVI
  14. 童甫带领下的海航科技集团的无人运输船正式亮相引关注
  15. c语言大作业小学生测验,小学生测验 面向小学1~2年级学生,随机选择两个整数进行四则运…...
  16. 安卓应用市场广告(CPD),aso cpd
  17. 使用docker快速安装Oracle11gR2
  18. 九度 题目1421:Abor
  19. “一个部族,一个民族,一个弗雷尔卓德。”
  20. 路由器至游戏服务器稳定性,如何改善路由器到游戏服务器的

热门文章

  1. Shell中各种判断语法
  2. [中文版] 可视化 CSS References 文档
  3. iOS笔记之UIKit_UINavigationController
  4. 基于 Spring Security 的开源统一角色访问控制系统 URACS
  5. AspectJ学习笔记
  6. 个人总结的一个中高级Java开发工程师或架构师需要掌握的一些技能...
  7. 简单获取任意app的URL Schemes
  8. 8-12 canvas专题-阶段练习一(上)
  9. 2014 网选 上海赛区 hdu 5047 Sawtooth
  10. 基于Qt的光盘刻录开发