X测试模型的改进与应用

2011-09-07 10:17雷钰锋蔡伟鸿
计算机工程与设计 2011年8期
关键词:测试人员探索性软件测试

熊 智, 刘 莉, 雷钰锋, 蔡伟鸿

(汕头大学计算机系,广东汕头515063)

0 引 言

随着软件应用领域的扩张,软件产品逐渐趋于大型化、复杂化,与此同时,软件的质量控制却越来越难以实施[1]。国内许多软件公司的软件开发管理能力相对薄弱,致使不少产品在开发完成之后无法正常投入使用,即使勉强上线,也往往因为出现过多难以解决的问题而最终宣布失败,导致人力和物力的极大浪费。在这样的背景下,软件测试模型作为保证软件测试工作效率和质量的结构框架,亟需通过强化和改进来适应不断复杂化的软件开发过程[2]。

软件测试模型用于规范测试的进行过程,以保证软件测试的效率和效果。随着软件开发与测试技术的进步,一般测试模型已较难适应当前软件的开发测试过程[3]。文献[4]提出的新软件测试模型没有针对具体的范围表现出其应用优势;文献[5]提出的基于行为的软件测试过程模型无法灵活处理中小型系统在测试过程中存在的问题;文献[6]结合敏捷开发模式的改进X测试模型没有考虑客户对开发过程的影响和如何处理需求改变等问题。本文通过研究各类测试模型的特点,着重对目前应用最为广泛的X测试模型进行了分析,结合其在实际开发测试中所暴露出的问题,对其进行了改进,并应用于数字版权运营平台的二次开发测试中,取得了较好的效果。应用结果表明,改进的X测试模型很好地指导测试人员选择合适的测试方法、制定合理的测试计划,达到了节省软件成本和提高软件质量的目的。

1 传统的X测试模型

软件测试V模型把系统开发划分成具有严格边界的不同阶段,测试是在开发完成之后对程序进行检查的一个过程,但是 V测试模型在实际应用中的不足遭受到了不少批评和质疑。此后改进的 W 测试模型强调的是测试伴随整个软件开发周期,测试的对象包括需求、设计和代码,然而W模型无法支持开发时发生的变更和迭代过程。X测试模型是在经典V模型的基础上衍生来的一种基于实践的测试模型,弥补了V测试模型的部分缺陷[7]。如图1所示。

图1 X测试模型

X测试模型针对单独程序片段进行相互独立的编码和测试,此后将通过频繁的交接成为可执行的程序,再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。X测试模型还定位了探索性测试,该测试抛弃了繁杂的测试计划和测试用例的编写过程,往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误[8]。

目前,随着X测试模型的广泛应用,在具体项目的开发测试过程中也显现出了一定的局限性,如结构过于松散和执行过程不够严谨。具体表现如下:

(1)缺乏客户的参与,没有考虑到需求对软件开发的影响,而大部分软件的失败都源于系统没有满足用户的需求。

(2)缺少测试后的验证过程,无法验证经过修正的系统是否修复了原有的错误,以及在修改的过程中是否出现新的错误,系统的最终质量得不到有效保证。

(3)X测试模型虽然允许在开发过程中发生需求的改变,但在模型中却没有给出相关处理方案。

(4)过于注重对测试人员要求较高的探索性测试。在实际测试中,大部分测试人员对探索性测试的认识不够,容易造成人力、物力和财力的浪费。

2 改进的X测试模型

本文的主要工作是在X测试模型的基础上,结合实际项目的开发测试经验,提出了改进的X测试模型。新模型对测试活动的开展顺序做了调整,增加了迭代和回归测试过程,并对各阶段的测试工作进行了验证,把测试人员和具体的测试工作关联起来,提出测试需定义终止条件,以使改进的X测试模型尽可能多地适用各种具体情况下的项目测试过程[9]。

2.1 X测试模型的改进

针对传统X测试模型过于松散化和不够严谨的不足,本文对其进行了改进,改进的X测试模型大体框架:采用自底向上的测试方法,先对小模块进行测试,再集成通过测试的模块做集成测试;在每个模块的测试执行前定义相应的准备工作,包括验证需求、功能确认、设计测试计划、选择测试工具、编写测试用例;开发测试过程以文档为参考,但不完全依赖项目文档,允许在开发过程的各个部分发生需求和计划的变更;模型引入了回归测试、探索性测试和验收测试,当需求发生改变时,考虑采用迭代过程。改进的X测试模型解决了传统X测试模型在开发测试过程中产生的一系列问题,更加适合实际应用。改进的X测试模型如图2所示。

图2 改进的X测试模型

改进的X测试模型仍保留原模型X字型的模型框架,左半部分表示n个单独的模块可以并行测试。模型右边表示通过测试的小模块不断地交接,集成为小型系统并进行集成测试,再发布已通过集成测试的小型系统,然后集成新的模块对其测试与再发布。改进的X测试模型中间两条较短的X线条表示迭代的过程可追溯到开发周期的任一阶段,测试过程与其相对应。新模型用右边比左边稍低来说明集成测试必须在至少2个模块通过了单元测试后才能进行。

