面向功能的自动化测试在银行业务系统中的应用
2022-08-23国家开发银行信息科技部张南
国家开发银行信息科技部 张南
本文旨在通过对自动化测试的概念介绍,进而对自动化测试体系过程进行分析研究,同时结合国家开发银行核心系统自动化测试案例,来构建适应本行的自动化测试方法,尝试为本行开发测试中心建设及质量管理等工作提供参考和借鉴。
1 背景及目标
1.1 课题背景
金融是现代社会的核心,信息科学技术是金融机构的核心。随着银行业务的迅猛发展和不断创新,对其信息系统的要求也与日俱增。这一时期,国内银行纷纷投入大量资金和人力进行系统的研发和升级工作,软件项目测试质量逐渐成为制约产品质量提升的瓶颈,这与现代银行业对软件产品的高效性和可靠性的要求相背离。
国家开发银行较早认识到了以上问题,并根据本行IT规划和布局,在2012年便引入了专业化的测试团队负责部分测试工作,为提升本行软件产品整体测试质量进行最初的探索和尝试。随着企业内部管理的不断细化和测试质量工作的日渐规范,截至目前已建立了覆盖功能测试、性能测试、第三方测试等多方面的测试类别,承接了几乎所有在建项目的性能测试和第三方测试。近年来,测试团队年累计执行测试任务都在2000余项,为本行信息系统稳定运行发挥了重要的作用。
但随着系统规模的不断扩大和业务特点,测试的难度也在增加。一方面,目前银行业务系统众多且关联关系复杂,同时部分业务因属于政策性业务,对时间要求较高,项目实施工期短,对测试的质量提出了更高的要求;另一方面,受制于有限的测试资源,包括人力资源、时间资源、流程及工具缺失等因素,不能对系统功能进行全面的回归测试。
1.2 课题研究目标和内容
本文引入自动化测试概念,进而从自动化测试工具、策略、方法等多角度来研究分析自动化测试方法,给出自动化测试的优缺点,并结合本行核心系统自动化测试实例,来得出自动化测试在开行的具体应用。
2 自动化测试研究
2.1 测试级别和特点
软件产品的测试类型按照软件产品生命周期可大致分为组件(单元)测试、集成测试、系统测试、验收测试以及维护测试。在维护测试阶段,最重要的两种测试类型就是确认测试(再测试)和回归测试。
目前,在本行信息化项目建设过程中,可较好的执行组件测试、集成测试、系统测试和验收测试以及维护测试中的确认测试,但对于回归测试,由于测试工作量大,产品或版本投产时间紧,思想认识不够等原因,无法确保回归测试的广度和深度,造成系统上线后常常伴随新缺陷的引入。
2.2 自动化测试概念引入
2.2.1 自动化测试定义
自动化测试,就是软件测试过程的自动执行。它是将人工进行的测试行为转化为机器或软件执行的一种过程。通过在预设状态下运行应用程序,进而对运行结果进行分析比较,从而检测系统运行是否正常。
2.2.2 自动化测试常见工具
(1)QTP,是HP公司自动化测试工具,主要面向回归测试。它可以覆盖大部分的软件开发语言,简单高效,并具备测试用列可重复使用的特点。
(2)Rational Robot,是IMB公司的面向功能测试的自动化测试工具。它集成在测试人员的桌面IBM-Rational Test Manager上,测试人员可以通过该平台计划、组织、执行、管理和报告所有测试活动。
(3)WinRunner,是Mercury Interactive公司的企业级自动化测试工具,能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试。
除此之外,常见的自动化测试工具还有如下几种:AdventNet QEngine、SilkTest、Test Partner、AutoRunner等。
2.2.3 自动化测试适用的对象和时机
要计划在组织内部实施自动化测试,需要具体问题具体分析。总体来说,实施自动化测试的前提是需求变动不频繁、项目周期足够长、自动化测试脚本可以重复使用等。经过研究归纳,得出在银行业中适合做自动化测试的项目类型有如下两类:(1)产品型项目,新版本是在老旧版本的基础上进行开发升级的,整体功能变动不大,这类项目需要在维护测试阶段做大量的回归测试,以确保系统不会产生新的缺陷。(2)机械并频繁的测试,如性能测试和压力测试。
2.2.4 自动化测试的优点
自动化测试可以降低大型系统由于变更或者多期开发引起的大量回归测试人力资源投入,特别是在程序修改比较频繁时,效果非常明显。除此以外,自动化测试还具有如下优势:(1)通过工具的引入,规范了测试流程,可以有效减少人为错误导致的系统测试质量不高的问题。(2)由于有不断完善的测试案例库,可以保证组织级测试的覆盖度。(3)测试资源的利用率得到显著提升,测试周期和新系统研发及上线的周期近而都相应缩短,提升银行科技部门核心竞争力。(4)进一步提升测试的可回溯性,并有利于对自动化测试人员的考核评价。(5)减少重复机械式的执行测试所用的时间,快速实现回归测试。
2.3 自动化测试体系过程研究
自动化测试与传统人工测试类似,都需要大致经历一套完整的测试过程。但自动化测试也有其自身的特点,大致可概述为以下几步:
步骤一:分析。总体把握系统逻辑,分析出系统体系架构和测试范围及目标,识别具体的测试需求。
步骤二:设计。设计测试用例,测试用例要足够明确和清晰,覆盖面广而精。
步骤三:实现。主要指脚本的实现,有两个要求一是断点,二是合理的运用参数化。
步骤四:执行。执行脚本远远没有我们想象中那么简单。脚本执行过程中的异常需要我们仔细的去分析原因。
步骤五:总结。测试结果的分析,和测试过程的总结是自动化测试的关键。
步骤六:维护。自动化测试脚本的维护是难以解决但又必须要解决的问题。初期会耗费一定人力,但后期效果会呈现的很明显。
步骤七:分析。在自动化测试过程中深刻的分析自动化用例的覆盖风险和脚本维护的成本。由此也形成闭环,不断优化,持续完善。
3 自动化测试在本行应用与研究
本章节以国家开发银行核心系统为例,通过基于QTP自动化测试工具的测试场景分析及案例设计,来阐述自动化测试在本行应用的场景。
3.1 核心系统自动化测试适用性分析
本行核心系统自2010年上线以来,系统运行稳定。每年系统都会有20~30次左右的上线任务,在做用户验收测试时,只能对程序改动的范围进行测试,无法对相对更大范围的功能进行全面测试(回归)。根据以上实际情况,可以归纳出适合适用自动化测试的场景和需求:
(1)系统日常发布的小版本的回归测试。如改动支付的模块时,可以对存款、客户、总账等模块适用自动化测试来验证程序改动没有对这些地方产生新的影响。
(2)系统基础环境升级后所作的全量验证回归测试。以本行IE浏览器版本升级测试过程中,投入了8家分行共10名业务测试人员,用了2周时间进行测试,如果采用自动化测试工具执行,其测试效率可以大大提高。
(3)与外围系统的接口测试。核心系统与众多外围系统有直连,接口测试也可以使用自动化测试工具,模拟外围系统的接收或调用,来验证接口层面的开发是否正确。
3.2 基于QTP的自动化测试过程设计
QTP工具因其上手快,操作简便,不需要过多的编程经验而被各大企业和机构广泛使用。同时,由于QTP隶属于HP工具系列,也可与本行目前使用的QC、LoadRunner等工具集成,所以建议本行采用该工具进行自动化测试。
QTP测试过程大概由以下几部分组成:场景分析与设计→测试实现与执行→结果及分析。下面将以本行核心系统一个典型业务场景测试为切入点,引入QTP的自动化测试方法展开,给出各步骤的具体操作和实际应用。
3.2.1 测试场景分析及设计
【示例:测试某一存款账户的余额查询功能】
分析:账户余额查询是指核心Teller柜面的“存款-查询-账户信息查询”中的“账户余额查询”交易,通过进一步分析,我们可将该测试任务划分为更小的5个测试单元:IE浏览器登录核心系统环境→输入用户名、密码进行身份验证和登录→菜单栏找到对应交易或直接输入交易码→输入账号信息,点击查询→系统可以正常查询出结果或报该账号不存在。针对每个测试单元构建测试组件,准备测试数据。
3.2.2 测试实现和执行
构建具体的测试对象库和案例并执行测试案例。
(1)创建函数或对象库。我们将以一个日期控件为例,来说明创建调用日期控件测试的函数。此函数检查日期是否以 MM/DD/YYYY 格式显示,该函数还可验证日期是否有效。
点击文件→新建→函数库,或直接单击工具栏中的“新建函数库”按钮,在弹出的函数库窗口中进行编程,之后保存至函数库中,并重命名为:CheckDateFunction.qfl。
(2)创建测试案例。在本文中,我们仅以录制方式来创建测试案例。首先我们可以创建一个Login(登录)的测试案例。首先选中工具栏中的“Record”按钮,打开录制模式。然后在核心系统登录界面中,输入用户名和密码后,点击登录按钮,系统通过抓屏,自动录入登录测试案例的测试脚步。
(3)将函数库与测试关联。如该测试场景中有日期控件,可以与第一步中提前定义预设好的日期控件函数做关联,之后保存该测试案例。
(4)插入检查点。需要对测试案例中,人工操作插入一些必要的检查点,以便验证程序的正确性。通过选中插入→检查→标准检查点的方式来操作,比如在Login测试中,设置为登录成功或失败。
(5)运行测试案例。选择工具→选项,或单击选项按钮,然后单击运行→屏幕捕获节点。在将捕获的静态图像保存到结果选项中,选择总是。接下来就开始运行测试,点击“运行”按钮,即可运行。
3.2.3 测试结果及分析
QTP自动化测试框架产生的测试结果可满足各种角色人员的使用和查阅需求,执行结束后产生的结果集文件类型有QTP自带格式的报告文件、文本文件、Access文件、Excel文件和屏幕截图,如图1所示。这些结果信息记录了测试执行过程中每一个操作出现的信息。
图1 QTP测试结果导出图Fig.1 Export chart of QTP test results
4 结语
软件自动化测试工作是一项长期的、见效较慢的工作,所以要想在组织内或企业内建立和使用自动化测试方法,一定要关注到以下几点:(1)领导重视,上下一盘棋。领导从上到下高度重视,需要平衡、协调各部门和各单位之间的诉求,解决好整体协调等事项。(2)规划先行,逐步推广。各部门要贯彻落实领导指示精神,在自动化测试的宣介、选型、推广和使用上多下功夫。同时引导各项目组正视自动化测试相关工作,消除抗拒情绪,找1~2个项目进行试点,积累经验以便后期更好的推广。(3)功成不必在我,功成必定有我。因为自动化测试工具存在上手快慢的问题,前期需要做大量的培训和推广等基础性工作。故前期投入工作可能未必产生立竿见影的效果,需要持续投入。(4)注重与开发交付体系的结合。要脚踏实地,从建立自动化测试脚本库,配备专人进行维护和开展相关自动化测试入手,同时与持续集成平台对接,做到软件从开发、部署、测试到发布,全流程自动化、一体化处理,提高版本发布质量,达到统一交付的目标。