2MILY: 黑体">. 动态测试方法
静态测试只能定性的分析软件的质量,而不能定量。从这种意义上讲,静态测试是有很大的局限性,但这并不否定静态测试的重要性,因为,就发现一个错误而言,动态测试的花费要大得多。
所谓动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。因此,动态测试只存在于软件生存期的编码阶段之后。动态测试包括两个基本要素:一是被测程序,二是用于运行软件的数据,称为测试数据,程序一次运行所需要的测试数据称为测试用例,所以测试数据是测试用例的集合。
动态测试的流程如图1.6所示。因此,一个成熟的动态测试软件必须回答下列问题:
1) 如何选择或产生测试用例?
2) 如何组织软件的测试运行?
3) 如何考察和记录软件动态运行的行为?
4) 如何判断软件动态行为的正确性?
5) 测试过程如何结束?
6) 如何通过软件测试的结果分析软件的某些性质,如软件的可靠性等?
动态测试近三十年来,由于有其比较强的错误检测能力,受到人们的普遍重视,产生了许多测试方法。这些方法可以从两个角度对其进行分类。
(1)按照产生测试数据以及判断测试充分性的方法:可以分为如下四类:
1)结构性测试。结构性测试旨在充分地覆盖软件的结构,并以软件中的某些元素是否都已得到测试为准则来判断软件测试的充分性。本书将在第四章做详细介绍。
2)排错性测试。排错性测试旨在排除软件中包含某类错误的可能性,并根据一个测试数据集排除软件错误可能性的能力来度量其测试的充分性。
3)分域测试。分域测试方法通过对软件的实现或/和软件需求进行分析,将软件的输入空间划分成一系列子空间,然后在每一个子空间内选择一个或多个测试用例。
4)功能测试。功能测试是根据软件所需的功能或/和所实现的功能选择测试数据,分析测试的充分性。
(2)按照产生测试数据所根据的信息来源:可以分为下列四类:
1)以程序为基础的测试。它通过对程序的分析来产生测试数据,它还以程序被执行的程度来判断测试是否充分。
2)以需求和功能的规约为基础的测试。它通过分析软件的需求和功能规约来产生测试数据,并根据软件需求和功能规约中所规定的功能和性能是否都得到了充分的检验来判断测试是否充分。
3)程序和需求相结合的测试。它综合考虑软件的需求和实现来产生测试数据,判断测试的充分性,这是目前最常用的方法,可以拟补(1)和(2)单个方法的不足。
4)以界面为基础的测试。以界面为基础的测试仅仅依靠软件与其运行环境之间的界面来产生测试数据,并以界面和界面内所包含的功能是否都得到测试来判断测试的充分性。这是面向对象技术常用的测试方法。
3.黑盒测试方法
黑盒测试又称功能测试、数据驱动测试和基于规格说明的测试。用这种方法进行程序测试时,被测程序被当作一个打不开的黑盒,测试者是在完全不知道程序内部结构的情况下进行的,而只需知道程序的输入和输出之间的关系亦可。因此,黑盒测试是基于用户的测试。测试者正是依靠这个关系来产生测试用例,并判断运行结果的正确性。进行黑盒测试必须要弄清楚下列几个问题:
(1)软件的功能到底有多少?这是进行黑盒测试所必须的,否则,测试是不可能充分的。
(2)测试的层次是什么?也就是说,测试要在哪个层次上进行。因为,在软件的总体功能之下可能有若干个层次的功能,在需求分析层描述的功能一般比较粗,在这个层次上进行测试可能会漏掉一些细节。而在代码层则一般比较细,但在这个层次上进行测试可能会忽视各个功能之间存在的相互作用和相互依赖的关系。因此测试人员需要考虑并兼顾各个层次的功能。也正是由于这个原因,使得黑盒测试的影响大大降低。
黑盒测试是必要的,有时也是必须的。所谓是必须的,是作为测试者而言,并不总能得到程序的源代码,而往往只有程序的说明书和执行代码,在此情况下,唯一的测试方法就必须采用黑盒测试技术。所谓必要的,是相对白盒测试而言的,主要表现如下几个方面:
(1)白盒测试并不是最后的测试手段,因为白盒测试验证不了诸如软件可靠性等参数,而这恰恰是黑盒测试所要做的工作。
(2)黑盒测试不能对程序的特定部位进行测试,因而无法对程序进行排错。而这恰恰是白盒测试可以做到的。
对一般的测试软件系统,采用黑盒测试和白盒测试相结合的测试方法,往往会取得更好的测试效果。
4.白盒测试方法
白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。用这种方法进行程序测试时,测试者可以看到被测程序,并利用其分析程序的内部构造。因此,白盒测试是基于程序的测试。白盒测试是根据被测程序的内部结构设计测试用例的一类测试。它要求对被测程序的结构特性做到一定程度的覆盖,因此,白盒测试也称为基于覆盖的测试技术。到目前为止,已经提出了几十种覆盖技术,我们将在第四章做详细论述。但必须说明无论那种白盒测试的覆盖技术,即使达到100%的覆盖率,也不能保障把所有的错误都检测出来。对于某些在规格说明书中规定的,但在实现中被漏掉的功能,无论那一种测试也检测不出来的。因此,提高结构测试的覆盖率只能增强人们对被测软件的信心。
动态测试和静态测试是一种分类方法,黑盒测试与白盒测试又是另外的一种分类方法。二者是有许多交叉的。动态测试含有黑盒测试与白盒测试,静态测试一般只含有白盒测试。黑盒测试一般都是动态测试,而白盒测试一般都包含动态测试和静态测试。
文章来源于领测软件测试网 https://www.ltesting.net/