APP下载

跨平台系统中测试用例复用技术研究

2016-11-09杨娜

电子设计工程 2016年19期
关键词:跨平台用例测试用例

杨娜

(天津津微首佳软件有限公司 天津300061)

跨平台系统中测试用例复用技术研究

杨娜

(天津津微首佳软件有限公司 天津300061)

针对跨平台系统中的测试用例复用问题,提出了一种解决思路和方法。首先论述了可复用测试用例应具备的四个基本特性,并讨论了在跨平台系统中可复用测试用例的主要类型。文章围绕着测试用例库的建立和使用,分别从设计测试用例、使用测试用例、可复用测试用例的维护3个方面对测试用例复用的流程进行了论述。

软件测试;跨平台;测试用例;复用

在软件开发过程中,测试做为一种保障产品质量的有效手段,被越来越多的人所重视。测试通常需要依据若干已经设计好的测试用例逐步展开,使用测试用例可以尽量减少测试的盲目性并提高测试过程的系统性。但是由于在设计用例过程中缺乏全局性的考量,设计出的测试用例普遍缺少复用性,导致很多相同或相似场景的测试用例无法重复利用,只能根据实际测试场景重新设计用例。尤其在跨平台系统中,由于存在大量相同或相似的场景,这种情况将会更加明显。这样的重复劳动不仅增加了开发成本,同时也使测试用例的质量无法得到保障。

如何设计可复用的测试用例已经是软件行业面临的一个问题。文中针对跨平台系统提出一种设计可复用测试用例的方法,分别从建立用例库、测试可复用的测试用例、测试用例的复用、可复用测试用例的维护4个方面进行论述,从而形成一套完整的设计、使用、维护模型。

1 可复用测试用例的特征

可复用测试用例与普通用例相比,通常应具有通用性、独立性、粗粒度、易维护性等特征。

1)通用性

通用性是指测试用例尽量不与具体测试场景相关联,也不体现出具体场景的“个性化”的内容,而只是从众多相似用例中抽象出具有一般意义的属性。只有测试用例具有高度的通用性,才能在更大范围内被复用。例如,不同系统的登陆页面,都需要输入用户名和密码做为验证条件,这种普遍适用的输入原则应被保留,而不同系统对密码的构成要素则有不同的要求,此类与具体场景相关的测试信息应被去除。依据这种方法设计的测试用例,才具有更大范围的通用性。

2)独立性

测试用例的独立性是指每个用例不能依赖于其它用例而存在,也不能和其它用例产生逻辑上的关联关系。如测试用例A的成立必须以用例B的测试通过为自己的先决条件,或者测试用例A必须以用例B的存在为前提。诸如此类的依赖关系都会破坏测试用例的独立性,也会降低测试用例的复用性。

3)粗粒度

如果希望测试用例具有较高的可复用性,就要尽量使用粗粒度的测试用例。因为测试用例的粒度越小,则越和具体实践方法相关联,此时的测试用例也越依赖于具体的测试场景。而粗粒度则意味着测试用例只与功能模块甚至用户需求相对应,此时的测试用例抽象程度较高,易于在其它相同或相似场景中复用。

4)易维护性

可复用的测试用例不是一成不变的,它会随着复用量的增加而逐渐暴露出一些问题,或随着测试场景的变化而不再适应实际实用,此时就需要对测试库中的用例进行相应的调整和维护。测试用例是否易于维护直接关系到测试库的可持续使用性,因此必须使测试用例易于修改和维护。

2 跨平台系统中,可复用测试用例范围

跨平台系统通常是指一个应用系统会涉及多个平台,各平台上的应用程序互相配合,共同完成系统功能。如设计一套医院使用的电子病历系统,其中包括医生使用的PC端的C/S架构应用程序,也包括移动设备端的应用程序,还可能包括患者在互联网上使用的基于B/S架构的应用程序,这些系统各自针对不同的用户群体提供不同的功能。

在此类系统上可复用的测试用例通过包括UI元素测试用例、功能测试用例和性能测试用例。

1)UI测试用例

UI测试用例也称为“用户界面”测试用例,它包括界面控件样式、布局风格、色调、用户操作习惯等内容。在跨平台系统中,应尽量保证用户界面具有较高的一致性,因此不同系统中的UI测试用例具有很大程度的相似性。

2)黑盒测试用例

跨平台系统中同一功能需求通常会在不同的系统中出现,虽然它们之间可能存在着微小的差别,但整体上却体现出较高的相似性。如:在PC端和PDA端都需要查询住院患者信息,或都需要显示患者某次检查结果,这些测试点可以抽象出通用程度很高的可复用测试用例。

3)性能测试用例

