精益测试

读完需要

9

分钟

速读仅需 3 分钟

“你们的测试开发比是多少?测试全阶段参与,怎么可能忙的过来?”

“全阶段都在测,那么都需要哪些测试才能保证质量呢?”

“自动化测试覆盖率要求达到 99%,包括功能、性能,甚至还有易用性……”

前面的第一个和第二个问题经常被人问到,是大家比较关心的问题,而第三个是某项目的真实要求。分别是关于测试人员如何测试、测试活动如何开展、测试覆盖率该是多少的问题,都跟接下来要讲的精益测试有关。

   

01. 精益生产

在介绍精益测试之前,我们先了解精益生产的概念。

905c162e762e1d7cd18822f31f5525b3.png

从维基百科可以看到对于“精益生产”的解释:精益生产主要来源于丰田生产方式(TPS)的生产哲学,因此也称为丰田主义 (Toyotism),一直到 1990 年间才称为精益生产。精益生产的目标是控制库存量,减少生产过程中的浪费,其核心是“Just in time”,旨在需要的时候,按需要的量,生产所需的产品,也就是用最少工作,创造价值。

   

02. 精益测试

敏捷测试要求的测试左移、全程测试,其目的也是为了快速反馈、降低成本,以交付高质量的软件。如果把精益的概念引入敏捷测试,将有助于减少测试过程中的浪费,让测试价值最大化。

什么是精益测试

测试要做到精益,需要明白:不能一味的追求测试覆盖率,大而全的测试覆盖是一种浪费,有效的测试更有价值。

不管是手工测试还是自动化测试,都要先搞清楚业务价值和质量目标,根据业务风险来执行测试,对于优先级高的要重点测,而优先级低的可以减少测试覆盖。

根据“二八原则”,80%的业务优先级可能只在其中 20%的功能模块上,而其他 80%的功能模块只占有 20%的业务。如果一视同仁,追求全面覆盖,花费大量精力在那 80%的低优先级模块上,必然造成大量的浪费。相反地,不追求测试覆盖率,追求测试的有效性,将会事半功倍,带来更高的 ROI。因此,很多时候,测试恰到好处很关键,带着 bug 上线也许是个好的策略。

注意,这里的质量目标是关键,对于一些事关生命安危的软件系统,质量要求会特别高,全面的测试覆盖都是有效的,也是恰到好处的一种。

这就是是精益测试的思想。

因此,精益测试可以定义为:以业务价值为目标,以尽量少的成本交付高质量的软件,测试测在能体现价值的点上,做到有效覆盖,减少浪费。

精益测试的精髓

基于精益测试的定义,可以将精益测试的精髓总结为TAT:适时(Time)、适量(Amount)、精准(Target)。

2859cca1a75be0304a2d240d2cfd9edf.png

适时(T)

敏捷测试要求测试全程参与,让测试活动发生在敏捷软件开发生命周期的每个环节,而让每种类型的测试发生在它最该发生的时刻,这就是“适时”的概念。比如:开发前对需求的确认,开发代码提交前自动化测试的实现和验证,部署后对系统做的冒烟测试等等。

适量(A)

对于测试覆盖率,有人会认为越高越好,比如前面提到的有团队要求 99%的自动化测试覆盖,就算这些测试覆盖都是有效的,但是花费太多精力去测试一些不是那么重要或者不是那么容易出问题的模块,也可能得不偿失,造成浪费。我们建议测试覆盖,不管是手动还是自动化的,都是适量就好,根据风险来确定需要加强测试的业务优先级和响应的测试覆盖量,一定不能一味的追求高覆盖。需要权衡利弊,把时间花在真正有价值的事情上,这也是精益的体现。

比如,做用户故事验收的时候,需要测到多细一直是个有争议的问题。我觉得主要路径的正常用例,加上一些需要特别关注的点就可以了,特别关注的点包括易出错的异常路径、IE 这样的特殊浏览器、高风险的安全问题等。不能也不需要在故事验收的时候覆盖所有的边角情况,毕竟需求、开发和测试三方凑一起不容易,时间要尽量短些才好。当然,可能有的团队还需要在故事验收的时候验收日志、性能等,只要做到尽量高效,按照团队需求来就好,并没有千篇一律的答案。

精准(T)

精准测试通常是指根据代码改动所影响到的范围去针对性的进行自动化测试。而这里说的精准测试范围更广,可以理解为基于风险的测试,风险可能来自于业务和架构层面,也可能来自于代码改动,还可能跟系统特点或其他项目因素相关。执行测试之前更重要的是分析和设计,不能盲目的去测。

   

03. 精益测试的指导框架

精益测试的指导框架常见的有两个:测试四象限和测试分层,下面分别介绍。

测试四象限