2.2 改进的X测试模型的优势

本文通过对X测试模型做了一系列的改进从而弥补了原模型的一些不足,下面介绍了改进的X测试模型如何很好地解决原模型在实际应用中遇到的几个问题,并就以下问题给出了具体解决方法。

(1)产品不符合客户要求

改进的X测试模型让客户和用户不同程度地参与到了测试过程中,并在测试的各个阶段对其进行了分工协作,使其发挥监督软件正确开发的作用。改进的X测试模型在测试前期加入了对需求的验证和系统设计的确认,这样保证了程序员编写出来的代码符合客户的要求;在集成测试的最后阶段加入了验收测试这一过程,客户和用户一起参与到验收测试中来以确定开发的系统是满足客户需要的。通过这些改进,避免了原X测试模型由于没有考虑客户需求而发生开发出来的系统偏离原意的严重错误。

(2)产品最终质量无法保证

模型左右两边都在测试后加入了回归测试过程,用以识别上一轮测试发现的错误是否被改正以及改正后会否引入新的错误。回归测试不能无限制进行,这样过于浪费人力与财力。为了在质量和成本之间维持一个很好的平衡,改进的X测试模型引入了测试终止这一概念,不同项目组可以根据对系统质量的需求和开发成本制定合适的停止判别条件,这样一来既控制了成本也最大限度地保证了软件质量。

(3)客户需求发生改变

改进的X测试模型在每个模块测试和集成测试中加入了迭代的过程,这里的迭代包括两种情况:当用户需求发生变化时,程序要进行很大的改动,那么开发过程需要迭代,这时测试也跟随着发生变化;客户的性能测试需求发生了变化,或客户对测试结果不满意,那么迭代就有可能回溯到测试的各个阶段。迭代的过程解决了如何处理客户需求发生改变的情况,对原X模型的“容许需求改变”做了很好的补充。

(4)测试效率与成本问题

改进的X测试模型把还处于不成熟阶段的探索性测试安插在测试过程中,由测试组长随机执行。因为大部分测试人员对探索性测试还不太熟悉,而探索性测试对于测试人员的要求较高,要是过于注重该测试,不仅无法发挥其优势,还可能造成人力物力的浪费。由经验丰富的测试组长来执行探索性测试,既不影响测试的其它步骤,又有可能发现更多的错误。

3 改进的X测试模型的应用

数字版权运营平台是一个具有数字版权的电子产品交易平台,该平台已完成了开发测试工作,但在运行中暴露了较多问题,并且由于客户新增了功能和性能上的需求,模块基本需要重写,因此我们对其进行了二次开发。本文将原来的平台称为旧版本(V1.0),二次开发的版本称为新版本(V2.0)。在旧版本的开发测试过程中使用的是X测试模型,而新版本则采用了改进的X测试模型。

3.1 数字版权运营平台框架

数字版权运营平台通过对数字产品进行加密、添加水印、控制权限的方法来保护商品版权,整个交易过程在网站平台上进行,并通过CA认证来管理注册会员的个人信息。平台的系统结构如图3所示。

该运营平台具有以下特点:系统结构复杂,模块和开发人员众多;客户需求伴随应用环境的变化时常改变;系统开发周期较短,开发完一部分功能后会进行小型发布与试用。上述特点导致使用传统的X测试模型不能很好地适用于该平台的开发测试,无法解决测试角色的配置、修复错误后出现的新BUG、产品偏离客户要求和客户需求变更等问题。

图3 数字版权运营平台系统结构

在平台V1.0版本的开发测试工作中遇到了以下困难:①测试人员数量多、人员角色模糊,以至于各项测试工作不能具体分配到适当的人员身上,导致测试效率低下、测试进度缓慢;②开发人员在修改BUG的时候经常又引入了新的错误,而测试小组并没有对修改后的系统及时进行测试,以致系统完成后问题不断;③客户认为发布的小型系统不是他们需要的,因此客户和开发小组两边互相抱怨;④客户需求不断变更并经常提出新的要求,致使开发工作不能按计划进行。以上问题导致软件开发过程中发现的错误率(错误个数/测试用例个数)较低,而验收阶段却出现了较多错误。

3.2 测试方法与步骤

本文把改进的X测试模型应用到数字版权运营平台的二次开发测试中,项目经理在开发前依照客户的需求做了总体设计,把整个开发工作按功能划分成了多个子模块,并把每个子模块的实现工作分配给不同的程序员。整个平台由项目经理负责整体设计和整合,开发过程的具体工作按结构图的第二层划分为4个小组,每个小组由组长负责下面模块的分工和整合。测试工作在项目得到需求分析阶段便开始了,具体步骤如下:

(1)项目经理、客户和测试人员共同确认需求的正确性,之后被分配到模块的程序员开始做模块设计,模块设计可以通过文档或原型化模型来体现,由设计人员和测试人员验证是否符合需求。

