温伯格经典著作《咨询的奥秘》中提到「树莓酱定律」:
(将一定量的树莓酱抹在面包片上)铺得越广,摊得越薄。
意思是不管多伟大的信息,传播的越广,信息量就会越淡,即信息在传播的过程中不会增加,信息的总量是一定的。
这是一个看似非常简单的定律。本文不聊信息传播的问题,而是想借用该定律来聊聊软件质量与测试中可以用树莓酱定律解释的常见场景。
01 测试全流程介入:测试本来就忙,这就更忙不过来了?
提倡全生命周期的测试活动的开展,其中就要求测试人员在全生命周期各个环节有更多的介入,这对于传统独立测试阶段忙得不可开交的测试人员来说,是难以接受和理解的一件事情,觉得那样会更忙不过来。
其实不然。
根据树莓酱定律,在测试工作量一定的情况下,全生命周期开展测试,是将测试工作分散到各个阶段,每个阶段的工作量会有所减轻。而且我们知道越早开展的测试工作,能够做到更快速地反馈,其有效性越高,价值越大。
因此,测试全流程介入,不会增加测试的工作量,只是将测试工作的开展时间进行重新安排。
另外值得提醒的是,全生命周期的测试不仅是测试人员全流程介入,也需要团队不同角色全流程介入,实现测试活动的全流程开展。
02 全员负责质量:质量是团队的职责,而不仅是测试人员的事情。
一个软件产品的质量保障工作可以认为是一定的,根据树莓酱定律,团队全员对质量负责,将全生命周期的测试工作进行分担,每个角色所要做的质量相关的工作就不会太多。
质量需要全员负责还有一个很重要的原因就是不同角色各有所长,而质量并不是简单通过测试来保障的,正是需要每个角色发挥各自的优势来协作实现,做自己擅长的事情也会使得工作效率进一步提高,即投入产出比更高,同样可以实现降本增效。
03 回归测试:追求全量回归还是精准回归?
根据树莓酱定律,在测试资源一定的前提下,测试的范围越广,测试的深度越浅。在时间和人力一定的情况下,追求全量回归会导致所有场景都测得有限,而精准回归会深度覆盖重点需要关注的场景,测试效果必然会更好。
类似地,对于自动化测试覆盖率和测试有效性也是一样的。如果一味追求测试覆盖率,必然会丧失一些测试的有效性。显然,有效的自动化测试比宽泛覆盖但效果不好的自动化测试更有价值。
这其实就是追求质量还是数量的问题。
04 质量内建:缺陷预防 over 缺陷集中暴露。
质量内建的意思是要把软件质量构建到开发过程中,实现尽早对缺陷的预防。在我之前的文章中用下面这个图解释过缺陷预防:
树莓酱定律同样可以解释:我们认为一个软件系统的所有可能出现的缺陷数量是一定的,在开发过程多个环节进行预防,就必然使得在测试或者生产环境用户使用过程中暴露的缺陷数量减少,也就是预防的缺陷越多,集中暴露的缺陷就会越少。
同时,根据缺陷修复成本和缺陷发现阶段关系曲线图,越早发现的缺陷修复成本越低。因此,需要尽早对缺陷进行预防,做的质量内建。
小结
前面提到的四个场景,正好对应到敏捷测试宣言里的四条价值观:
由简单的树莓酱定律你还想到了哪些测试相关场景?欢迎一起交流。