软件的质量该如何定义呢?衡量软件的质量可能有很多维度,我们这里不想那么学术。但你可以想象,糟糕的软件质量体现在哪里?从开发者的角度看,基本体现在两方面:

不好读懂

不好维护

当然,读懂是维护的前提,代码都看不懂,该怎么改呢?即便是读懂了,你就敢改吗?你怎么确认自己改得没问题呢?有没有引入新的bug呢?对!测试!

说起测试,你头脑中浮现的是什么画面呢?点开界面,点几下鼠标,确认结果是否复合预期。嗯,这个是手工测试。然而手工测试成本太高了。如果,软件不需要频繁改动,几次测试可能就够了。可惜,需求在变,不频繁改动并不现实。但若每次改动都手动回归,工作量是巨大的。

这时,我们想到自动测试。但怎么做自动测试呢?通过写脚本,模拟人工点击?这样的测试跟手工测试的覆盖面一致,都关注软件外在的表现行为,同属端到端测试,也叫验收测试。这个技术上是可以实现的,可惜成本几乎比手工测试有过之而无不及。为什么?因为UI是软件架构的最外层,改动的可能性最高。即便不考虑UI变动可能行,如果测试框架不能做到分辨率无关,也很难兼容不同的UI环境。

此时,我们可以向内推一层。如果架构分层够清晰的话,我们可以直接对接口进行测试。接口比UI稳定多了。如果接口是团队间协作的协议,并且接口由客户方定义,甚至给出测试用例,则被称为消费契约测试。然而,这是集成测试的一种,需要开启被依赖的服务才能进行测试,测试效率较低,成本仍然偏高。集成测试还有一个问题,整个调用链的各环节都有出错的可能,不利于定位问题。

终于,我们发现单元测试是最低成本的自动化测试。测试效率高,每个测试单元作用范围小,利于快速定位问题。至此,我们得到了整个测试金字塔,如下图:

测试金字塔.JPG

成本上,验收测试最高,单元测试最低。单元测试更靠近开发者,也是开发者的责任。所以,我们一定要做单元测试,其他层面的测试依资源情况取舍。

软件测试金字塔,软件质量思考(一)测试金字塔相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 奶粉中含PHP作用,奶粉中的益生菌有什么作用
  2. android studio写坦克大战代码_GitHub 项目推荐:俄罗斯小游戏、Markdown 幻灯片、头像生成器、Logo 制作、坦克大战...
  3. my paper in EI
  4. 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始
  5. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
  6. Android开发笔记(一百零一)滑出式菜单
  7. python保存图片到指定路径_[Python03] 5分钟学会3种方法给模块添加路径!
  8. 微信公众号H5游戏平台完整源码放送给大家
  9. unity蛮牛游戏API
  10. 精密电阻选购及换算方法
  11. lisp坐标一键生成_如何利用lisp程序一次性提取CAD中点的坐标(不要点击每个点,太多了麻烦)...
  12. eyoucms如何管理栏目
  13. win10硬盘读写速度测试-crystaldiskmark
  14. js 微信小程序根据身份证号计算年龄
  15. 使用七牛云存储图片案例
  16. C语言作业然后是几点,用C语言解“然后是几点”问题
  17. 老男孩教育50期-马慧峰-决心书
  18. 怎么修改服务器上的分数,在服务器上设置 WinSAT 分数
  19. 贝萨尔曲线实现Periscope心形点赞动画效果
  20. Google搜索使用技巧

热门文章

  1. 任务管理器显示不完整的解决办法
  2. 谷歌浏览器占据全球三分之一的份额
  3. 00002 贪婪洞窟.003.3:物品
  4. JavaSE——Java比较器
  5. 删除被删除的快捷方式中设置的快捷键
  6. unity UGUI系统梳理 -交互组件
  7. 百度收YY,意在把搜索做深
  8. 无悔造车!贾跃亭与合伙人再次出手亿美元“增持”FF,FF 91量产不远了
  9. 工具系列——windows10安装教程
  10. 一个关于子网与掩码输入的组件基于elementui