APP下载

铁路互联网售票系统自动化测试研究与实现

2015-06-28李天翼

铁路计算机应用 2015年11期
关键词:测试工具测试数据测试用例

冯 菲,李天翼,于 澎

(中国铁道科学研究院 电子计算技术研究所,北京 100081)

铁路互联网售票系统自动化测试研究与实现

冯 菲,李天翼,于 澎

(中国铁道科学研究院 电子计算技术研究所,北京 100081)

鉴于铁路互联网售票系统规模庞大、业务复杂、升级频繁等特点,引入自动化测试以进一步提高测试效率、降低测试成本。本文阐述利用商业软件QTP和开源软件Selenium构建互联网售票系统的自动化测试框架,并从框架设计、测试用例设计和测试数据设计等方面阐述自动化测试的实现。

互联网售票系统;自动化测试;QTP

铁路互联网售票系统是一个大型、高并发的实时交易系统,系统运行的稳定性、可靠性关系到广大旅客的用户体验,因此系统的测试工作尤其重要。目前系统的功能测试主要依靠手工完成,随着系统规模和业务复杂度的不断提升,手工测试已经无法满足系统的测试需求。主要存在以下问题:

(1)升级频率高,系统的每次升级需要对主要业务流程进行回归测试。互联网售票系统主要的基本业务场景多达几十个,大幅增加了测试工作量,消耗了大量的时间和资源。

(2)多浏览器支持,据不完全统计,IE、360、Chrome等6款浏览器合计占市场份额的九成,也就是说为了满足至少90%用户浏览器的兼容性需求,部分测试用例需要至少执行6次,使测试的工作量成倍增加。

(3)精度测试,部分测试场景需要精确操作或精准比对预期结果的测试项不适合手工执行,手工执行造成的误差将影响测试结果的可靠性。

(4)数据驱动测试。部分场景需要经过大量的数据验证,手工测试不仅耗费大量的时间和资源,还容易引起测试人员的厌倦情绪,影响到测试质量。

鉴于上述问题,单纯的手工测试已经不能满足需求,为了进一步提高测试效率、降低测试成本,引入自动化测试手段已经成为现实需要。软件自动化测试是把以人为驱动的测试行为转化为机器执行的过程,简言之就是让机器代替人来执行某些软件测试过程,并分析对比测试结果。自动化测试通常被应用于软件系统的回归测试、兼容性测试、可靠性测试等。

通常软件自动化测试离不开自动化测试工具,目前最为常用的工具分为两类:(1)以HP的QTP(QuickTest Professional)为代表的商业自动化测试工具;(2)以Selenium为代表的开源自动化测试工具。为了更好的对手工测试进行补充,将充分结合这两类工具,以期达到更好的测试效果。

1 自动化测试的实现

1.1 自动化测试需求

测试脚本是自动化测试的灵魂,脚本的开发、调试和维护需要大量的时间和资源。因此,在提取自动化测试需求时,需要考虑该需求的必要性,是否是一个需要长期运行、多次重复的场景。有些测试需求,既需要长期运行,又需要多次重复,但操作复杂度过高,不利于脚本开发,这样的需求同样也不宜作为自动化测试需求。因此,首先整理出互联网售票系统中的业务需求,并将其划分为基本业务,如注册、登录、车票预订、改签、退票等,以及特殊业务,如身份核验、行程冲突、手机核验等,并进一步细化。最终筛选出适合引入自动化测试的需求集合。

1.2 自动化测试设计与开发

1.2.1 测试框架设计

考虑到互联网售票系统的自动化测试是一个长期持续的过程,在测试时既要覆盖较多的业务场景,又要覆盖较多的测试数据,在设计自动化测试框架时主要考虑了测试数据和脚本分离、业务流程控制和功能点分离的原则。把测试数据外置在Excel文件中,运行测试时通过测试工具的接口从外部Excel逐行读取。把单个的功能点,如登录、查找车次、下订单、支付订单、查询订单等具体业务封装成独立的功能函数。然后通过流程控制函数来调用功能函数,构建不同业务场景,如登录-订票-订单查询,登录-订票-改签,登录-订票-退票等。自动化测试框架如图1所示。

