最近一直在学习测试方面的知识,也浏览了许多博客,通过这些博客也了解到了许多未曾接触过的关于测试方面的理
论和原则以及一些常识性的东西,比如测试的不完全性,测试中的二八定律,缺陷的必然性等。这篇文章做下整理,
分享给大家。了解这些将对于我们在进行软件测试时把握软件测试尺度很有帮助。
软件缺陷与病毒一样具有可怕的“ 免疫性 ” ,测试人员对其采用的测试越多,其免疫能力就越强,寻找更多软件缺
陷就更加困难。由数学上的概率论我们可以推出这一结论。假设一个 50000行的程序中有 500 个软件缺陷并且这些
软件错误分布时均匀的,则每 100 行可以找到一个软件缺陷。我们假设测试人员用某种方法花在查找软件缺陷的精力
为 X小时 /100 行。照此推算,软件存在 500 个缺陷时,我们查找一个软件缺陷需要 X 小时,当软件只存在 5 个错
误时,我们每查找一个软件缺陷需要 100X小时。实践证明,实际的测试过程比上面的假设更为苛刻,为此我们必须
更换不同的测试方式和测试数据。该例子还说明了在软件测试中采用单一的方法不能高效和完全的针对所有软件缺
陷,因此软件测试应该尽可能的多采用多种途径进行测试。
软件测试仅存在于程序完成之后在这个概念恐怕难以立足了。因为如果单纯的只将程序设计阶段后的阶段称之为
软件测试的话,需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。需求缺陷、设计缺
陷也是软件缺陷,记住“ 软件缺陷具有生育能力 ”。软件测试应该跨越整个软件开发流程。需求验证(自检)和设计验
证(自检)也可以算作软件测试的一种。软件测试应该是一个泛型概念,涵盖整个软件生命周期,这样才能确保周期的
每个阶段禁得起考验。同时测试本身也需要有第三者进行评估(信息系统审计和软件工程监理),即测试本身也应当被
测试,从而确保测试自身的可靠性和高效性。否则自身不正,难以服人。
另外还需指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷
的手段,但决不是一个根本手段。
二八定律,这里感觉非常亲切,原来二八定律也可以用在测试里,80%的软件缺陷常常生存在软件 20% 的空间里。
这个原则告诉我们,如果你想使软件测试有效地话,记住常常光临其高危多发 “ 地段 ”。在那里发现软件缺陷的可
能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个
原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。
为什么我们要实施软件测试,是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施
软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们
在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来,在软件测试中我
们应该尽量地保持软件测试简单性,切勿将软件测试过度复杂化,拿物理学家爱因斯坦的话说就是:Keep it simple
but not too simple 。
软件测试中,由于错误的关联性,并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复
的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的,一个矛盾的消失必然会引发另外一个矛盾
的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中,我们常常还会
受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围,选
择一个折中的方案或是从非软件的因素(比如提升硬件性能)考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的
事实。
这些常识性的理论原则我觉得非常有必要了解一下,因为这些都是前辈们经过无数次尝试总结出来的,站在巨人的肩
膀上能使我们少走一些弯路,关于测试的学习仍在继续!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!