很多项目在讨论测试是否可以结束的时候,往往是只关注了测试发现的缺陷有多少?缺陷的严重级别分布如何?测试发现的缺陷关闭情况如何?而忽略了一个前提,即测试的投入是否充分?
如何量化测试的投入呢?我们可以从测试用例的密度,测试投入的工作量,测试的工期,测试的人数等多个方面来度量测试的投入,可以参见图一中候选的测试投入的度量元。
图一:测试投入与产出的候选度量元
哪个度量元更合适呢?如何判断选择哪个度量元是合适的呢?
度量的投入决定了度量的产出!我们可以根据这个法则来判断选择哪个度量元是合适的。即可以尝试采集多个项目的上述度量元,采集了度量数据后,和测试产出的度量元做一个相关性分析,看看是否与测试的产出是相关的,如果是相关的,则可以选择该度量元作为测试投入的度量元,否则就放弃之。
图二 :系统测试用例密度与系统测试缺陷密度的散点图
图二中的系统测试用例密度就是一个合适的测试投入的度量元。
图三:缺陷逃逸率与测试工作量/开发工作量的散点图
图三中的缺陷逃逸率与测试工作量/开发工作量都不是合适的度量元。当然在这家公司不合适不代表在其他公司就不合适。
在其他外部条件相同的情况下,测试投入充分的前提下:
测试发现的缺陷越多,说明代码的质量越差;测试发现的缺陷越少,说明代码的质量越好;
什么算是测试投入充分呢?
请看如下图四的散点图:
图四:千行代码测试投入与测试缺陷密度的散点图
在上图中当测试投入的工作量达到8人天/KLOC时,测试的缺陷密度达到趋于平稳的状态,即此时再加大测试投入时,发现的Bugs已经趋于平稳了,此时可以不用再测试了,也就意味着测试投入的工作量充分了!