一、软件测试的基本原则 在设计有效测试用例之前,测试工程师必需理解软件测试的基本原则。这里有一组测试原则: ·所有的测试都应追溯到用户需求。正如我们所知:软件测试的目标在于揭示错误。而最严重的错误(从用户角度来看)是那些导致程序无法满足需求的错误。
·应该在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在任何代码被产生前就进行计划和设计。 ·Pareto原则应用于软件测试。简单地讲,Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。当然,问题在于如何孤立这些有疑点的模块并进行彻底的测试。 ·测试应从“小规模”开始,逐步转向“大规模”。最初的测试通常把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。 ·穷举测试是不可能的。甚至一个大小适度的程序,其路径排列的数量也非常大。因此,在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。 ·为了达到最佳效果,应该由独立的第三方来构造测试。“最佳效果”指最有可能发现错误的测试(测试的主要目标),所以创建系统的软件工程师并不是构造软件测试的最佳人选。
二、测试七项基本原则 原则1:测试说明缺陷的存在,而不能说明缺陷不存在 ; 即使在测试过程中没有发现失效,也不能证明证明没有缺陷,即 零缺陷是不可能的。 原则2:穷尽测试是不可能的 : 进行穷尽测试(输入和前提条件所有组合)是不可行的,除非是小型案例;所以我们应利用风险分析、测试技术和优先级确定测试工作量。 原则3:测试的尽早介入可以节省时间和成本 : 测试的尽早介入有时也称为测试的左移,测试尽早介入,可以减少项目时间和成本。 原则4:缺陷的群集效应 :在BUG的周围往往会发现更多的问题,所以这些应该作为风险分析的重要输入。 原则5:杀虫剂悖论 :就像杀虫剂在一段时间后对杀死昆虫不再有效一样,如果多次重复同样的测试,最终这些测试将不再能够发现任何新的缺陷,所以我们应经常检查测试用例并且生成新的测试用例,或对旧的不常用的测试用例以及常用的但不常发现缺陷的用例进行改写。 原则6:测试活动依赖于测试周境 :测试在不同周境下是不同的。所以不应该以完全相同的方法去测试两个不同的系统。 原则7:不存在缺陷的谬论 :期望仅仅发现并修复大量缺陷就能确保系统的成功,这是一个谬论。
三、测试经验:在设计有效测试用例之前,测试工程师必需理解软件测试的基本原则。这里有一组测试原则: 1、所有的测试都应追溯到用户需求。正如我们所知:软件测试的目标在于揭示错误。而最严重的错误(从用户角度来看)是那些导致程序无法满足需求的错误。
2、应该在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在任何代码被产生前就进行计划和设计。
3、Pareto原则应用于软件测试。简单地讲,Pareto 原则暗示着测试发现的错误中的 80 %很可能起源于程序模块中的 20 %。当然,问题在于如何孤立这些有疑点的模块并进行彻底的测试。
4、测试应从“小规模 ”开始,逐步转向“大规模 ”。最初的测试通常把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
5、穷举测试是不可能的。即使是一个大小适度的程序,其路径排列的数量也非常大。因此,在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。
6、为了达到最佳效果,应该由独立的第三方来构造测试。“最佳效果”指最有可能发现错误的测试(测试的主要目标),所以创建系统的软件工程师并不是构造软件测试的最佳人选。 7、不充分的测试是不负责任的;过分的测试是一种资源的浪费,同样也是一种不负责任的表现.
|