敏捷测试四象限最早由 Brian Marick ( http://www.exampler.com/old-blog/2003/08/22/#agile-testing-project-2 )提出,Lisa Crispin 和 Janet Gregory 在书籍《敏捷软件测试:测试人员与敏捷团队的实践指南》 ( https://book.douban.com/subject/5338399/ )中引用这个四象限框架,并做了详细的介绍。由于该象限框架所起到的作用不仅局限于敏捷的环境,我在这里称之为测试四象限。

1baf1c202fe6102f945d00b08bf42977.png

测试四象限矩阵的左右两侧指的是测试的作用,分别为支持团队和评价产品,而上下两部分指的是测试面向的对象,分别为面向业务和面向技术。

支持团队的测试

左侧支持团队的测试是用来告诉团队要写什么代码,起到明确需求、辅助设计的作用。

其中,第一象限是面向技术的支持团队的测试,帮助构建产品的内部质量,也就是代码质量的保障,比如单元测试和 API 测试等;第二象限则是面向业务的支持团队的测试,从更高层次以业务专家可以理解的方式确定系统期望的行为,帮助团队澄清业务以更好的理解真正的业务价值。

这两个象限的测试能够快速提供反馈信息,并确保快速的解决问题,既指导了功能的开发,又提供了防止重构和新代码的引入而导致不期望行为发生的安全网。

评价产品的测试

程序员编写的代码可以使得左侧面向业务的测试通过,但也可能没有产生客户真正想要的东西,因此还需要第三、第四象限的评价产品的测试。

第三象限是面向业务的评价产品的测试,通过模仿真实用户使用应用的方式,帮助确认是否构建了真正需要的产品;第四象限是面向技术评价产品的测试,主要采用工具和相应的技术来评价产品的性能、健壮性和安全性等非功能特性,并且在开发周期的每一步都要考虑这些测试的开展。

这两个象限的测试中产生的信息应该反馈到象限矩阵的左侧,并用于创建新的测试来驱动下一步开发,形成良性的增强环路。

测试象限的使用

象限的顺序跟测试执行的顺序无关,敏捷开发往往开始于客户测试(面向业务的测试)。与测试执行时机相关的因素通常有:

  • 产品发布的风险

  • 客户方对产品目标的要求

  • 是基于遗留系统的开发还是从零开始构建的新系统

  • 可利用的测试资源等

测试象限提供一种需要哪些测试来保障质量的思考框架,可以根据项目具体情况,结合考虑以开展对应的测试。上图所示为蓝鲸项目的测试象限体现的测试类型,跟 Lisa 书里介绍的就不太一样,这是根据项目当前跟客户的合作方式、业务需求、质量要求等来确定的当下需要执行的测试,比如其中的安全测试就分为业务部分和技术部分。

测试分层

关于测试分层的思想,主要是针对自动化测试,根据测试所能覆盖的范围分成不同的层。下面借用 Martin Fowler 网站 ( https://martinfowler.com/articles/microservice-testing/#conclusion-summary )上微服务架构的几种测试分层结构图来解释测试分层的概念:

d4f2a31c042a7c275780987418b48717.png

从图中可以看到几种不同类型的测试所能覆盖的范围大小是不一样的。

关于测试分层的概念,大家可能更为熟悉的是测试金字塔 ( https://martinfowler.com/bliki/TestPyramid.html ),测试金字塔呈现的是不同种类测试比例的多少,底层单元测试较多,越往上层测试比例越少,呈现为金字塔结构。

8f48a056861af482e50b0308013d76ca.png

其实,随着技术架构、系统特点、质量要求、团队技能水平等因素的不同,每种测试的比例也不尽相同,不一定都是金字塔结构,如下图所示的蜂巢结构或者甜筒冰淇淋结构都有可能。

78475aa345d6e20cc8cd0726160f9283.png

不管比例如何,每层测试有着自己的特点。越往底层的测试越接近代码,编写成本更低、执行速度更快、定位问题也更准确,但是离业务较远,不能很好的体现业务价值;越往上层的测试越接近业务,更能反应业务价值,但有着不够稳定、执行速度慢、实现成本较高、问题定位难的不足。因此,需要权衡利弊,根据项目具体情况,真实的目标来确定每层测试的比例。

   

04. 小结

精益测试的思想主要是帮助团队制定合适的测试策略,并不是一种具体的测试方法。精益测试的精髓是将测试做到适时、适量和精准,就是让测试做到恰到好处以减少浪费。

测试策略受众多因素的影响,需要做到目标驱动,并且根据具体情况随着时间推移不断的演进。测试四象限和测试分层都只是指导框架,不是必须遵守的规范,可以作为测试策略制定的参考模型,具体项目的策略还需根据项目特定情况进行调整。

c6ae415937e92df7277fc6c7083fb6ae.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-树2-二叉树各种函数实现

一、二叉树的递归遍历 二叉树的递归遍历.c #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h>//二叉树的结点 typedef struct BINARYNODE {char ch;struct BINARYNODE *lchild;struct BINARYNODE *rchild; }Binar…

Python反射应用场景(一)

了解了反射中四个函数的基本用法。那么反射到底有什么用呢&#xff1f;它的应用场景是什么呢&#xff1f;答案是&#xff0c;当不确定所需要的属性和函数是否存在时&#xff0c;可以使用反射。另外一个重要作用是&#xff0c;可以提高代码的扩展性和可维护性。假如我们把所有的…

数据结构-树5-二叉搜索树

#include<iostream> #include<string>using namespace std; //构建二叉树的结构体 template< typename T> struct binaryTreeNode {T element; //数据binaryTreeNode<T>* leftChild; //左子树指针binaryTreeNode<T>* rightChild; //右子树指针…

oracle segment undo_71_UNDO扩展学习

UNDO扩展学习UNDO是Oracle在UNDO SEGMENT(回滚段)中记录的信息。下面使用UNDO这名字可能会包含两种意思&#xff0c;一是前面说的回滚段中的记录、二是UNDO整个机制。在这部分内容里&#xff0c;没有涉及闪回技术&#xff0c;要知道不少闪回技术是基于UNDO机制来实现的&#xf…

js判断对象是否为空对象_js对象

七种数据类型 number string bool symbol undefined null object五个Falsy 值 undefined null 0 NaN 对象 object第七种数据类型,唯一一种复杂类型定义无序的数据租户键值对的集合写法let obj {name:frank,age:18}let obj new Object({name:frank})console.log({name:frank,a…

Python字典方法

字典也有方法&#xff0c;很有用&#xff0c;但其使用频率可能没有列表和字符串方法那样高。1、clear 删除所有的字典项d {key: value} d.clear() print(d){}2、copy 方法copy返回一个新字典&#xff0c;其包含的键值对与原来的字典相同&#xff08;这各方法是浅复制&#xff…

交流充电桩电路图_直流充电桩和交流充电桩给电动汽车充电过程中是如何工作的?...

近几年来&#xff0c;新能源汽车发展越来越快&#xff0c;而限制新能源电动汽车发展的主要因素是续航里程和充电问题。续航里程要靠提高电池性能来解决&#xff0c;而解决充电问题就要靠充电桩的普及来实现。下面小编带着大家一起来了解一下直流充电桩和交流充电桩给电动汽车充…

Windows上安装Ubuntu子系统练习linux基本命令

经常在我的群里看到自学测试的小伙伴花费了大量的时间在环境搭建和各种软件的安装上面&#xff0c;有很多就卡在第一步&#xff0c;虚拟机的安装。 有很多安装之后比如启动蓝屏之类的等等&#xff0c;其实&#xff0c;我想说的是&#xff0c;这些都是在走弯路&#xff0c;在这个…

如何巧妙的申请换部门_如何设置户外广告?市城管局局长体验户外广告审批流程...

为巩固拓展“不忘初心、牢记使命”主题教育成果&#xff0c;落实“对标找差、再攀新高”工作要求&#xff0c;优化营商环境&#xff0c;提升服务品质&#xff0c;近日&#xff0c;张家港市城管局局长殷沪飞以个体工商户的身份&#xff0c;到行政审批局城管窗口体验户外广告设置…

安卓APP版本发布流程(一)

一、加固安卓包&#xff08;新版安卓Release包&#xff09;1、下载安装加固软件&#xff0c;注册登录账号https://jiagu.360.cn/#/global/index2、添加签名设置&#xff0c;对应签名路径、密码、别名、别名密码向安卓开发要3、添加签名后&#xff0c;APK加固-添加应用&#xff…

小程序弹出层禁止列表滑动_是时候展现真正的技术了!小程序教程来了——百战Web前端课程更新05.07...

百战程序员十大精品课程&#xff0c;实时更新&#xff0c;保持行业领先。本次更新课程Web前端第二十九阶段安心食疗-微信小程序全部7个章节及课程资料。小程序是依托微信而生的&#xff0c;是一种不用下载就能使用的应用&#xff0c;也是一项创新&#xff0c;经过近几年的发展&…

Jmeter实战(二)|同用户重复并发多次抢红包

之前我们有写过Jmeter多人并发抢1个红包&#xff0c;今天我们来写另外一种场景&#xff0c;同用户重复并发多次抢红包&#xff0c;两种场景还是不太一样&#xff0c;都是比较切合用户实际使用场景&#xff0c;如果1个用户在某些条件下&#xff0c;能重复领取到2次红包&#xff…

【北京上海】七猫内推,高薪海量岗位等你来~

微信长按识别、扫码&#xff0c;查看海量待招岗位&#xff01;&#xff01;&#xff01;UI、产品、测试、开发、运营、数据分析等等