文档库

最新最全的文档下载
当前位置:文档库 > 软件测试方法

软件测试方法

软件测试方法

一、方法分类

软件的测试方法很多,不同的出发点得到不同的测试方法。有:

1、从测试过程来分:静态分析法、动态测试法;

2、从观察结构的透明性方式来分:白盒法、黑盒法、灰盒法;

3、从获得测试数据形式上分:穷尽法、等价类划分法、边界值分析法;

4、从逻辑分析上分:因果图法、错误推测法;

5、从测试步骤上分:单元测试、集成测试、确认测试、系统测试、验证测试;

6、从考察形式上分:功能测试、逻辑测试;

如何测试得更完全、怎样进行测试用例的设计,是软件测试中的关键技术。无论用哪种方法进行测试,都是设法用较少的测试用例集合测试出程序中较多的潜在错误。

二、方法介绍

1、静态测试

静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测,主要方法包括:

(1)人工测试———人工测试是指不依靠计算机而靠人工审查程序或软件。(2)计算机辅助静态分析———计算机辅助静态分析是指利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种错误和可疑的程序构造。

2、动态测试

动态测试是实际运行被测程序,输入相应的测试用例,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性。一般意义上的测试主要是指动态测试。根据动态测试在软件开发过程中所处的阶段和作用,动态测试可分为如下几个步骤:

(1)单元测试———单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知

识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构;还可能需要开发测试驱动器模块或测试套具。

(2)集成测试———集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。

(3)确认测试———通过集成测试后,软件已完全组装起来,接口方面的错误也已排除,确认测试即可开始。确认测试应检查软件能否按合同要求进行工作,即是否满足系统说明书中的确认标准。首先要进行有效性测试以及软件配置评审,然后进行验收测试和安装测试。

(4)系统测试———系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。(5)验收测试———验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。

3、黑盒测试

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。黑盒测试主要用于软件确认测试。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有:

(1)等价类划分———等价类划分是一种典型的黑盒测试方法。等价类是指测试相同目标或者暴露相同错误的一组测试用例,等价类划分是将数量巨大的输入数据(有效的和无效地)划分成若干等价类,在每一个等价类中选取一个代表性

的输入数据作为测试的输入条件,通过这些少量代表性测试数据覆盖整个输入数据集合,取得良好的测试效果。

(2)边界值分析———从长期的实践中得知,处理边界情况时,程序最容易发生错误。所以,在设计测试用例时,应该选择一些边界值,这就是边界值分析的测试技术。边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。(3)因果图法———因果图是设计测试用例的一种工具,他主要检查输入条件的组合。等价类划分、边界值分析的测试用例设计方法还不能考虑到组合输入条件可能引起软件错误,而因果图法则弥补了这个不足之处。

(4)错误推测法———人们可以凭借经验、直觉和预感测试软件中可能存在的各种错误,从而有针对性地设计测试用例。根据经验积累和直觉判断,列出软件中可能存在的错误和容易发生错误的情况,针对这些情况选择测试用例。

4、白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。白盒测试主要用于软件验证。白盒测试的主要方法有:

(1)逻辑覆盖———逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,根据覆盖的范围不同,又可分为语句覆盖、分支覆盖、条件覆盖等。(2)路径测试———路径测试是设计足够的测试用例,覆盖程序中所以可能的路径。在路径数目很大时,真正做到完全覆盖是很困难的,这是就需要把覆盖路径数目压缩到一定限度。

5、灰盒测试

灰盒法是白盒法和黑盒法相结合使用的方法,仅对重点路径和程序段用白盒法测试,大部分用黑盒法进行测试。

三、方法优缺点

.1、静态测试的优缺点:

静态测试是通过对软件的程序源代码和各类文档或中间产品(产品规格说明书、技术设计文档),采用走查、同行评审、会审等方法来查找错误或收集所需要的度量数据,而不需要运行程序,所以相对动态测试,可以更早地进行。静

态分析的查错和分析功能是其他方法所不能替代的,静态分析能发现文档中问题(也只能通过静态测试实现),通过文档中问题或其他软件评审方法来发现需求分析、软件设计等问题,而且能有效地检查代码是否具有可读性、可维护性,是否遵守编程规范,包括代码风格、变量/对象/类的命名、注释行等。静态测试已被当做一种自动化的、主要的代码校验方法。但静态测试不能检测程序的实际执行情况,无法得到程序的执行结果。

2、动态测试地优缺点:

动态测试是通过观察程序运行时所表现出来的状态、行为等发现软件缺陷,包括在程序运行时,通过有效的测试用例(对应的输入/输出关系)来分析被测程序的运行情况、或进行跟踪对比,发现程序所表现的行为与设计规格或客户需求不一致的问题。动态测试是一种经常运用的测试方法,无论在单元测试、集成测试中,还是在系统测试、验收测试中,都是一种有效的测试方法。但动态测试不能发现文档问题,必须等待程序代码完成后进行,发现问题相对迟得多,一旦发现问题,必须重新设计、重新编码,必然增大不良质量的成本。

3、黑盒测试的优缺点:

黑盒测试着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。黑盒测试是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试方法,不考虑程序内部结构和内部特性,而是从用户观点出发,针对程序接口和用户界面进行测试,根据产品应该实现的实际功能和已经定义好的产品规格,来验证产品所应该具有的功能是否实现,是否满足用户的要求。所以,黑盒测试方法技术相对要求低,方法简单有效,可以整体测试系统的行为,可以从头到尾进行数据完整性测试。黑盒测试方法适合系统的功能测试、易用性测试,也适合和用户共同进行验收测试、软件确认测试。黑盒测试方法不适合单元测试、集成测试,而且测试结果的覆盖度不容易度量,其测试的潜在风险比较高。

4、白盒测试的优缺点:

白盒测试全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒测试是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。由于白盒测试方法,已知产品的内部工作过程,针对性很强,可以对程序每一行语句、每一个条件或分支进行测试,测试效率比较高,而且可以清楚已测试的覆盖程度。如果时间足够多,可以保证所有的语句和条件得到测试,测试的覆盖程度达到很高。所以白盒测试方法适合单元测试、集成测试,而不适合系统测试。白盒测试方法准备的时间很长,如果要覆盖全部程序语句、分支的测试,一般花费比编程更长的时间。白盒测试方法所要求的技术也较高,相应的测试成本要大。对于一个应用的系统,程序的路径数可能是一个天文数字,即使借助一些测试工具,白盒测试法也不可能进行穷举测试,企图遍历所有的路径往往是做不到的。即使穷举路径测试,也不能查出程序违反了设计规范的地方,不能发现程序中已实现但不是用户所需要的功能,可能发现不了一些与数据相关的错误或用户操作行为的缺陷。所以白盒测试方法也存在一定的局限性。

电子1301

黄凤玲

201303020106