QTP在浮标数据接收软件测试中的应用
2016-10-25张建涛冯月永姚世强常怡婷
张建涛,冯月永,姚世强,常怡婷
(国家海洋技术中心,天津 300112)
QTP在浮标数据接收软件测试中的应用
张建涛,冯月永,姚世强,常怡婷
(国家海洋技术中心,天津300112)
软件测试贯穿于整个软件开发周期,在软件测试中引入自动化概念可以提高测试效率。使用QTP(Quick Test Professional)作为自动化测试工具,设计与实现浮标数据接收软件测试框架,并应用于浮标数据接收软件的功能测试、强度测试和回归测试中,阐述浮标数据接收软件实现自动化测试突破的关键技术。结果表明:提高了测试效率,扩展了软件测试的范围。
软件测试;浮标数据接收软件;自动化测试;测试框架;QTP
海洋资料浮标是国内外海洋环境立体监测系统的重要组成部分。主要目的是自动获取长期、有效的海洋环境资料,即使在恶劣环境,其他现场监测手段都难以或无法实施监测的时候,浮标仍能有效工作[1]。浮标数据接收软件是整个浮标系统的重要部分,最终的气象、水文等海洋资料都要由浮标数据接收软件处理,并使有关气象、水文资料得到有效的利用[3]。它的质量直接决定了浮标观测数据的有效、准确和完整。而软件测试是保证软件质量、提高可靠性的最重要手段[4]。
浮标数据接收软件测试由用户随机操作的场景组成,测试人员必须在每轮测试中不断地重复操作,并且测试结果会受到测试人员工作状态的影响,人工测试非常浪费时间而且需要投入大量的人力,因此研究自动化测试是非常有必要的。本文借助QTP自动化测试工具,提出一种适用于浮标数据接收软件的基于关键词参数化的测试方法,弥补系统手工无法实现或难以实现的测试。
1 浮标数据接收软件测试框架的设计与实现
QTP具有测试脚本录制、测试执行、测试结果判断和测试报告生成等基本功能,可减轻测试人员开发测试脚本的负担,但仍然存在无法实现测试环境构建、测试结果保留及测试结果判定等测试过程自动化问题[5]。针对QTP在实际项目测试中的这一问题,人们也一直在探索各种有效途径将QTP运用于各种类型的测试项目中,研究针对不同测试对象的自动化测试解决方法,即自动化测试框架,以充分发挥QTP在自动化中的作用[9]。通过综合考虑浮标数据接收软件自身的功能特征和业务逻辑,设计符合浮标数据接收软件的QTP自动化测试框架。
1.1浮标数据接收软件自动化测试框架结构
浮标数据接收软件的自动化测试框架的设计主要遵循以下原则,即测试框架与被测程序独立,测试框架易于维护及扩展,测试脚本所有语言与测试框架无关,测试脚本能够被自动执行并生成相关结果。基于此,本文设计了如下浮标数据接收软件自动化测试框架,主要由启动引擎、关键字驱动、数据驱动、异常处理、报表引擎、日志记录几部分组成。测试执行者通过软件的人机交互界面上传数据驱动表,交由测试服务器,通过关键字驱动测试执行,测试完毕后再将测试结果及报告返回测试执行者。
图1 浮标数据接收软件自动化测试框架
1.2自动化测试框架的实现
针对自动化测试框架,设计基于框架模型的浮标数据接收软件的自动化测试体系,共有以下几个功能模块组成。
图2 浮标数据接收软件自动化测试体系结构
(1)主控模块:程序入口,主要功能是控制软件各功能模块的业务处理,负责与其他模块通信,协调完成浮标数据接收软件整体测试。
(2)业务处理:完成浮标数据接收软件的功能与性能测试业务流程处理操作,并针对测试结果及漏洞(Bug)信息对测试业务的合理性和逻辑性进行优化处理。
(3)时间统计:完成浮标数据接收软件的查询、数据导出等操作所耗费时间统计,进行性能评估。
(4)异常处理:处理浮标数据接收软件在执行自动化测试过程中出现的所有异常情况,在无人干预前提下,保证自动化测试流程的完整持续运行。
(5)结果验证:通过在测试脚本中插入位图检查点的方式,对浮标数据接收软件测试过程中实际输出的测试结果与预期值进行比较,以判断测试输出结果的正确性。
(6)Bug信息记录:对测试过程中发现的浮标数据接收软件设计缺陷和功能缺陷进行分类记录。
(7)结果存储/分析:对浮标数据接收软件测试过程中产生的运行结果和系统Bug信息进行存储,并对测试结果进行分析,针对分析结果对浮标数据接收软件进行优化处理。
2 QTP在浮标数据接收软件测试中的实现
2.1制定测试计划
首先,根据浮标数据接收软件的需求说明书,细化软件功能和业务流程,制定软件测试计划。对浮标数据接收软件进行分析,确认软件是否有明确的输入条件及期望输出结果、是否有可以自动化测试的功能点,以判断QTP是否符合测试需求。
针对浮标数据接收软件的特点,系统的主要业务功能为:数据接收、数据处理、数据存储、数据查询、数据导出等。比如浮标数据接收软件是通过打开通信方式接收数据来触发后续数据接收处理业务,因此打开相应通信方式是进行自动化测试的一个输入条件。
2.2建立测试原型
确定自动化测试的输入条件之后,将输入条件参数化,并依据测试计划确定参数化变量的取值,建立自动化测试原型,形成Excell格式的数据集。浮标数据接收软件关键字驱动的参数化变量主要有:端口号、波特率、查询日期、查询时间、传感器类型等。
2.3生成测试用例
根据建立的参数化测试原型、输入指定的参数化变量值,生成全覆盖设定条件的Excel数据格式测试用例集合。逻辑数据驱动表中对应的参数值,脚本运行时将逐条执行,也可循环执行若干次。
2.4录制测试脚本
脚本录制之前,QTP通过启动引擎加载系统自动化测试必要的配置服务,包括建立QTP与数据驱动表之间的连接,从测试用例集合中获取参数化变量值。然后根据读取的参数值查询日期、查询时间、查询参数名称、通信方式名称、端口号、波特率等信息来触发系统的后续业务处理。通过关键字参数化和数据驱动方式录制一个标准业务流程,QTP便能将其直观地记录下来并生成测试脚本。然后用For语句实现循环,使QTP在运行脚本时能够通过循环逐条读取表中每一行数据。
2.5编辑测试脚本
在对象库管理界面编辑管理被测软件的对象库,将整个软件中所有的对象添加到对象库中。另外,还要调整测试步骤、编辑测试逻辑、插入检查点、添加测试输出信息、添加注释等。对于录制下来的测试脚本,需要进一步修改和调整。
2.6优化测试脚本
利用“Check Syntax”功能检查测试脚本的语法错误,利用QTP脚本编辑界面的调试功能检查测试脚本逻辑的正确性。由于浮标数据接收软件界面是基于图形化编程,控件的文本信息QTP无法自动识别,通过位图检查点比对,控制不同界面之间的跳转。
2.7结果验证
为了直观地将测试结果展现出来,以便问题的记录和回归,针对浮标数据接收软件的测试需求,单独编写测试结果输出函数和图表生成函数供测试脚本调用,测试人员能在查看测试结果的基础上更全面了解系统的测试过程,尤其系统异常情况的处理,对测试结果按照测试需求进行合理性验证。
3 浮标数据接收软件自动化测试
3.1功能测试实例
功能测试是为确保软件以期望的方式运行。功能测试的关键是测试用例的选择,要用最少的用例覆盖尽量大的范围。浮标数据接收软件进行测试过程中,数据查询功能界面需要人工手动输入,而查询条件包括的可输入数据非常多,如果每次测试都需要人工逐个输入,则需要耗费大量人力资源。使用QTP自动化测试工具,通过编辑所录制的测试脚本,统一设置各输入框的值,可大大缩短测试周期,减少人力重复劳动。以历史数据查询为例(图3所示),主要测试“日期”设置为不同值时是否能正常显示查询结果,或显示提示信息。
图3 历史数据查询界面
其中,“年”的输入已经做了限制,只能输入2000~9999之间的四位数字,“月份”只能在下拉框中选择,包括“一月、二月、…、十二月”,日期的取值随着月份的不同范围也有所变化,尤其是二月份,在闰年为29 d。结合边界值等价类方法,对浮标数据接收软件数据查询界面的输入值进行等价类边界值划分,每类中抽取1个有效值数据作为查询条件输入数据,基本覆盖了所有可输入条件。
表1 日期输入等价类表
通过以上边界值分析和等价类划分后,确定了各变量值的取值个数,在设计测试用例时,要使一条用例尽量多的覆盖有效等价类,而无效等价类则要求一对一的覆盖,设计的测试用例如表2所示。在每一个测试用例中,输入条件的每一个变量值设置操作过程都相同,其他测试用例的执行是一个简单的机械重复过程。这类情况非常适合自动化测试。
表2 测试用例表
在采用自动化测试时,只需手工完成一个测试用例,用测试工具QTP捕获其操作过程并录制成脚本,然后对录制的脚本进行修改,即可循环执行整个测试过程,同时在后期做回归测试时,也只需将该脚本重放即可,而不需要做简单重复且无创意的编写脚本工作。
表3 测试用例输出结果
使用自动化测试的目的是为了提高测试效率,从而节约成本。将该自动化测试框架应用于浮标数据接收软件测试中,达到了预期的效果。在历史数据查询功能模块测试时,采用自动化测试时,除需人工在测试执行前进行简单的环境参数配置外,测试执行时间远远少于手工测试,实际运行14个测试用例,在1 min以内即可完成,发现3个BUG。
3.2强度测试实例
强度测试是为了确认被测系统是否能够支持性能需求,以及预期的负载增长,它可以从响应时间、资源占有率等进行评价。其中的响应时间是用户最直接感受到的系统性能,也是故障定位迫切需要解决的问题。浮标数据接收软件的历史数据查询功能为用户提供符合要求时间段历史数据的查询和显示,参照互联网采用的2/5/10 s原则,考虑响应时间应在10 s以内。实际测试过程中需测试响应时间随着数据量增加的变化情况。若采用手工测试,每次改变数据量后都要重新运行,操作过程相同,只是一个简单的重复。采用QTP后,通过编辑录制的脚本可使程序自动调用不同的数据集,同时调用性能监视器记录系统资源使用情况,并将测试结果以图表形式输出,采用简单的for循环编写函数即可使程序重复不间断运行,实现长时间的软件响应时间和资源占有率的测试,从而降低了测试人员的劳动强度,节省了时间。在以后的回归测试时可直接调用这个测试脚本,运行并得出结果。
图4 响应时间曲线图
图5 系统资源占有率曲线图
3.3回归测试实例
回归测试是指在软件BUG修改、软件升级等软件发生变化后需要重复以前的全部或部分测试的过程。多个测试用例的执行若采用手工变换,效率较低。在对多个测试用例的回归测试过程中,使用自动化测试可以加速回归测试进度。
回归测试中,只需直接运行已编辑好的测试脚本,即可实现对所测系统的回归测试。
由以上测试实验可知,QTP自动化测试工具可用于浮标数据接收软件中的功能测试、强度测试及回归测试,通过调整测试脚本,可使自动化测试更加优化,从而大大节约人力资源。
4 关键技术
浮标数据接收软件自动化测试,实现了以下几个关键技术的突破:
(1)规避浮标数据接收软件的人机交互操作。在浮标数据接收软件的数据查询和通信方式设置等过程中,需要人工将条件输入,方可进行处理。通过改写并重新封装驱动动态库,将条件输入及鼠标点击动作巧妙规避,无需人工干预,即可实现浮标数据接收软件的自动化测试。
(2)测试用例自动生成技术。测试用例的设计好坏直接影响系统的测试结果,由于手工设计的测试用例难以完全覆盖系统的功能场景,在建立测试原型后,参数化关键字,生成全覆盖的满足测试需求的测试用例集合。
(3)测试结果图形化展现。采用位图比较法实现测试结果的对比验证,并针对关键业务测试,输入结果采用改进的柱状图及饼状图直观展现测试结果。
5 结束语
采用测试工具进行自动化测试能减轻测试人员负担,提高难以重现的低概率事件处理能力,节省时间,同时将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析。但测试工具所能提供的基本功能是有限的,要将测试工具有效运用于测试项目中,需对测试工具进行二次开发。本文通过构建符合浮标数据接收软件的QTP自动化测试框架实现软件的自动化测试。该测试框架采用INI文件配置环境,增强了测试用例设计模板的灵活性,也增强了函数库的可重用性,同时还可重用于其他相似的数据接收处理及数据库相关软件的测试。在实际应用中,可根据测试需求进行扩充,通过二次开发最大限度地发挥QTP的测试潜能。
[1]赵聪蛟,周燕.国内海洋浮标监测系统研究概况[J].海洋开发与管理,2013(11):13-18.
[2]王军成.国内外海洋资料浮标技术现状与发展[J].海洋技术,1998(1):9-15.
[3]李民.Ⅱ型海洋资料浮标接收岸站设计[J].海洋技术,1998(17):34-37.
[4]王洪磊.QTP在windows应用软件测试中的应用[J].信息与电脑,2010(6):24-30.
[5]王敏,网智超,等.基于QTP的数据库系统测试框架[J].计算机与数字工程,2014(1):117-121.
[6]刘霞.基于QTP的GUI数据驱动自动化测试框架[D].上海:复旦大学,2009.
[7]Steven Holzner(美).Visual basic 6.0技术内幕[M].北京:机械工业出版社,1994.
[8]杜丽洁.基于QTP自动化测试框架的开发与应用[D].武汉:武汉理工大学,2012:13-17.
[9]杜斌.QTP脚本参数化的应用方法[J].应用开发,2010(6):67-71.
Application of QTP in the Testing of Buoy Data Receiving Software
ZHANG Jian-tao,FENG Yue-yong,YAO Shi-qiang,CHANG Yi-ting
National Ocean Technology Center,Tianjin 300112,China
Software testing is frequently conducted throughout the entire cycle of software development.To enhance testing efficiency,the concept of automation should be introduced into software testing.With Quick Test Professional(QTP)as the automatic testing tool,this paper designs and implements the testing framework of buoy data receiving software,which is applied in the function,strength and regression testing for the buoy data receiving software.This paper also focuses on the key techniques to achieve breakthroughs in automatic testing for the buoy data receiving software.The results indicate that the method proposed in this paper can improve the testing efficiency and expand the scope of software testing.
software testing;buoy data receiving software;automatic testing;testing framework;QTP
P715.2;TP311.56
A
1003-2029(2016)03-0082-06
10.3969/j.issn.1003-2029.2016.03.016
2015-12-03
张建涛(1985-),男,硕士,工程师,主要从事浮标软件设计和通信系统开发。E-mail:13821562205@163.com