探索式软件测试融于传统测试模型的研究
2017-06-27侯庆庆
徐 彬,李 华,张 荣,侯庆庆
(中国电子科技集团公司第 58 研究所,江苏 无锡 214072)
探索式软件测试融于传统测试模型的研究
徐 彬,李 华,张 荣,侯庆庆
(中国电子科技集团公司第 58 研究所,江苏 无锡 214072)
自软件测试成为单独的研究领域起,测试模型开始从无到有,且一直不断地优化。现在广泛使用的传统测试模型通过多年的实践检验,基本能够满足各类测试的需求。探索式软件测试是一种新的测试理念,它体现为一种灵活、自由的方式,与传统测试有很大的不同。将探索式软件测试融于传统软件测试模型中,既是对传统模型的创新,又是更好地指导测试的需要。
软件测试;探索式测试;模型
1 引言
软件测试模型即在测试实践基础上,有机结合相应的软件开发活动所总结和抽象出的一系列测试活动规律[4]。自 1972 年软件测试成为一个独立的研究方向开始,对软件测试模型的研究就一直没有停止过,本文旨在提供一套能够与开发各阶段紧密协作且有效指导测试的模型。
探索式软件测试方法为软件测试的前沿技术,它擅长于在短时间内发现软件的一些重要问题或提前没有进行测试设计的情况。探索式软件测试融于传统测试模型中,二者优势结合,将有效提高软件的质量。
2 探索式软件测试
2.1 定义
探索式软件测试没有明确的定义,从多种方法中提取一个相同点就是了解被测软件、设计测试用例、执行测试三部分同时进行[3]。它完全抛开了传统测试中的流程和前期准备工作,测试人员在测试时可以天马行空,利用被测软件提供的信息自由发挥。但探索式测试乱中有序,且对测试人员有很高的要求。执行探索式测试的人员需要丰富的经验,对测试对象有足够的判断力,哪些功能区域有可能存在问题,哪些关联的设置有可能导致失败。在测试某个特性或某个范围中的特性时,思路必须清晰,明确使用的测试方法。
探索式测试并不是完全没有测试文档,与传统测试在测试计划里先预先编好测试文档不同,它的测试结果、测试用例和测试文档都会在运行测试时创建,这也是跟踪问题所需要的,最后给出测试报告。
2.2 方法简介
探索式测试不是具体测试技术,而是关注如何去测试[6]。根据关注区域来分,分为局部探索式测试法和全局探索式测试法。
局部探索式测试主要从五个方面考虑:输入、状态、代码路径、用户数据、执行环境[5],如图1 所示 ,这五部分在传统测试中也是必须要关注的信息。
图1 局部探索式测试
全局探索式测试又称为漫游测试,它将测试人员比作游客,被测软件比作旅游地。旅游地可被划分为各种区域,例如商业区、娱乐区等。同样的,被测软件也划分为多个重叠的“区域”[5],如图2 所示。对于软件测试人员来说,这种分割只是从逻辑上划分了被测程序的特性,测试人员探索被测程序的运行路径,根据不同的测试意图按顺序执行这些特性。
图2 全局探索式测试
2.3 优势分析
局部探索式测试辅助测试人员在测试过程中即时做出决定,全局探索式测试帮助测试人员思考整体测试计划和测试策略。全局与局部结合,即覆盖了面,又关注了点[1,2]。探索式测试较传统测试最大的优点是灵活、高效。传统测试是依据测试计划进行,自由发挥程度较小,探索式测试计划与测试同时进行,需要时及时调整思路或方法,在发现重大问题方面表现极佳。
3 传统软件测试模型
传统软件测试模型中V模型和W模型最具有代表性,其中 V 模型为“线性”执行,需要在编码完全结束后才可进行测试,无法体现“尽早地和不断地进行软件测试”的原则。它仅仅把测试过程作为需求分析、系统设计及编码之后的一个阶段,而对需求分析和系统设计的验证放到后期,不能及时发现问题,V 模型的缺点导致其不如W模型应用广泛。
W模型是V模型的发展。如图3所示,它的一个特点是强调测试是伴随着整个软件开发周期,而且不仅程序代码需要测试,需求、功能说明、设计思路也需要测试。另外一个特点是提前做好测试设计,写好测试用例,每一阶段的测试都是依据测试设计和用例进行的。
图3 传统W型软件测试模型
4 探索式测试融于传统测试模型
传统测试工作有明显的阶段性,后期测试执行以前期测试设计为基础。测试思路、使用方法的确定绝大部分在测试计划阶段完成,执行测试时只需参照测试计划完成即可。这种模型存在一个弊端,当前期测试设计考虑不够全面时,有些路径没有涉及到,若后期只是单纯地按计划执行,会导致部分特性没有覆盖到,风险就会隐藏在被测软件中。探索式测试灵活,没有阶段性限制,可边测试边调整,恰好弥补了传统测试模型中的缺陷。
将探索式测试融于传统测试模型中,以W模型为例,对测试部分单独分析,如图4 所示。
该模型着眼于实际测试项目,将结构化的思想与自由的探索结合,在保证了测试模型完整的情况下,提高特性测试的覆盖率,存在如下几个特点:
图4 探索式测试融于传统测试W模型(测试部分)
(1)完全保留 W 模型的特点,软件测试与开发并行线性执行,完全符合及早介入、及早测试的原则。
(2)每个阶段测试执行完成,进行探索式测试。跳出前期测试设计思路,以更加灵活的方式增加测试点,来补充前期测试的疏漏,提高了测试覆盖率。
(3) 探索式测试可以作为回归测试。传统回归测试,在单个测试阶段内,使用同一个测试计划来重复测试,这种同一个思路的重复测试容易使某类问题产生“抗测试”性,不易被发现。更换测试思路,没有前期的计划,无疑是探索式测试最擅长的。
(4)依据更改及时响应、快速测试。当在执行测试的过程中,需求或是设计突然发生更改,在没有任何计划的前提下,探索式测试能够最有效地应对这种突发情况。
(5)W 模型齐全的文档,为探索式测试提供了文档基础。在测试过程中,直接将测试记录和结果添加到已有的文档中,无需重新编写新文档。
5 工程实践
5.1 首轮测试结果对比
将传统测试模型和增加探索式的测试模型分别应用于 JSxxx 板级验证系统,该系统是基于 PowerPC内核的处理器,具有高速的 AD、DA 数据处理模块、通用外设接口、屏幕设置与显示三大部分。截取确认测试阶段的数据进行分析,测试人员对于测试用例数量、发现问题数量以及所花费的时间进行整理。将两个模型的测试结果进行对比,其中所有测试结果均为首轮测试时的数据,如表1所示。
表1 基于两种测试模型首轮测试结果对比
从测试结果中可以看出,虽然探索式测试融于传统测试模型,实际测试时间比传统模型时间增加 10%~15%,但是发现的问题数量远远高于传统模型,在软件设计路径比较复杂的情况下,探索式测试融于传统测试模型表现尤其出众。从上述测试结果可以看出,屏幕设置与显示部分发现问题数量竟比传统模型多出66.7%,正是由于屏幕部分操作灵活,才能够更好地体现探索式测试的优势。
5.2 回归测试结果对比
将两种模型分别应用于 SJAxxxx 项目中的 CAN协议的回归测试,首轮测试发现的问题经过回归测试再次验证,并测试修改问题的过程中是否引入新问题。其中,所有测试结果为首次回归测试时的数据,如表2所示。
表2 基于两种测试模型回归测试结果对比
加入探索式的测试模型,不但正确地验证了前一轮发现的问题,更重要的是发现了 2 个新问题,这两个新问题是在前一轮修改程序后引入的。从回归测试的方式可知,传统模型在做回归测试时,将发现的问题按照前一轮的思路重新测试,它的关注点是问题本身是否解决。探索式测试进行回归时分两步,第一步是利用前一轮测试思路,测试问题是否解决,确保已发现的问题得到验证;第二步,扩大测试范围,分析出与问题相关的逻辑功能,增加相应测试点,测试已修改的程序相关功能是否因修改而出错。
从上述两个实践中不难发现,不论是首轮测试还是回归测试,探索式测试因其思路的灵活而效果显著,若是将其应用于“中规中矩”的传统测试模型中,必将大大提升测试效率和测试质量。
6 总结
探索式软件测试是一种思维方式,融于传统测试模型,为传统测试注入新的元素。由于探索式软件测试没有固定模式,灵活,形式不一,对测试人员来说是一个很大的挑战,需要测试人员不断提高自身素质,积累经验,将测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目中并行地执行。
[1]Juha Itkonen,Kristian Rautiainen.Exploratory testing:A multiple case study[C].Noosa Heads,Queensland,Australia: Proceedings of the 4thInternationalSymposium on Empirical Software Engineering(ISESE 2005).IEEE.2005:84-93.
[2]Juha Itkonen,Mike V Mäntylä,Casper Lassenius.How do testers do it?An exploratory study on manual testing practices[C].Lake Buena Vista,Florida,USA:Proceedings ofthe Third InternationalSymposium on EmpiricalSoftware Engineering and Measurement(ESEM 2009),IEEE.2009: 494-497.
[3]James Bach.Exploratory testing explained[EB/OL].2003.4 V.1.3.http://www.satisfice.com/articles/et-article.pdf
[4]余久久,张佑生.软件测试改进模型研究进展[J].计算机应用与软件,2012,(29)11:201-207.
[5]James A Whittaker.探索式软件测试[M].方敏,张胜,钟颂东,郭艳春,译.北京:清华大学出版社,2010:23-72.
[6]李军锋,栾静.探索性软件测试解析[J].计算机与数字工程,2011,(39)8:39-42.
Research on Integration of Traditional Test Model and Exploratory Test
XU Bin,LIHua,ZHANG Rong,HOU Qingqing
(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)
Eversince the software testing has become an independentresearch field,the software testmodelhas been evolving.The traditionaltestmodelhasbeen used formany yearsand isstillbasically capable.Exploratory software testing is a new testconceptshowing a flexible and free feature.Atpresent,the exploratory software testing is integrated into the traditionalsoftware testmodel,which is both an innovation and an attemptforbetter testresults.
software testing;exploratory testing;model
TN407
A
1681-1070 (2017)06-0016-03
徐 彬(1982—),女,山东文登人,硕士研究生,助理工程师,研究方向为软件测试。
2017-2-24