探索性测试方法分析

时间:2022-07-13 04:01:43

探索性测试方法分析

摘要:探索性测试是有别于传统测试的测试技术,更是一种测试思维,探索性测试重点在于软件系统的学习分析、测试用例的设计、测试用例的执行三者同时进行,边测试边学习被测软件,这样可以在认识不充分的情况下快速找到重大缺陷。大量研究表明探索性软件测试是对传统软件测试理论的很好补充,合理的利用探索性测试,能够显著提高软件的测试效率。

关键词:软件测试;测试方法;探索性测试

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 19-0000-02

1 引言

面对当今信息化水平的不断提高,软件测试技术也取得了不断的发展,探索性测试逐渐登上舞台,受到了软件测试人员的重视。探索性测试是一种新的测试思维方式,应该是测试人员必须掌握的。探索性测试是软件测试领域比较前沿的理论,特别适用于那些事先没有能够进行详细测试设计或者要求在短时间内发现被测软件一些重要缺陷的情况,使用探索性测试能显著提高软件测试的效率[1,5]。

探索性软件测试具有强大的缺陷发现能力,而这一能力是其得到众多青睐的重要原因,如微软就建立了专门的探索性测试团队,探索性测试也是微软官方的验证测试方法之一,部分第三方软件如果需要取得微软的兼容证书,必须通过微软的探索性测试[2]。

2 探索性测试的概念和基本思想

2.1 探索性测试的概念

探索性测试的定义很多,探索性测试的创始人James Bach 对探索性测试的定义为[2]:了解被测软件,设计测试用例,执行测试同时进行的软件测试技术。简单点说就是事先不进行计划和设计的一种特殊类型的测试,由有经验的测试人员根据实际情况,凭借自身的测试经验和对系统的认识来进行测试,而正是因为这一特点,往往能帮助测试人员在测试设计之外发现更多的软件缺陷。

2.2 探索性测试的基本思想

探索性测试强调系统软件学习、测试设计和测试执行的同时进行,这样对传统测试方法中要求测试文档(计划、设计)必须非常详细和明确、测试用例的设计和执行必须依赖开发文档、测试执行的过程必须依照测试用例的设计等都是一个很好的补充。

探索性测试强调的同时性是相对于传统软件测试过程中的“先设计,后执行”来说的,测试人员通过测试来不断学习被测系统,同时把学习到的关于被测软件的更多信息通过综合的整理和分析创造出更多的关于测试的注意。传统测试方式强调设计完善的测试用例,测试人员严格按照测试用例执行测试,而探索性测试是一种新的测试思维,强调的是测试过程中要有更多的发散思维,这也是与传统测试方式的最大区别。探索性测试并不是孤立的测试方法,我们在实际的测试过程中都会不自觉的使用它,比如当开发人员修改完一个缺陷后,我们在进行确认时,一些有经验的测试人员不仅仅是对该缺陷进行确认,他们会进行一些额外的测试来探索修复该缺陷是否对某些功能产生影响,这就是典型的探索性测试,我们只有不断的丰富自身测试经验、提高敏锐性,才能够在合适的测试项目、适当的时机引入探索性测试,达到测试目的。

3 探索性测试的特征及优缺点

探索性测试事先没有明确的测试计划,也没有详细的测试说明,要根据测试的实际情况来及时的设计出测试用例,它是测试人员依据测试任务进行主动的、探索式的测试。这意味着探索性测试的开展要比传统测试具备更多的测试经验和主观能动性,而且要具备更强的测试用例设计能力,此外,还需要很强的观察能力,思维能力。

3.1 探索性测试的特征[4]:

探索性测试强调软件系统学习、测试设计和测试执行同时进行;测试人员在测试的过程中不断学习被测试系统,然后再根据学习的内容来指导测试,是一循环过程;探索性测试的重点是创新和主观能动性。

3.2 探索性测试的优点:

比传统的测试方法灵活;测试文档可以不充分;能够发现测试设计以外的缺陷;增强了发现难以发现的缺陷的能力;可以激发测试人员的创造性和主观能动性。

3.3 探索性测试的缺点:

事先对测试工作没有一个整体规划,不利于测试的标准化;测试可能存在重复性,不能确定哪些测试已经被执行过;难于驾驭,测试结果难以评估,难以在软件测试工作中大量普及应用。

4 探索性测试方法与传统测试方法的比较

4.1 传统测试方法

以V模型和W模型为代表的传统理论的软件测试,要求在软件设计开发的同时就引入软件测试。例如在V模型中,如图1所示[3],在软件开发的系统需求分析、软件需求分析、软件概要设计、软件详细设计阶段分别需要引入系统测试、配置项测试、部件测试、单元测试。这些测试都要求事先设计好测试用例,写好测试脚本。在实际的测试过程中往往会出现这样的情况,测试工程师花在测试设计和报告填写上的时间远远超过了真正的执行测试时间。