性能测试用例也是跨平台系统中复用程度很高的一组用例类型,在不同平台应用里出现的同一功能需求,通常会有相同或相似的性能要求。如:在PC端和PDA端查询一位患者的基本信息,都要求服务器响应时间不能大于500ms。这种情况在跨平台系统中大量出现,因此也可以通过复用测试用例来解决此类问题。

3 测试用例复用过程

3.1建立用例库

1)用例库的作用

在实际测试工作中,依据系统的复杂程度来区分,会有不同数量的测试用例,通常一个中等复杂程度的模块就会涉及到成百甚至上千个测试用例。这些测试用例如果使用人工的方式管理,不仅效率低下,而且也极容易出现错误,此时最好的解决方法就是建立一套功能完整、使用方便的测试用例管理系统。

用例库就是此类系统的典型代表,它是用来存储测试用例的仓库,将测试用例分门别类的进行归档,实现对测试用例的统一存储、管理和维护,方便后期测试时使用。

2)用例库的重要性

用例库对于软件测试工作非常重要,主要体现在3个方面。一是,用例库能够减轻测试用例管理的工作量,减少人工管理测试用例的弊端。二是,提高测试用例检查的工作效率,用户可以使用简单的检索条件快速查找到自己需要的测试用例,可以节省大量时间。三是,便于测试用例生命周期的管理和维护,测试用例的每次修改都会有相应的历史记录,方便查看和跟踪,长期积累的数据可以做为组织过程资产为后续测试工作提供相应的支持和依据。

3)用例库包含的数据项和主要功能

用例库应包括测试用的基本信息,如:测试用例编号、标题、简要介绍、功能描述、测试要点、预置条件、输入内容、期望结果、变更版本等数据项。

同时用例库还要具有历史版本记录的功能,每次修改测试用例时都需要更新当前版本号,并保存历史数据。

3.2设计可复用测试用例

设计可复用的测试用例通常要经过筛选、修改、评审、入库等几个重要环节(图1)。

图1 设计测试用例流程图

在前文中已经提到设计可复用的测试用例尽量保证“粗粒度”的层面设计,通常我们可以基于需求分析过程产生的用例图(Use Case)为基础设计测试用例。因为用例图主要反映用户的需求,还没有涉及到具体的设计和实现层面,具有更大的灵活性的普适性,能够实现最大范围的复用。此时需要判断测试用例是否具有复用价值,将通用性较小的用例排除在用例库之外。如:某些测试场景中体现出特定的业务流程,而这些业务流程在软件系统的其它部分很少出现,这些测试用例由于失去了通用性,则不能做为复用的测试用例。

对于可复用的测试用例,接下来需要判断其是否满足前文中提到的4个特性,即:通用性、独立性、粗粒度和易维护性。如果这些特性在当前的测试用例中不存在或不明显,则需要修改测试用例使这些特性更为突出,最终符合可复用测试用例的评价标准。

修改后的测试用例不能立即添加到用例库,为了确保用例库中的测试用例都满足质量要求,在入库前必须要经过评审阶段,只有评审通过的测试用例才能正式加入到用例库。评审阶段应由领域专家、软件需求分析人员、软件设计师、程序开发员和测试人员等多个不同角色组成,以确保尽可能客观、全面的执行测试用例的评审流程。在评审过程中除了验证测试用例是否符合可复用的特性外,还要对测试用例本身的正确性进行评价,包括预置条件是否正确、输入与期望输出是否匹配等。对于没有通过评审的测试用例需要返回修改步骤进行适当调整后,再重新执行评审过程,通过评审的用例才能最终被记录到用例库。

3.3测试用例复用

由于在跨平台系统中,很多模块都会涉及相同或相似的处理逻辑,因此存在大量的测试用例复用场景。在复用测试用例的过程程,涉及到选择用例、提取用例、修改用例和复用用例4个过程(图2)。

图2 复用测试用例流程图

首先根据当前测试场景的用例图(Use Case)确定需要设计的具体用例,接下来需要到测试用例用例库中查找是否存在与当前所测场景相同或相似的测试用例,即确定当前需要测试的业务流程与用例库中存在用例的相似度。如:在测试PC端登陆功能模块时,曾将输入用户名和密码并核对其正确性的测试用例做为复用用例加入到测试库,现在需要设计在PDA端用户登陆的测试用例,则可以通过用例库的检索功能查找到之前相似的测试用例并进行提取。