(2)模块设计完成后,通过与客户沟通交流来确定模块的功能和界面满足他们的要求,然后程序员开始编码,测试人员设计测试计划、编写测试用例,各个模块的工作同时进行。

(3)编码完成后,测试人员按照测试用例执行测试,测试组长可以随机地进行探索性测试,把测试结果以报告形式反馈给开发人员,然后再做回归测试,验证BUG已被修复和没有出现新的BUG,回归测试的次数由开发和测试时间进度来决定。

(4)开发过程中,客户的需求发生变化或是开发出来的模块不满足客户的要求时,便调出上阶段做的测试验证工作,找出问题出在哪阶段,只在出问题的地方进行编码和测试的迭代,而不需要从头来做。

(5)通过测试的模块被集成以后,测试人员对其进行集成测试,包括功能测试、性能测试、界面测试、安全测试等,经过客户验收以后,然后进行小型的发布。

(6)新开发的模块经过以上的过程再不断地集成进来,直至系统完成所有的功能模块。

3.3 应用效果及分析

本文在对数字版权运营平台的测试过程中,严格依照改进的X测试模型顺利地完成了测试任务,并取得了较好的效果。在系统二次开发前先对测试人员与测试工作进行合理配置,通过开发早期的需求验证和设计测试发现了不少错误并做了及时修正,回归测试阶段修复了新出现的BUG,运用迭代很好地处理了用户需求的变更。通过与旧版本的开发测试中应用传统X测试模型的结果进行比较,改进的X测试模型灵活地处理了前期遇到的问题。表1对数字版权运营平台V1.0版本与V2.0版本的测试结果进行了比较。

从表1中可以看出,二次开发测试周期是以前的一半,而测试用例数量是以前的近1.4倍。系统V2.0版本在需求分析和系统设计阶段进行了验证,分别发现了11%和13%的错误;V2.0在开发阶段发现的错误率是28%,后期错误率逐渐减小,V1.0在开发期间发现的错误率是17%;V2.0在验收阶段只有4%的错误率,而V1.0在验收阶段的出错率达25%。实践表明,改进的X模型能够使缺陷和错误尽早地暴露出来,减少后期的维护工作,提高软件质量。

表1 数字版权运营平台V1.0与V2.0平台测试结果对比

4 结束语

本文针对目前常用的X测试模型结构松散和不够严谨的不足,提出了改进的X测试模型,该模型紧跟软件工程技术的发展趋势,在原模型基础上增加了回归测试和验收测试过程,对测试人员与测试方法间的关联进行了调整,强调客户的参与和测试需终止,从而解决了产品不符合客户要求、客户需求改变、测试效率低等问题。将改进的X测试模型应用到数字版权运营平台的开发测试过程中,应用结果表明,该模型能有效地指导测试资源的分配和测试活动的执行,使问题尽早暴露出来,减少开发成本,从而提高了开发测试效率和软件质量。改进的X测试模型在大中型项目的开发测试过程中取得了较好的效果,接下来的工作将把该测试模型应用到更多的项目开发实践中,并针对遇到的问题不断进行完善,以增强模型的兼容性和适应性。

[1]Wongthongtham P,Chang E,Dillon T,et al.Development of a software engineering ontology for multisite software development[J].IEEE Transactions on Knowledge and Data Engineering,2009,8(21):1205-1217.

[2]Shari Lawrence Pfleeger,Joanne M Atlee.软件工程[M].3 版.北京:人民邮电出版社,2009.

[3]柳永坡,邹磊,金茂忠,等.软件测试领域的知识管理及模型研究[J].计算机应用研究,2009,26(1):143-145.

[4]李神,陈嶷瑛.一种有效的软件测试模型[J].计算机工程与应用,2004,40(10):114-115.

[5]陆永忠,宋骏礼,谷希谦.基于行为的软件测试过程模型及其应用研究[J].计算机应用,2007,27(5):1238-1240.

[6]戴莉萍,熊小勇.基于敏捷开发的X测试模型的研究与改进[J].计算机工程与设计,2007,28(18):4342-4344.

[7]董晓霞.软件测试工程化的研究与实现[J].计算机工程与设计,2006,27(11):2008-2010.

[8]Hovemeyer D,Pugh W.Finding bugs is easy[J].ACM Sigplan Notices,2004,39(12):92-106.

[9]Lammermann F,Wappler S.Benefits of software measures for evolutinary white-box testing[C].Proc of the Conference on Genetic and Evolutionary Computation,2005:1083-1084.

猜你喜欢
测试人员探索性软件测试
心有所“属”,一“探”究竟——立体几何探索性问题的解法梳理
基于OBE的软件测试课程教学改革探索
立体几何中探索性问题的“创新”
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
软件测试误区分析
浅析软件测试中的心理学应用
解决圆锥曲线中存在、探索性问题的途径
软件测试工程化模型及应用研究
绿植防辐射只是个传说,是真的吗?