基于QTP的营销管理系统功能测试程序开发
2018-02-23张嘉杰
张嘉杰
摘要 为提高对营销管理系统的测试效率,笔者使用QTP自动化测试软件、VBS脚本语言等技术手段,开发自动化测试程序。程序采用模块化设计,针对营销管理系统的常用功能进行测试。
【关键词】QTP 营销 VBS
1 营销管理系统
营销管理系统是一款办公自动化系统,其主要功能有整合客户资源、策划营销活动、管理保单生命周期、管理保险出单全流程、服务产品化、集团一体化销售、智能化销售等。通过建立完整、准确的客户数据集合,对多渠道、多来源数据进行清洗、整合,形成全公司唯一和权威的客户数据库。实现全国范围内公司客户资源的大集中、大整合,将分散于各个业务条线的客户数据统一进行整合管理。
2 自动化测试
手工测试和自动化测试是常用的两种测试方法。软件测试的一个显著特点是重复性,重复让人产生厌倦的心理,重复使工作量倍增,因此,自动化测试可以用来解决重复的问题。自动化测试适宜用在需要重复执行机械化的界面操作、计算、数值比较、搜索等方面。测试人员应该充分利用自动化测试工具的高效率来完成一些基本的测试用例执行,从而实现更加快速的回归测试,并且提高测试的覆盖率。
3 开发过程
自动化测试的基础是手工测试,而在手工测试之前,先要设计好测试用例和测试数据。结合自动化测试的优缺点,测试应该是针对系统较为稳定和核心的功能,根据实际业务操作流程,设计测试用例和数据,使用QTP软件录制整个操作流程,形成初步的测试脚本和对象库。最后整理对象库,重构优化测试脚本,形成最终版本的测试程序。整体开发过程如图1所示。
4 测试数据
程序采用数据驱动的方式,良好的测试数据设计是测试程序开发的基础。测试程序通过读取测试数据中的是否测试字段,判断是否进行相应功能模块测试,从而达到测试数据控制测试流程走向的目的。另外,测试数据也用在测试过程当中信息的录入。
5 对象库
在完成测试脚本的录制后,QTP会自动生成初步的对象库,如图2所示。
6 程序架构
根据实际业务情况,程序需要着重测试业务员使用频率较高的报价、任务、流程功能。测试程序采用模块化设计,遵循高内聚低耦合的原则,分成初始化模块、主流程模块、报价测试模块、客户测试模块、流程测试模块。程序采用数据驱动的方式,测试数据和程序代码相分离,程序根据测试人员设计的测试数据来判断执行逻辑,这样可以很好地分离测试程序编写人员和测试程序使用人员的工作。程序架构如图3所示。
7 代码介绍
根据程序架构,以下分别介绍各个功能模块的关键代码。
7.1 初始化模块
初始化模块主要完成程序环境的设置,如测试地址、用户密码、测试数据、日志文件等。初始化模块显示指定程序路径,导入公共函数文件common.vbs,导入测试数据qtTestDataxls,指定并初始化Excel日志文件,根据公共函数文件提供的用户名密码,登录系统。在完成对象库的优化调整后,可以将其导出成对象库文件,供每次测试时导入使用。
7.2 报价测试模块
报价测试模块根据导入的测试数据,录入车辆、关系人、投保产品等信息,分别进行新车、转保车、续保车的报价、转投保、提交核保等操作测试。关键代码如下所示:
Function maincourse( )
If DataTable.Value(”报价”,”Global”)=”是”Then
Call readnextrow(0)
For i=jto sumAll
detaillog Null
Call deraillog2(“Pass”,”开始第“&i&”行报价测试”,“开始第”&i&”行报价测试:”&DataTable.Value(“说明”,“报价配置信息表”))
Call prepare( )
If DataTable.Value(“报价配置名称”,“报价配置信息表”)=“”Then
Exit For
End If
If DataTable.Value(“是否续保”,“报价配置信息表”)=“”Then
IfDataTable.Value(“传统网销”,“报价配置信息表”)=“传统”Then
Call selectcar( )
Call selectclient( )
Call selectriskmain( )
Call selectriskplus( )
Call quoteproposal( )
If flag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
elself DataTable.Value(“傳统网销”,“报价配置信息表”)=“网销”Then
Call selectcar ( )
Call selectclient( )
Call selectriskmain( )
Call selectriskplus( )
Call quotenetsale( )
Iff[ag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
End If
elself DataTable.Value(“是否续保”,“报价配置信息表”)=“是”Then renew()
quoteproposal()
If flag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
End If
Call readnextrow(l)
fiag=False
Next
Call addsummary()
End If
End Function
7.3 客户测试模块
营销管理系统给业务员提供导入客户资料,并将客户添加至营销活动,用于跟进处理客户投保情况的功能。相应地,客户测试模块针对此功能进行测试。关键代码如下所示:
Function maincourse( )
If DataTable.Value(“客 户 导 入”,“Global”)=“是”Then
detaillog Null
detaillog”开始客户导入测试”
Call Custlmp ( )
wait 2
Call CustSearch( )
wait 2
Call Setlnvalid( )
End If
End Function
测试模块判断如果进行客户导入测试,则分别调用公共函数模块中的客户导入函数Custlmp()、客户查找函数CustSearch()、置客户状态无效函数Setlnvalid()。
上述函数通过读取初始化模块导入的测试数据DaraTable,判断应该进行怎样的页面操作。
7.4 流程测试模块
营销管理系统中的营销活动任务跟进功能,是基于工作流程的,对于同一个工作流程,可以创建多个营销活动,同时,系统提供工作流程的管理功能,如创建、修改、删除等。流程测试模块即针对此功能进行测试。关键代码如下所示:
Function maincourse( )
If DataTable.Value(“流程”,“Global”)=“是”Then
detaillog Null
detaillog“开始流程测试”
CalIAddProcess()
waitl
Call SearchProcess( )
waitl
Call ModifyProcess( )
waitl
Call DeleteProcess( )
waitl
End If
End Function
测试模块判断如果进行流程测试,则分别调用公共函数模块中的流程增加函数AddProcess( )、流程查找函数SearchProcess( )、流程修改函数ModifyProcess( )、流程删除函数DeleteProceSS( )。
上述函数通过读取初始化模块导入的测试数据DataTable,判断应该进行怎样的页面操作。
8 总结
根据实际工作需要,笔者使用QTP、VBS等技术手段,开发营销管理系统自动化测试程序,用于替代部分手工测试。而在实际的开发过程当中,因为系统前台页面代码编写的不规范,笔者花费了较多时间在系统页面元素识别的问题上,如页面元素无法识别、重复页面元素导致识别效率较低等,这从一个方面说明自动化测试程序的开发过程可以发现页面代码的开发问题,反向促成优化工作的开展。在完成程序的编写工作后,笔者将其部署成每日执行的定时任务。经过一段时间的实际运行,程序运行情况良好,所设计的各个功能模块很好地完成测试流程,并发现了各个被测功能的设计缺陷问題。限于笔者经验所限,本文所述内容难免有错漏之处,恳请同行批评指正。