软件测试金字塔,软件质量思考(一)测试金字塔
软件的质量该如何定义呢?衡量软件的质量可能有很多维度,我们这里不想那么学术。但你可以想象,糟糕的软件质量体现在哪里?从开发者的角度看,基本体现在两方面:
不好读懂
不好维护
当然,读懂是维护的前提,代码都看不懂,该怎么改呢?即便是读懂了,你就敢改吗?你怎么确认自己改得没问题呢?有没有引入新的bug呢?对!测试!
说起测试,你头脑中浮现的是什么画面呢?点开界面,点几下鼠标,确认结果是否复合预期。嗯,这个是手工测试。然而手工测试成本太高了。如果,软件不需要频繁改动,几次测试可能就够了。可惜,需求在变,不频繁改动并不现实。但若每次改动都手动回归,工作量是巨大的。
这时,我们想到自动测试。但怎么做自动测试呢?通过写脚本,模拟人工点击?这样的测试跟手工测试的覆盖面一致,都关注软件外在的表现行为,同属端到端测试,也叫验收测试。这个技术上是可以实现的,可惜成本几乎比手工测试有过之而无不及。为什么?因为UI是软件架构的最外层,改动的可能性最高。即便不考虑UI变动可能行,如果测试框架不能做到分辨率无关,也很难兼容不同的UI环境。
此时,我们可以向内推一层。如果架构分层够清晰的话,我们可以直接对接口进行测试。接口比UI稳定多了。如果接口是团队间协作的协议,并且接口由客户方定义,甚至给出测试用例,则被称为消费契约测试。然而,这是集成测试的一种,需要开启被依赖的服务才能进行测试,测试效率较低,成本仍然偏高。集成测试还有一个问题,整个调用链的各环节都有出错的可能,不利于定位问题。
终于,我们发现单元测试是最低成本的自动化测试。测试效率高,每个测试单元作用范围小,利于快速定位问题。至此,我们得到了整个测试金字塔,如下图:
测试金字塔.JPG
成本上,验收测试最高,单元测试最低。单元测试更靠近开发者,也是开发者的责任。所以,我们一定要做单元测试,其他层面的测试依资源情况取舍。
软件测试金字塔,软件质量思考(一)测试金字塔相关推荐
- 什么是测试金字塔?如何使用测试金字塔来构建自动化测试体系?
测试金字塔 (Test Pyramid)是一套使用单元测试,集成测试和端到端测试来构建自动化测试体系的方法. 如下图所示,在金字塔的最下方是单元测试,中段是集成测试,最上方是端到端测试.单元测试实现的 ...
- 软件测试|测试金字塔是什么,它的目的是什么,以及它包含哪些层次?
一.测试金字塔的概念: 测试金字塔是2009年Mike Cohn在他的著作<Succeeding with Agile>一书正式提出的.他是一个类比的概念,形容每一层,或者说不同集成阶段测 ...
- 敏捷实践 | 浅谈测试金字塔
Why 为什么要学习测试金字塔 之前做测试培训的时候经常会被问到几个问题--我们项目没有自动化测试,老板想让我做,我搞了几个星期 selenium 怎么不行呢?我应该先做 API 测试还是 UI 测试 ...
- 【软件测试】移动端测试金字塔
提到测试金字塔,大家都只是单元测试是底座,上方是集成测试和端到端测试. 分层控制产品质量.移动端测试金字塔你知道吗? 无论是游戏,淘宝,还是其他网站,如果没有一流的网站,就没有数字上的成功,为世界各地 ...
- 软件测试模型 — 测试金字塔
测试金字塔模型: ui测试 api测试 单元测试 探索性测试 端到端测试 系统测试 集成测试 单元测试 reference: The Practical Test Pyramid
- 软件测试面试题:请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述。
请对Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念,请进行描述. 1)单元测试自动化:在面向过程编程中,单元也可以是整个模块,单常见的是单个函数或过程. 在面向对象编程 ...
- 用测试金字塔指导数据应用的测试
由于数据应用开发和功能性软件系统开发存在很大的不同,在我们实践过程中,在开发人员和质量保证人员间常常有大量关于测试如何实施的讨论.下文将尝试总结一下数据应用开发的特点,并讨论在这些特点之下,对应的测试 ...
- Day918.测试金字塔 -SpringBoot与K8s云原生微服务实践
测试金字塔 Hi,我是阿昌,今天学习记录的是关于测试金字塔的内容. 软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,如果没有良好的质量管控,很容易造成产品质量不满足客户预期,最终导致项目 ...
- 测试金字塔,你在哪一层?
摘要:软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,自动化测试金字塔给大家提供了一种测试策略,根据项目具体的情况,优化测试活动,最终让软件质量得到提升. 前言 软件质量是衡量一个软件是 ...
最新文章
- 奶粉中含PHP作用,奶粉中的益生菌有什么作用
- android studio写坦克大战代码_GitHub 项目推荐:俄罗斯小游戏、Markdown 幻灯片、头像生成器、Logo 制作、坦克大战...
- my paper in EI
- 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
- Android开发笔记(一百零一)滑出式菜单
- python保存图片到指定路径_[Python03] 5分钟学会3种方法给模块添加路径!
- 微信公众号H5游戏平台完整源码放送给大家
- unity蛮牛游戏API
- 精密电阻选购及换算方法
- lisp坐标一键生成_如何利用lisp程序一次性提取CAD中点的坐标(不要点击每个点,太多了麻烦)...
- eyoucms如何管理栏目
- win10硬盘读写速度测试-crystaldiskmark
- js 微信小程序根据身份证号计算年龄
- 使用七牛云存储图片案例
- C语言作业然后是几点,用C语言解“然后是几点”问题
- 老男孩教育50期-马慧峰-决心书
- 怎么修改服务器上的分数,在服务器上设置 WinSAT 分数
- 贝萨尔曲线实现Periscope心形点赞动画效果
- Google搜索使用技巧