精益测试

本文首发于【林子的空间


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

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

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

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

01. 精益生产

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

精益生产

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

02. 精益测试

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

什么是精益测试

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

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

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

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

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

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

精益测试的精髓

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

精益测试
  • 适时(T)

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

  • 适量(A)

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

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

  • 精准(T)

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

03. 精益测试的指导框架

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

测试四象限

敏捷测试四象限最早由Brian Marick提出,Lisa Crispin和Janet Gregory在书籍《敏捷软件测试:测试人员与敏捷团队的实践指南》中引用这个四象限框架,并做了详细的介绍。由于该象限框架所起到的作用不仅局限于敏捷的环境,我在这里称之为测试四象限。

测试四象限

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

支持团队的测试

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

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

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

评价产品的测试

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

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

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

测试象限的使用

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

  • 产品发布的风险
  • 客户方对产品目标的要求
  • 是基于遗留系统的开发还是从零开始构建的新系统
  • 可利用的测试资源等

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

测试分层

关于测试分层的思想,主要是针对自动化测试,根据测试所能覆盖的范围分成不同的层。下面借用Martin Fowler网站上微服务架构的几种测试分层结构图来解释测试分层的概念:

测试分层

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

关于测试分层的概念,大家可能更为熟悉的是测试金字塔,测试金字塔呈现的是不同种类测试比例的多少,底层单元测试较多,越往上层测试比例越少,呈现为金字塔结构。

测试金字塔

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

蜂巢和甜筒冰淇淋

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

04. 小结

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335