图1 自动化测试框架

1.2.2 测试用例设计

测试用例是自动化测试的基石,是开发自动化测试脚本的基础。总的来说,自动化测试一般重点覆盖的是一些关键路径,重复操作频率比较高,脚本开发效率又相对较高的测试用例。

自动化测试用例设计可以参考手工测试用例,但一般不能将手工测试用例直接全部用作自动化测试用例,因为不是所有的手工测试用例都可以通过自动化测试来实现。比如,手机核验功能的手工测试用例,其中“填写手机收到的验证码”这个步骤是依赖测试人员肉眼从手机上看到验证码后填写来完成的,而这个“看”的动作是自动化测试无法实现的。

自动化测试相比手工测试而言,它的异常处理能力相对较弱,在设计用例时需要全面考虑,以免测试执行完成后报出大量错误信息,增加定位问题的难度。比如在车票预订时,按出发地、目的地和日期查出相关车次,点击“预订”按钮,正常情况下会跳转到添加乘车人的页面,但也有可能弹出提示,比如当所选车次距离开车时间很近时,或者所选车次是热门车次提示需要到车站办理改签退票业务时,会有很多类似的提示,都需要在设计用例时考虑在内。

1.2.3 测试数据设计

测试数据是自动化测试的重要组成部分,选择Excel作为自动化测试数据的载体,便于QTP(Quick Test Professional)、Selenium调用数据,Excel的界面和编辑方式也便于测试人员对数据进行维护。结合互联网售票系统的实际需要,在Excel中设计了两个主要的数据表格,分别用来控制循环次数和提供具体的测试参数,并能够灵活地选用不同的浏览器执行测试,还能灵活地控制业务场景循环的次数。例如,“开始行号”规定了自动化测试工具从第几行开始读取参数数据并执行测试。“浏览器类型”规定了自动化测试工具(主要指Selenium)选用哪种浏览器执行本次测试。另外,提供具体测试参数的表格,需要考虑不同业务的通用性及数据维护的便捷性,如图2所示。

图2 自动化测试数据-测试参数

通过图2中的表格,能够灵活的配置当前行数据是否执行,运行哪种业务模式,并提供了精确的参数。例如,“是否运行”规定了当前行数据是否生效,如果不生效则直接跳过该行数据,继续执行下一行。“业务模式”规定了本行数据运行的业务场景,例如“A”代表登录系统后执行订票业务,“B”代表登录系统后顺序执行订票→退票业务,“C”代表登录系统后顺序执行订票→改签→退票,“D”代表登录系统后对所有已完成订单执行退票业务。

1.2.4 自动化测试开发

对象库(OR,Object Repository)是QTP自动化测试工具的核心,也是QTP在实际项目应用中的枢纽。因此,对于对象库的建立和维护关系重大,同时为了提高效率选择使用共享对象库,并安排指定人员对共享对象库进行维护,其他测试人员在开发脚本时只能使用对象库而不能对其进行修改。

除了对象库之外,测试业务逻辑的开发是完成测试自动化的另外一个重要因素。自动化测试通常覆盖最重要、最常用、执行频率较高的业务场景,业务脚本开发的质量决定了自动化测试的成败。通过前期的探索后决定使用QTP提供的专家视图,基于对象库手工开发代码。另外,为了提高脚本的健壮性,在脚本中覆盖一些特殊的业务规则,如行程冲突处理、出票失败处理、订单中不能只包含儿童票、随机选取席别等,否则自动化执行时可能会因为这些特殊的业务规则导致测试执行的异常中断。

