更好的使用代码覆盖工具
我们到底该如何做呢?如果放弃使用覆盖工具将是个错误。通过迫使你运行已丢失的代码,覆盖工具必定会迫使你找到以前没有发现的错误。我们可以采用比我在上面例子中介绍的更好的方法。
是的。让我首先讨论一下到底什么才是看上去可能行不通的情况,然后在文章后面补充更多的常见情形。
当我很奢侈的有充足的时间,去彻底的测试那些我编写的子系统时,我使用了一些本身无法实现高代码覆盖率的测试设计技术,我期望通过初始的测试序列,使用较本文中描述的功能稍强的覆盖方法,达到高于百分之九十(我通常能达到百分之九十五左右)的可行性覆盖率。接着我使用了接下来将要介绍的方法,花费了占整个测试时间和调试时间不到百分之四的时间,达到了百分之百的可行性覆盖率。我认为浪费了很多时间,并且相信编码中存在的缺陷很少但偶尔地会很严重。我发现在测试过程中使用覆盖技术是很有价值的。(这里要指出的是,我较低的估计了获得工具和学习如何使用工具的成本,因为这些成本会通过很多用户和项目分期分批偿还。)
我的方法基于下面这个主要的观点:
如果在某种程度上通过覆盖能够发现你的测试序列的一部分效果不好,同样在某种程度上覆盖无法发现你的测试序列的一部分效果不好。
当你的测试做的足够好以至于发现了所有的遗漏错误,但是仅仅是碰巧你忘了执行一些覆盖条件,这时怎么办呢?
对于缺失的覆盖条件我会这么做:
1. 我会考虑与条件相对应的接口(用户接口或其它类型的接口)的特征(“特征”一词,通常解释为一小块代码,而不是象类似于“这个产品的特点是具有显示HTML语言的能力”的东西。)我知道至少使用过一种方法对这些特征进行过测试。
2. 我重新考虑我是如何测试这些特征的。我试着不去担心如何满足覆盖条件,或者过多的考虑同一个特征的其它缺失的覆盖条件。在实践中,你不可能完全地忽略覆盖条件,这就像故意试图不去想“大象”这个词(这个比喻我看不懂),但是你可以集中精力只考虑它们代表了什么类型的测试设计错误,而不是去考虑如何去满足它们。
3. 我进行了新的测试并重新检查了覆盖情况。我期望已经实现了特征中缺失的覆盖条件,即使我无法确认已经找到了它们。如果没有做到,那么测试设计又出现了错误。
4. 对于其它的特征,我重复进行1到3步的工作。因为初始序列是完整的彻底的,所以我没有必要重新考虑我整个的测试设计。
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51Testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。