首页>华夏银行:自动化测试应用与创新

行业动态

华夏银行:自动化测试应用与创新

2017-02-15

  银行信息系统的稳定运行关系到社会公众的资金支付和金融服务便利,其建设和优化要求周期短、质量高。如何针对随需而变的客户需求,进行快速、准确、有效的测试,最大程度保障系统安全,是目前商业银行信息系统测试工作面临的挑战。华夏银行以提高测试质量和测试执行效率为核心,以强化回归测试过程的智能化为目标,研究、打造了基于测试需求驱动的测试用例设计及执行的一体化平台。本文主要阐述自动化测试的提出、设计逻辑、实现架构和应用成果。

  华夏银行科技开发中心副总经理张志田

  一、测试类型及关系

  1.单元测试

  单元测试是指编码人员对程序组成单元(包括函数、类、子过程、子功能等)进行的自测试,也是测试体系中最基础的测试。

  2.集成测试

  集成测试是在单元测试的基础上,将多个模块按照设计要求组装成为子系统或系统的过程进行的测试。集成测试的责任主体是编码人员或其他技术开发人员。

  3.系统测试

  系统测试是将系统集成后的软件作为计算机系统的一个部分,与系统中的硬件和网络结合起来,在模拟真实环境下对整个产品进行的测试,其目标是验证系统是否满足需求规格要求。系统测试的责任主体是开发团队,包括系统设计、技术开发、需求分析和专业测试人员。

  4.用户验收测试

  用户验收测试是在系统部署之前,由需求提出方进行的验证信息系统是否符合预期功能需求目标的测试。用户验收测试的责任主体是需求提出方。

  5.回归测试

  回归测试是指信息系统(或系统群)的局部功能(或某个信息系统)做出调整后,验证其是否影响到未调整部分的测试。即回归测试要对局部调整是否影响到其他未调整部分做出肯定或否定的确切回答。回归测试的责任主体是开发团队的测试人员。

  由以上界定可以看出,回归测试是银行信息系统优化过程中最大程度保障系统群功能正常的基础手段。

  二、自动化测试的提出

  自2006年起,伴随新核心业务系统的研发上线,华夏银行测试队伍从当初的50人逐步壮大到目前的300人,主要负责集成测试、系统测试、回归测试和用户验收测试等,并尝试引入测试外包服务。

  尽管测试队伍不断壮大,依然难以保障银行信息系统建设、优化以满足客户需求的开发进程,特别是回归测试涉及系统多、需执行案例多,仅靠人工操作,无法满足开发上线需要。

  自2012年起,为提高回归测试的测试质量和用例执行效率,华夏银行着手研究实施自动化测试。当时,传统的自动化测试是将已设计好的测试用例人工转化为计算机可识别的测试脚本,再由计算机完成测试用例的执行工作,是对测试执行环节的自动化。华夏银行提出如下假设作为回归测试自动化的基本假设:回归测试的被测系统,其程序处理逻辑已知,且已被生产交易验证,是否可以根据已知的程序处理逻辑,按照事先设定的案例覆盖规则,由预期软件自动生成测试案例。在此基本假设的基础上,站在传统自动化测试的肩膀上,打造一个全功能的自动化测试平台。为此,提出思路如下。

  (1)改变测试用例颗粒度参差不齐的状况,通过自动化测试平台规范统一的测试需求分析模型,标准化用例设计及分析方法,对测试需求进行全面分析,对功能进行多角度延伸,进一步减少用例设计工作对测试人员个体经验的依赖。

  (2)打造一套全流程自动化的测试机制和测试规范,通过自动化测试平台标准化的作业流程,形成从测试需求分析、测试用例生成、测试规划到用例自动执行的全流程作业模型,做到有效降低人工成本,减少自动化测试过程的人工干预。

  (3)建立一套适应银行业务系统特点的自动化测试平台,通过预期结果、检查点等方式实现同步或异步测试结果校验,与银行业务的系统特征、产品生命周期属性、批处理计划等特点充分结合,实现多交易、跨系统、全流程的自动化测试机制。

  (4)建立一套可灵活应对被测系统变更的自动化测试体系,针对交易变更、产品属性变化、业务流程更新等情况,通过自动化测试平台仅需维护变更的测试需求,即可同步更新至相关的测试用例,能够便捷、高效地适应各类需求变更。

  华夏银行旨在打造一个涵盖测试需求分析、测试用例设计、测试执行、测试报告生成的全流程自动化测试平台,实现人工干预最小化、自动化程度最大化、灵活应对系统变更,以及规范测试用例设计、增强测试用例有效性和覆盖度,提高测试执行效率的目的。

  华夏银行自动化测试平台主要由自动化测试用例设计及生成平台和自动化测试执行平台两部分构成。其总体架构如图1所示。

  自动化测试用例设计及生成平台包括业务处理单元、图形分析工具、案例覆盖规则引擎、案例生成引擎、脚本生成引擎、对象智能识别、测试规划模型以及通信模块等8大部分,主要负责测试需求表达、自动用例设计、执行调度以及测试报告自动生成等功能。

  测试执行机负责按照自动化测试平台指令,完成用例执行,预期结果计算及比对、测试结果记录等。平台与执行机通过TCP/IP与FTP两种通信协议进行指令下达和数据交互,平台将测试用例及脚本下发至执行机,驱动执行机完成测试用例执行,再将执行结果回传至平台,自动完成整个测试作业过程。

  三、自动化测试的研发成果

  自动化测试不仅仅是“自动化测试执行”,而是将技术手段分别在测试需求分析、测试用例设计、测试执行及测试报告等环节中进行运用,实现了从测试需求分析到用例自动生成、再到用例自动执行的全流程自动化,是对测试作业过程标准化的落地实施。其主要技术创新如图2所示。

  1.测试需求图形化表达,规范测试需求分析标准

  传统的测试需求一般通过文字方式表达,容易产生理解上的歧义。华夏银行自动化测试平台提供了单一业务功能以及业务功能间关联关系的分析方法和手段。借鉴UML理论,从业务流程、交易、数据要素三个维度进行分析,采用业务流程图、状态图和交易步骤图等智能识别工具,实现对测试需求的图形化表达,保障了测试需求的唯一性、可测性和准确性,有效规避了传统方式表达测试需求带来的理解歧义(如图3所示)。

  2.基于测试需求驱动的自动化测试,灵活应对被测系统变更

  自动化测试平台运用了关键字技术和面向对象的设计方法,对业务组件、预期结果、检查点、测试日志、错误处理等进行抽象封装,不仅支持自底向上的设计模式,通过手工串接的方式将组件组装为测试规程,同时支持自顶向下的设计模式,由测试用例自动生成测试规程,增加了自动化测试设计的灵活性。

  传统的自动化测试是对已有用例的自动化执行,是通过划分业务组件,将业务组件组装成自动化测试脚本。当被测系统变更时,需要人工调整测试用例、数据和脚本。如果无法及时完成调整,自动化测试将失去意义。自动化测式平台是基于测试需求驱动的自动化测试,当被测系统变更时,仅需人工修改测试需求,由平台将测试需求的变更部分自动调整至测试用例、数据和脚本,实现对系统变更的快速响应,进一步提高了自动化测试的实用性(如图4所示)。

  3.测试结果计算参数化,实现测试结果的异步检查

  传统的自动化测试需要对测试结果人工计算预期结果值,并在用例执行过程中同步进行结果比对和检查。自动化测式平台依托参数化运算组件和智能化测试计划运算模型,不仅支持测试执行步骤与结果的同步验证,而且支持批次用例执行和测试结果的异步检查,更加符合银行系统的特点,提高了测试执行的智能化程度,可以更广泛地在不同系统中推广自动化测试。

  4.“一站式”自动生成测试用例数据及脚本,减少人工干预

  传统的自动化测试在每轮测试开始前,需要人工编写测试脚本以及填写测试数据准备表,并为每个用例指定测试数据,再由计算机执行测试用例,通常会耗费大量的人工工作量,测试数据错误亦将导致自动化测试结果不准确。自动化测试平台利用组件化技术,将图形化的测试需求与脚本生成引擎进行封装,并通过数据规则引擎将测试用例与测试数据集成,“一站式”自动生成测试用例数据及脚本,实现了测试数据的自动准备和测试脚本的自动生成,打破了以往通过手工方式准备测试数据、脚本的现状,降低了测试维护成本,实现了无需人工干预的自动化测试,为灵活应对系统变更提供支撑。

  5.测试用例数据计算和比对自动化

  银行的业务场景、业务流程非常复杂,传统的手工测试对测试人员的业务熟悉程度要求很高,即使是对业务非常熟悉的测试人员,在反复执行海量测试用例时也难免出现纰漏和误操作。自动化测试平台在生成测试用例的同时,生成测试用例的预期结果,当测试执行机在执行测试用例时可以对测试用例数据自动进行计算和比对,检验测试用例执行结果与预期结果是否一致,并快速生成检查清单,及时将结果反馈到自动化测试平台,大大提高了测试用例执行的准确性。

  四、自动化测试应用效果与展望

  1.提高了测试需求分析质量和业务场景的覆盖度

  传统手工测试因测试人员的业务分析能力存在差异,导致测试需求分析质量不高、业务场景覆盖度较低。华夏银行自实施自动化测试以来,经过几年的发展和应用,自动化测试在全部交易类业务系统中覆盖率达到28%,未来覆盖率可达到40%。在测试用例覆盖度方面,这些系统的测试用例规模相比未实施自动化测试之前平均增长超过了32%,未来将逐步提高到55%。

  2.提升了测试用例执行效率和测试结果准确性

  通过使用自动化测试平台,测试执行机能够快速响应测试数据、测试结果的输入和输出,提高了测试用例执行的效率和准确性,提高了测试阶段的缺陷排除率,降低了生产环境应用系统的故障率。2014年10月至2015年12月,生产环境应用系统的缺陷数同比下降80%以上(如图5所示)。

  3.提高了测试资源利用率,加快了产品投产速度,缩短了测试周期,降低了测试成本

  自动化测试平台投入使用后逐步将测试人员从重复机械的回归测试工作中释放出来,有效减少了人力资源的消耗,推动了测试体系的不断完善,使用户验收测试周期缩短了30%以上,加快了产品投产的速度。同时,自动化测试平台能够快速应对需求变更,克服了传统测试在系统变更时容易失效的难点,保障了自动化测试的及时性,减少了投产后的维护成本。

  华夏银行自动化测试实现了从测试需求分析到测试用例的自动生成、再到测试用例执行的全流程自动化,使整个测试作业过程标准化、智能化。可灵活应对被测系统变更,减少自动化测试过程中的人工干预,有效降低人工成本,做到了统一设计、分布式执行,是对传统自动化测试理念的变革与升华。同时建立起一套适合银行业的测试管理规范,为测试体系的建设做好铺垫,为全面推广高质量测试奠定了基础,对提升银行信息系统建设能力和快速响应客户需求具有积极意义。

分享至微信 分享至微博

Connecting The World

每周精选

数字化时代商业银行“智能化”的思考
银行要变天了?工行联手京东,农行联手百度,建行联手支付宝
央行徐忠:对不同形式金融创新 监管应差异化应对
民营银行已开14家,地方巨头民企+互联网成标配
智能投顾“狼”时代新钱规则 戳痛中小银行的心