首页 理论教育 软件测试的分类研究成果

软件测试的分类研究成果

时间:2023-10-17 理论教育 版权反馈
【摘要】:6.2.1.2静态测试与动态测试根据程序是否运行,测试可以分为静态测试和动态测试。

软件测试的分类研究成果

▶6.2.1.1 “白盒”测试与“黑盒”测试

根据是针对软件系统的内部结构,还是针对软件系统的外部表现行为所采取的不同的测试方法,分别称为“白盒”测试方法和“黑盒”测试方法。[1]

“白盒”测试也称结构测试或逻辑驱动测试,也就是已知产品的内部工作过程,清楚最终生成软件产品的计算机程序结构及其语句,按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等,检验程序中的每条通路是否都能按预定要求正确工作,检查程序内部动作或运行是否符合设计规格要求,所有内部成分是否按规定正常运行。

“黑盒”测试也称功能测试或者数据驱动测试,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下。测试人员针对软件直接进行测试,检查系统功能是否能够按照需求规格说明书的规定正常使用、是否能适当地接收输入数据同时输出正确的结果,检查相应的文档是否采用了正确的模板、是否满足规范要求等。

“黑盒”测试方法不关注软件内部结构,而是着眼于程序外部用户界面、关注软件的输入和输出,关注用户的需求,从用户的角度验证软件功能,实现端到端的测试。黑盒测试方法根据用户的体验评估软件的质量,验证产品每个功能是否都能正常使用、是否满足用户的要求。

▶6.2.1.2 静态测试与动态测试

根据程序是否运行,测试可以分为静态测试和动态测试。早期,测试仅仅局限于对程序进行动态测试,可以看作是狭义测试概念。而现在将需求和设计的评审也纳入测试的范畴,可以看作是广义测试概念或现代测试概念。

静态测试,就是静态分析,对模块的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和仿真。静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等。静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多的测试人员采用工具进行自动化分析。

动态测试是通过运行程序以发现错误。通过观察代码运行过程,获取系统行为、变量实时结果、内存、堆栈线程以及测试覆盖度等各方面的信息,以判断系统是否存在问题;或者通过有效的测试用例及对应的输入输出关系来分析被测试程序的运行情况,从而发现缺陷。(www.xing528.com)

▶6.2.1.3 手工测试与自动化测试

手工测试是传统的测试方法,由测试人员手工编写测试用例进行测试。其缺点在于测试工作量大、重复多,且回归测试难以实现。自动化测试则利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告。自动化测试可节省大量的测试开销,且能够完成一些手工测试无法实现的测试。

无论是手工测试还是自动化测试都是保障软件质量的一个途径。如何更好地使两者相互结合,何时应该应用手工测试、何时应该应用自动化测试也是需要注意的话题。

对于一些基本的、逻辑性不强的操作,可以使用自动化测试工具。应该说,现在在性能测试、压力测试等方面,自动化测试有其不可替代的优势。它可以用简单的脚本,实现大量的重复的操作,进而通过对测试结果的分析得出结论。这样不仅节省了大量的人力和物力,而且使测试结果更加准确。对于一些逻辑性很强的操作,如果自动化测试不是很完善的话,不建议使用。因为这需要比较复杂的脚本语言,不可避免地增加了由于测试脚本的缺陷所造成的测试结果错误的误差。这时就需要采用手动测试了。

手工测试也存在一些缺陷,手工测试者最常做的就是重复的手工回归测试,不但代价昂贵,而且容易出错。自动化测试可以减少但不能消除这种工作的工作量。测试者可以有更多的时间去从事更有趣的测试,例如在应用程序复杂的场景下的不同处理等。尽管测试就是要花费更长的时间找到错误,但并不意味着因此需要付出更高的代价,所以选择正确的测试方法尤为重要。

▶6.2.1.4 基于生命周期的软件测试

按照传统的软件生命周期的观点,测试是在编程活动之后进行的,是软件开发的最后一个阶段。随着人们对软件工程化的重视以及软件规模的日益扩大,软件分析、设计的作用越来越突出。而且有资料表明,60%以上的软件错误并不是程序错误,而是需求分析和系统设计错误。因此,在需求和设计阶段就能发现软件的缺陷,那么修正所需的花费比在编程完成后再进行测试所需的花费少很多。因此,做好软件需求和设计阶段的测试工作就显得非常重要,这就使得传统的测试概念扩大化,从而提出了软件生命周期测试的概念。

生命周期测试伴随着整个软件开发周期,此时测试的对象不仅仅是程序,需求、功能和设计同样要测试。如在项目需求分析阶段就要开始参与,审查需求分析文档、产品规格说明书;在设计阶段,要审查系统设计文档、程序设计流程图、数据流图等;在代码编写阶段,需要审查代码,看是否遵守代码的变量定义规则、是否有足够的注释行等。测试与开发同步进行,有利于尽早地发现问题,同时缩短项目的开发周期。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