自动化测试脚本是该阶段的产物,但对于测试脚本的维护是一个贯穿于自动化测试各个阶段的工作,是一个持续性的优化过程,通过调试、执行过程中得到的反馈不断地再优化、改进和修正。

1.3 自动化测试执行

依托QTP强大的整合能力组织完整的测试工作流程,使用QTP开发和维护测试脚本,使用QC平台集中管理测试脚本,将自动化测试执行过程中发现的缺陷自动提交到QC平台上。经过前期准备工作,所有的自动化测试脚本开发完毕并通过调试,在完成对测试环境的搭建、部署和配置以后,按照既定的测试流程进行测试,工作时间可以选择半自动化测试的方式进行,非工作时间进行无人值守的测试,以便发现不同类型的缺陷。

自动化测试执行完毕后,通过对提交的执行情况、测试结果等进行分析比较,得到详细的分析报表、测试报告和质量情况等,用于评估测试流程和被测对象的质量,帮助组织消除缺陷、改进软件过程,最终提高软件质量。

2 自动化测试实现中的问题及对策

在自动化测试实现过程中发现以下问题:

(1)图片验证码识别。系统在登录、提交订单时会有图片验证码,自动化软件无法有效识别。可以通过程序屏蔽或使用“万能验证码”的方式解决,即无论图片如何变化都能通过验证,但是这种方法只适合在测试环境中使用,同时增加了开发人员版本维护难度。

(2)人工干预的操作。测试过程中部分功能需要人工干预,如订票、改签业务,会转到网银系统或第三方支付平台,部分银行需要安装网银插件或手机验证码完成支付,使得自动化测试无法实现。解决途径是在测试环境中使用虚拟支付平台,直接返回支付成功、支付失败的状态。

(3)个别对象无法被获取并加入对象库。解决方案是通过描述性编程,它是另一种对象识别途经,不依赖于对象库,而是通过描述来识别对象。

3 结束语

通过在互联网售票系统功能测试中引入自动化测试,作为对手工测试的补充,实现了快速执行回归测试,提高了测试效率,减少人工执行的繁琐测试,并且,提高了测试执行的一致性和可靠性,可以在非工作时间执行大量的测试,将繁琐的任务转化为自动化测试,节约人力成本。通过大量长期的测试用例运行,增加了软件信任度,培养了测试人员开发能力,提高团队工作技能。但自动化测试还不能完全取代手工测试,手工测试仍然是功能测试中不可或缺的重要手段。

[1]赵 彬.软件测试技术经典教程[M].北京:科学出版社,2007.

[2]陈能技.QTP自动化测试实践[M].北京:电子工业出版社,2010.

[3]田艳琴.QTP从实践到精通[M].北京:电子工业出版社,2010.

[4]黄文高.QTP自动化测试与框架模型设计[M].北京:机械工业出版社,2011.

责任编辑 方 圆

Automated testing in Railway Internet Ticketing and Reservation System

FENG Fei, LI Tianyi, YU Peng
( Institute of Computing and Technologies, China Academy of Railway Sciences, Beijing 100081, China )

Due to characteristics of huge scale, complexity of service logic and frequency of updates for the Internet Ticketing and Reservation System, the article introduced automated testing as a supplement to improve eff i ciency and reduce the cost of testing. The automated testing framework was constructed by using QTP and Selenium. It was illustrated the implementation of automated testing from the aspects of framework design, test case design and test data design.

Internet Ticketing and Reservation System; automated testing; Quick Test Professional(QTP)

U293.22∶TP39

A

1005-8451(2015)11-0024-03

2015-04-10

冯 菲,研究实习员;李天翼,副研究员 。

猜你喜欢

测试工具测试数据测试用例
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
测试数据管理系统设计与实现
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
基于自适应粒子群优化算法的测试数据扩增方法
浅谈响应时间测试分析方法
空间co-location挖掘模式在学生体能测试数据中的应用
基于依赖结构的测试用例优先级技术
影响《标准》测试数据真实性的因素及破解策略