提取的用例并不能立即应用在设计文件中,由于用例库中的测试用例并不是针对具体测试场景来设计的,而是去掉了与具体测试场景有关的“个性化”属性,仅保留了最通用的特性。此时需要根据当前的测试场景对已提取的测试用例进行适当修改,以满足当前测试场景的具体特性。如:对于已提取的使用用户名和密码来确认当前登陆用户合法身份的测试用例,需要根据当前的测试场景,重新指定用例中的部分属性内容,包括:用户名的长度、是否允许包含特殊字符、密码的构成规则等。对于已修改完成的测试用例,就可以将其添加到测试设计文档中,至此完成测试用例的复用流程。

3.4可复用测试用例的维护

用例库中的测试用例并不是一成不变的,随着时间的推移有些用例逐渐失去应用场景,不适合再继续存放在用例库中,或者在多次复用过程中会发现测试库中的某些用例存在缺陷,此时必须对库中的用例进行定期维护,才能保证测试用例的持续有效性。维护过程通常包括获取用例、评审用例的有效性、修改用例、测试用例入库等几个环节(图3)。

图3 维护测试用例流程图

具体流程为从用例库中循环取出待评审的测试用例,根据每次复用时的修改记录,评价当前测试用例是否需要修改或从库中移除,主要从用例的有效性、复用率、历次复用的修改工作量、是否存在缺陷等几个方面对当前用例进行评审。如果发现测试用例存在某些缺陷,则需要对其进行适当修正后再次评价,直到测试用例满足条件后才可再次入库。此时需要注意的是原有的测试用例也需要保留,历次的评审过程最终会形成测试用例的生命周期,对未来测试用例的入库和维护工作提供必要的参考数据。

对测试用例的定期维护是用例库保持其生命力的重要措施和手段,也是确保用例库中可复用测试用例良性发展的重要途径,因此必须重视定期维护工作。

4 结束语

文中提出了一种对跨平台系统中如何复用测试用例的基本思路,涵盖了建立用例库、设计可复用的测试用例、复用测试用例、维护测试用例等环节,贯穿了测试用例复用的生命周期。并归纳总结了可复用测试用例应具有通用性、独立性、粗粒度、易维护性的特性,为测试用例复用的流程化、工程化提供了一个可以借鉴的思路。

[1]储海华.计算机维护类软件测试用例的设计及复用研究[J].软件产业与工程,2013(5):51-56.

[2]尹平.可复用测试用例研究[J].计算机应用,2010,30(5): 1309-1311.

[3]芮素娟.可复用测试用例研究[J].电脑知识与技术,2013,9(14):3308-3310.

[4]邵正隆.面向复用的测试设计模型的研究与实现[J].小型微型计算机系统,2006,27(11):2150-2155.

[5]王明珠.软件测试中测试用例复用的研究[J].信息系统工程,2014:136.

[6]尚冬娟.软件测试中的测试用例及复用研究[J].计算机技术与发展,2006,16(1):69-72.

[7]Myers G J.软件测试的艺术[M].3版.北京:机械工业出版社,2012.

[8]Patton,R..软件测试[M].2版.北京:机械工业出版社,2006.

[9]朱少民.全程软件测试[M].2版.北京:电子工业出版社,2014.

[10]杨莉等.软件自动化测试[M].北京:电子工业出版社,2012.

[11]李龙等.软件测试实用技术与常用模板[M].北京:机械工业出版社,2010.

[12]张江河.软件测试用例复用研究[D].西安:西北大学,2005.

[13]张娟.软件测试中测试用例复用的研究[D].上海:上海大学, 2012.

[14]赵瑞莲.软件测试方法研究[D].北京:中国科学院大学, 2001.

[15]胡正芳.测试用例复用技术研究[D].哈尔滨:哈尔滨工程大学,2009.

[16]杨凌燕.可复用的测试用例管理系统的开发[D].上海:华东师范大学,2009.

Research on test case reuse technology in cross platform system

YANG Na
(Tianjin Jin Wei Shou Jia Software Co.,Ltd.,Tianjin 300061,China)

In this paper,a new method is proposed to solve the problem of test case reuse in cross platform system.Firstly,the four basic characteristics of the reusable test case are discussed,and themain types of reusable test cases are discussed. This article is about the establishment and use of the test case library,and discusses the process of the test case reuse in 3 aspects:the design testcase,the use of testcase,and themaintenance of reusable testcase.

software testing;cross platform;test case;reuse

TN7

A

1674-6236(2016)19-0076-03

2015-10-28稿件编号:201510207

杨 娜(1983—),女,天津人,助理工程师。研究方向:软件测试,测试流程改进。

猜你喜欢

跨平台用例测试用例
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
一款游戏怎么挣到全平台的钱?
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
联锁软件详细设计的测试需求分析和用例编写
從出土文獻用例看王氏父子校讀古書的得失
基于C++语言的跨平台软件开发的设计
基于依赖结构的测试用例优先级技术