基于Web系统的UFT自动化测试框架研究与应用
2019-12-12张伟
张伟
摘 要:功能自动化测试框架是保证自动化测试高效、持久实施的基础,在自动化测试初期,应该设计一套适合项目的自动化测试框架。文章以一款Flight软件系统为被测软件,以HP UFT为功能自动化测试工具,设计一种适合Web系统的功能自动化测试框架。
关键词:自动化测试框架;自动化测试;UFT;功能测试
中图分类号:TP311.53 文献标志码:A 文章编号:2095-2945(2019)33-0159-02
Abstract: The functional automation test framework is the basis for ensuring efficient and long-lasting implementation of automated testing. In the early stages of automated testing, an automated testing framework suitable for the project should be designed. In this paper, a Flight software system is used as the tested software, and HP UFT is used as the function automation test tool to design a functional automation test framework suitable for the Web system.Keywords: automated test framework; automated testing; UFT; functional testing
引言
在功能自动化测试过程中,为了保证测试脚本的规范性、可读性和可维护性,首先要设计健壮性强的自动化测试框架。所谓的自动化测试框架实质上就是一种规范的集合,在自动化测试团队开发过程中,经常会遇到很多这样那样的问题,例如:测试脚本不统一,出现很多重复的脚本;对象库中含有很多重复的对象,导致对象混乱;测试结果数据不清晰,查看的时间代价过大;测试脚本不规范,难以修改和复用,导致维护的成本很高。要解决这些问题,就必须要为其定义适合项目的规范集,即自动化测试框架。本文以一款Flight软件系统为被测软件,以HP UFT为功能自动化测试工具,设计一种适合Web系统的功能自动化测试框架。
1 HP UFT
HP UFT是HP公司研制开发的一款知名的企业级功能自动化测试工具,它的前身是QTP,QTP11.5版本发布之后改名为UFT。在UFT中,除了保存和升级了原有的QTP功能,还集成了服务测试工具Service Test(简称ST)。使用HP UFT进行功能自动化测试的过程一般包含以下7个步骤:(1)获取和分析被测系统的功能测试需求,确定需要使用HP UFT测试的功能项,并确定被测业务流程;(2)配置HP UFT测试环境,在这个环节中涉及到对象库、函数和函数库资源,需要将这些資源与当前环境关联;(3)使用HP UFT可以将业务操作录制为VB脚本的形式,主要是利用HP UFT的对象识别、鼠标和键盘监控机制来录制测试脚本;(4)依据业务需求,在录制生成脚本的基础上,修改脚本。可以在脚本中进行调整测试步骤,插入检查点、使用参数化技术,添加分支、循环等语句,附加注释等编辑操作;(5)使用Test Batch Runner、HP ALM等工具批量运行测试脚本;(6)使用HP UFT查看工具查看测试结果,检查测试过程是否出现异常情况;(7)针对测试过程中的异常情况,
分析并总结出缺陷报告,然后通过缺陷管理工具提交测试缺陷,如HP ALM、Bugzilla等。
2 自动化测试框架
一个完备的测试框架应该考虑测试过程管理、对象的管理、函数库的管理、数据驱动、关键字驱动、错误处理、测试报告管理等内容。下面以Flight软件系统为测试案例介绍基于Web软件系统的UFT功能自动化测试框架。
2.1 测试过程管理
自动化测试工程师在进行自动化测试时,首先要考虑的就是测试过程与测试脚本的统一管理。不管是手工测试还是自动化测试都需要依据规范的测试流程来开展测试工作,规范的测试流程是保证测试质量的首要因素。在本案例中,使用测试管理工具HP ALM对自动化测试的过程进行控制和管理。测试脚本是一种代码,在测试进行过程中,需要对这些代码进行统一的管理。在本案例中,自动化测试用例的测试脚本开发完成后,将上传到HP ALM中进行统一管理。如果测试脚本有多个版本,那还要考虑脚本的版本控制,可以借助SVN等版本控制软件对此进行管理。功能自动化测试工具HP UFT与HP ALM可以无缝对接,HP ALM不仅可以对HP UFT测试脚本进行管理,还可以对对象库、函数库、场景恢复等资源文件进行管理,使脚本更容易得到控制,在一定程度上可以减少后期维护的成本。
2.2 对象的管理
在功能自动化测试中,最难的问题之一就是对象的识别和管理,因为脚本中涉及流程上的变动相对来说比较少,变动最大的通常是对象层。在HP UFT中,对象识别主要包括以下两种方法:
(1)从对象库中查找并识别对象
对象库是HP UFT的一个重要组件,对象库中存放着与被测业务有关的各种对象,在脚本开发和回放过程中,可以从对象库中查看并识别所需要的对象。这种方法实现了编码与对象的分离,方便了对象的维护和管理,但是此对象库文件只适合HP UFT,很难移植到其他功能自动化测试工具中。
(2)利用描述性编程查找并识别对象
这种方法比较灵活,可移植性好,无需使用对象库组件,仅利用描述性编程语言来查找并识别当前页面的对象,还可以根据需要识别并查找某一类的测试对象。
在本案例中,为了方便对象的维护和管理,优先使用对象库的方式查找和识别对象,如果该方式无法满足需要,再使用描述性编程查找并识别对象。如果使用对象库,就需要构建和管理对象库。为了防止对象库混乱、名称不统一,在构建对象库时,需要测试人员规范对象库中对象的命名,设置对象的层次结构、将对象库中重复的对象删除掉等。对象库构建完成后,可将对象库文件上传到HP ALM系统的测试资源中,以便开发测试用例脚本时,测试人员可以将对象库文件关联到当前的用例项目中,实现对象库文件的共享
2.3 函数库的管理
在测试脚本的开发过程中,可以采用结构化编程的思想,将某些复用度较高的脚本单独放在过程或者函数中,简化脚本的开发工作量。例如:每个用例脚本中都包含着发送邮件的代码,就可以将发送邮件的代码单独写在一个函数中,当脚本用到发送邮件的代码时,直接调用该函数即可。另外,如果脚本需要频繁地调用外部函数库中的函数,需要提前将函数库文件关联到当前的用例项目中。
在本案例中,将项目的相关函数放在外部的函数库文件中,实现脚本与函数的分离,函数库文件可以qfl格式、vbs格式或者是txt格式的。函数库构建完成后,将其上传到HP ALM系统的测试资源中,方便测试人员将函数库文件关联到当前的用例项目。此外,有些函数也可封装在动态链接库文件中(以DLL为后缀名),使用时通过Extern.Declare方法调用动态链接库文件中的函数。
2.4 数据驱动
HP UFT支持数据驱动框架,其最大优点是实现了脚本与数据的分离,便于数据的修改和脚本的维护。测试脚本里的数据不再是hard-code,相反,数据是被存储在HP UFT表中或者外部文件里。在本案例中,我们使用外部的Excel表格用来存储数据,测试脚本需要首先连接到外部数据源文件,然后从数据源里解析这些数据。
2.5 关键字驱动
操作(Operation)和值(value),用面向对象形式可将其表现为 Item.Operation(Value)。有了这些关键字,那么测试用例的步骤就可以借助这些关键字来表示。例如:某用例步骤“在员工登录页面中的用户名文本框里输入tester1”的具体实现脚本可表示为:Browser(“Flight系统”).Page(“员工登录”).WebEdit(“name”).Set tester1,其中,Browser(“Flight系统”).Page(“员工登录”).WebEdit(“name”)是指被操作的对象,set是操作的方法, tester1是指具体的用户名值。
所谓的关键字驱动测试就是使用关键字驱动技术来开发测试脚本,关键字驱动测试的具体步骤如下:
(1)建立对象库,对测试用例中所用到对象(控件)属性及方法进行封装。
(2)编制脚本,使用封装好了的对象及其对应的方法,为所进行的操作赋值。
在HP UFT脚本开发过程中,可以通过录制方式生成脚本,也可以通过手工编写脚本。在本案例中,将两种方式结合起来,先用录制方式快速生成基本业务脚本,然后依据用例的要求通过手工的方式去修改和强化脚本。
2.6 异常监控和处理
错误处理在自动化测试过程中一直是一件非常繁琐的事情,我们经常会遇到因为脚本的一个小错误而“卡住”所有其他测试用例的执行,以及在复杂的框架中无法对脚本执行过程中出现的错误进行定位等情况。
错误处理的一般原则为:对于可以预见确切发生时间的错误使用“if err then”形式来进行错误处理操作,如登录之后密码不正确的错误操作等;对于无法预见确切发生时间的错误,通常先使用HP UFT的场景恢复技术对错误进行处理,再继续完成后续的操作。
2.7 测试报告管理
测试执行过程,HP UFT会记录下每个Action的执行情况,可以使用Reporter等对象将执行过程中的某些关键信息输出到测试报告中,以便测试人员可以判断测试用例脚本执行通过或是失败。此外,为了便于查看批量运行脚本的结果数据,可将所有脚本执行过程中的关键数据统一输出到一个文件中,使测试人员可以更加直观和快速的了解测试执行情况。在本案例中,利用Excel.Application对象和Reporter对象将所有测试脚本的关键信息输出到一个Excel文件中。
3 结束语
自动化测试框架是保证功能自动化测试有效、持续使用的基础,在自动化测试初期,测试人员就应考虑建立一套自动化测试规范,即测试框架。另外,自动化测试框架都有其适用范围,本文所建立的UFT自动化测试框架主要适用于Web软件系统,不适用于CS架构软件系统。
参考文献:
[1]接卉,兰雨晴,骆沛,等.一种关键字驱动的自动化测试框架[J].计算机应用研究,2009,26(3):927-929.
[2]自动化测试在大型软件系统的应用与研究[D].浙江大学,2010.
[3]李吟,方建勇,江梦,等.面向需求覆盖的Web服务自动化测试框架[J].计算机科学与探索,2017,11(11):1747-1763.
[4]黄建军,李宥谋,刘婧,等.基于Python语言的自動化测试系统的设计与实现[J].现代电子技术,2017,40(4):39-43.
[5]李志林.嵌入式软件自动化测试系统研究[J].现代制造技术与装备,2019(06):97-98.
[6]张瑛.回归测试中机器挑选用例方法研究[J].科技与企业,2015(5):201-202.
[7]聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3.