4.2 探索性测试方法

如图2模型所示,使用探索性方法进行软件测试,首先在了解软件需求和开发文档,了解测试任务、软件运行环境、测试环境制定测试计划的同时,根据已经掌握的情况,对被测试软件进行初次的测试用例设计,利用设计出来的测试用例,进行探索性软件测试执行。将测试的执行结果,一方面反馈到设计好的测试用例中去,对已有的测试用例进行修改;另一方面又可以进一步利用对测试过程及测试结果中的信息,加强对软件系统的学习了解,设计出新的测试用例,执行测试。如此反复循环,直至完成原先设定的测试目标。

图2 探索性软件测试模型图

5 探索性测试的应用

5.1 实验数据分析

首先通过两组实验数据来分析探索性测试在实际工作的应用,被测软件是一个大约3万行的零售行业软件,预埋缺陷24个。

通过这两组实验数据,我们可以观察到以下三点:

(1)在传统测试方法中,结合使用探索性测试方法,缺陷的检出率明显高于单一的使用传统测试方法;

(2)探索性测试能发现更多测试设计以外的缺陷;

(3)进行探索性测试时,测试人员的经验、态度、思维方法等方面都会影响测试的效果。

该实验目的不是去证明探索性测试与传统测试方法哪种更优秀,因为并不是所有的测试活动都适合使用探索性测试,只是希望在进行传统测试方法时结合采用探索性测试。探索性测试一般适合在以下一些场景中使用,比如:需要快速了解产品质量;需要在短时间内发现软件的重大缺陷;测试设计以外缺陷的检查;已进行过传统测试,需要对某一特定类型缺陷再进行测试;功能较为单一的小规模软件;大型项目的回归测试等,探索性测试并不是孤立的测试方法,我们在实际的测试过程中都会不自觉的使用它,比如当开发人员修改完一个缺陷后,我们在进行确认时,一些有经验的测试人员不仅仅是对该缺陷进行确认,他们会进行一些额外的测试来探索修复该缺陷是否对某些功能产生影响,这就是典型的探索性测试。

5.2 探索性测试的管理及步骤

那么,我们在进行探索性测试时如何进行过程控制和管理的,通常情况下根据测试主管在测试项目中的作用可以分为以下两种方式进行[6]:一种是由测试主管分配需要测试的模块,他不参与具体的测试任务;测试人员来完成这些模块的测试,并且将测试中的问题进行报告;测试主管根据测试情况定期召开项目组会议。另一种是测试主管和测试人员一样参与某些测试任务;测试主管在测试过程中实时的根据测试质量和测试进度调整测试策略;测试主管持续的了解整个测试过程,与测试人员一起探讨测试策略。

这两种测试管理方式是目前国内外都普遍适用的方式,在任何一种管理模式下进行探索性测试,测试主管和测试人员都必须经过以下几个步骤:

(1)识别软件系统的目的,了解该软件系统测试的重点及要达到的目标;

(2)识别软件系统提供的功能,梳理出整个软件系统的需要进行测试的所有模块;

(3)识别软件系统潜在的不稳定区域,与开发人员及测试人员讨论,筛选出缺陷可能出现较多的模块;

(4)在探索软件系统的过程中记录关于软件的信息和问题,记录好测试步骤以便进行下一轮回归测试。

6 结束语

本文探讨了探索性测试方法的基本原理并阐述了探索性测试的优缺点及能解决的问题,但并不是说用它来取代现有传统测试方法,它只是对传统测试方法的一种很好的补充,它适合在某一特定环境和要求下进行。探索性测试要求充分发挥测试人员的个人能力,要求测试人员有很好的主观能动性,需要把自身的经验技能及对系统的学习认知作为参考,灵活地经行测试设计和执行,只有在适合的项目、在合理的时机引入探索性测试才能充分发挥它的优势,才能够显著提高软件的测试效率,达到事半功倍的效果。

参考文献:

[1]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992:34~37.

[2]James A.Whittaker.探索式软件测试[M].方敏,张胜,等译.北京:清华大学出版社,2010,4:9~15.

[3]练荣政.一个基于探索性软件测试理论的测试用例生成系统的研究与实现[D].北京交通大学硕士学位论文,2008.06.

[4]谢经纬,吴昊.探索性方法在面向故障软件测试中的应用[J].微计算机信息,2010,26(921):145~146.

[5]段念.探索性软件概述[EB/OL].http://,2006,07.

[6]高翔.探索性测试进度控制的方法 51测试天地,2010,04.

[作者简介]

朱昭俊(1983-),男,本科,现就职于中船重工集团第七二二研究所,主要从事软件测试与过程改进方面的工作。

上一篇:MYSQL数据库自动测评系统的研究 下一篇:我国计算机软件技术的现状及发展趋势探析