服务热线: 021-60876797
十多年行业从业经验
拥有丰富的金融产品设计和服务能力
 
新闻资讯 News
021-60876797        联系电话

论商业银行自动化测试必要性

日期: 2017-05-15
浏览次数: 44

 

在银行软件项目开发周期中,软件测试是保障软件质量的最后一道关口。当前,商业银行的IT架构越来越复杂,系统间的关系也越来越密切,其后台系统开发规模将不断加大,各类系统的集成统一也渐趋专业化。

测试作为与系统开发独立并行的领域已得到各商业银行的认可,对测试人员的能力要求也不断提高,甚至超过了一般开发人员。测试人员在开发项目组中的比例也在不断提高,并逐渐形成一个专业性的测试部门。

由于有些测试活动靠手工方式是难以实现的,一些银行在软件测试工作中现已采用相对应的自动化测试工具,这意味着在测试活动中减少相当部分资源开销。一些测试项目用手工来做一般需要很长的时间,而采用自动化测试工具可能会大大缩短所需时间。

一、自动化测试概念

随着银行IT项目越来越庞大和复杂,软件测试的工作量也越来越大。据统计,软件测试工作一般要占整个项目40%左右的工作量,而一些可靠性要求非常高的系统,其测试工作甚至占到整个项目的的60%左右。

在进行大量测试过程中,发现有些测试工作非常适合应用计算机来自动执行,其原因是测试工作多是重复性、非智力创造性、要求准确细致的工作;许多银行在CMMT(能力成熟度模型集成)的规范要求下,对测试工作已经有足够的重视,再加上软件测试工作的日益繁重,自动化测试工具被广泛应用到软件项目中。通过自动化测试工具,按照预定测试内容和计划对软件产品进行自动测试,能够改进软件质量,减少测试工作量并加快测试进度。

二、商业银行软件开发及测试特点

商业银行软件开发具有以下特点:

1、需求编写质量日益提高。商业银行软件开发的流程日趋标准化,对需求的要求也日益严格。在需求分析阶段,技术人员与业务人员通过开会、邮件等形式可以进一步明确需求。流程的控制在一定程度上保证需求的质量,随着业务人员从事项目的增多,积累了更多的经验,技术人员更早的介入,则从另一方面保证了需求的质量。

2、软件设计相对稳定。在项目总体设计阶段中,需要反复多次进行架构的评审,评审从系统间的关系,系统的结构和安全体系等方面展开,对有问题的部分,及时指导项目组修正。这保证了软件设计合理性,从而保证了其稳定性。

3、软件生命周期长,且不断进行版本更新。金融业的产品周期较长,这是商业银行软件的生命周期长的一个原因;另外一个原因是软件开发之前进行充分的可行性研究,保证了无论从功能需求还是系统设计都能在较长时间内满足需求。虽然软件产品的生命周期长,但是为了适应市场变化,推出新产品的需求,不断进行版本更新,以增加新的功能或优化系统。

商业银行软件系统测试特点:

1、银行应用系统的特点。

目前,每个商业银行郁有一个核心业务系统,其主要功能是对客户账务进行实时处理,其他各类系统会直接或间接地与核心业务系统进行交互,在核心业务系统中记录和更新客户账务的变动,还包括计息、清算等实时业务。

业务应用范围除网上银行、 CC、手机银行、信贷系统、资金风险分析等,还包括大量的中间业务,如外汇买卖业务、基金业务等。在大型银行中,系统总数可以达到上百个之多,有的系统之间关联特别紧密,所以在软件测试中会涉及相关系统接口的测试,往往还需要搭建系统的测试环境和准备测试所需数据、业务用例等。

2、银行软件系统的复杂性。

软件系统本身具有复杂性。银行内的系统关联度比较高,例如客户在柜面做一笔代缴费业务,可能需要经过柜面系统、中间业务平台、第三方外部系统,核心业务系统等等。在账务处理上的准确性,实效性要求都非常高。为了满足业务提出的新需求,可能要对核心系统接口字段及内部逻辑需要进行优化改造。在测试过程中,涉及到关联系统都要测试到位。否则投产上线后,没有测试到的外围系统可能存在某些功能不能正常使用。

三、  银行软件测试流程和自动化测试的要求

从商业银行应用开发工作的环节设置来看,包括前期的需求设计、整体设计、系统设计、编码、模块自测、集成测试、系统测试等软件项目开发周期中的全部环节。

一般来讲,一个项目开始前要先进行需求分析,然后根据项目的技术特点和需求编写总体方案,在方案通过评审以后进行系统设计,并细化需求报告,直至达到可以编程的程度再进行编码。

编码过程中开发人员主要采用自测、代码检查等方法进行白盒测试。在各模块的编码结构测试通过后,需将项目的所有模块或子系统进行集成,即生成系统界面、业务处理逻辑过程和主机账务处理等环节,从而保障系统功能符合设计的基本需求,但测试工作仍比较粗糙。

下一环节则需进行比较全面的系统测试,遍历项目的所有用例及用例的各种情况,包括边界值的测试和优化需求、解决生产问题的回归测试等。此阶段结束表明系统测试结束,并形成具有完整功能的软件版本。

基于以上流程,从项目启动之日起,测试人员就要参与并了解需求报告的评审,以便进行测试方案的制定和系统的总体设计,这一过程是与开发人员的工作同步进行的。

测试方案的设计包括使用何种策略和用例,是否使用自动测试脚本等。测试方案确定后即可准备测试环境和相关测试所需数据。在集成测试开始前,开发与测试工作都是并行的,直到集成测试阶段才彼此进行沟通和合并。

在测试技术和工具应用方面,采用自动化测试技术可节省大量的人力,自动化测试主要应用在压力测试上,用来模拟系统压力和并发环境。自动化测试是需要写测试脚本的,这些脚本都是由测试经验丰富的开发人员编写的,因为自动化测试需建立在对系统了解的基础上,并且测试人员要把这些结果全部用程序的方式写出来,相当于用程序去测试程序。此外还要考虑测试工具、方法及平台的支持,这是进行自动化测试的基础。

四、自动化测试技术在银行软件开发中的应用

自动化测试的本质在于通过事先编译好的程序来调用测试设备的底层API,使测试设备具有一定的自动执行功能。无论用哪种语言开发自动化测试软件,它只能是测试的一种手段,它使测试人员能快速实施一个复杂的测试用例。

测试人员可以将更多的精力放在测试用例的方案制定上,而不是繁琐的配置和长时间的等待。自动化测试的目的是减少部分手工测试,将更多人力资源投入到更有价值的工作中。自动化测试技术是将来大部分测试工程师必备的一项技能。在银行软件开发中实施自动化测试,必须保障实施自动化测试的项目具备开展自动化测试的一些先决条件。那么,什么项目可采用自动化测试?实施过程中该注意什么?实施自动化测试必须具备以下条件。

(1)目前大型银行信息科技部基本都通过了CMMI3以上认证,不仅能够对项目的实施有一整套的管理措施,并保障项目的完成。而且,能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化,针对测试,成立专门的系统测试部门和规范相应系统测试流程等。

(2)在大规模使用自动化测试工具前,必须要有专人针对不同的测试对象,了解选用哪种测试工具为宜。自动化测试工具分为单元测试工具、功能自动化工具和性能自动化工具。究竟哪种工具更适合相关系统的测试,还需要专业人员进行评估。

在选用工具方面,还要充分考虑到工具的可集成性、可扩展性及平台兼容性。因为实际工作中,我们常常需要把测试流程、需求管理、缺陷管理、配置管理结合得更紧密,通过工具去统一管理。

这些都是在选用工具时要考虑到的因素。比如,无论是采用Java还是.NET技术开发系统,大多数商用自动化工具会根据现今最流行的开发平台提供一种自动化测试的解决方案,而不同的测试项目又有相应的测试工具。

如果考虑到采购成套商业软件比较昂贵,还可以考虑一下开源的测试工具。这些工具往往具有小巧、灵活多变、免费的特性,还有个好处就是它的开源。已经比较出名的有Apache的Jmeter、Jtest、OpenStar等。另外由IBM出资1000多万元的开源项目Eclipse,也许是唯一能和JBuilder相媲美的开源的开发环境。目前此平台上虽然有了TPTP,但我们同样可以在Eclipse上完成相关系统的功能和性能测试。

(3)自动化测试推广中,适当进行一些工具的使用技能以及相关知识的培训还是很有必要的。在以往的测试中,我们发现由于测试工程师掌握的技能知识存在差距,每个人对自动化测试工具的操作有快有慢。为使其能尽快应用到日常测试工作中,减轻部分重复性测试的强度,对测试工程师进行培训是必不可少的。

(4)正如软件生命周期有需求分析阶段一样,在编写自动化测试脚本之前也需要收集需求,这些需求主要是为后期编写脚本所选取的。这些需求可以根据需求文档,或选择测试用例来转化成脚本,还可以让需求分析人员推荐几个常用的、相对简单的流程转化成脚本。需求就好比源头,从源头抓起才能开发出高质量的脚本。

(5)做好以上一系列准备工作后,就要求对收集来的需求进行分析,设计出一个好的测试方案。工具只能帮助测试人员去更好地进行测试,至于怎样使用才能提高工作效率,需要测试人员在实施前期进行更多的思考。

比如把一个好的设计方案转化成后期的自动化脚本等。因为脚本是不会创造性地发现本身没有涉及的缺陷,所以制定一个全面、详细的设计方案显得尤其重要。另外,从程序可复用的角度考虑,按照模块粒度大小对脚本进行规划也很重要。例如,将一些使用率高的模块录制成共享脚本,使用者只需要进行一些简单的参数设置,而无需考虑内部的具体实现机制,这就可以有效减少测试人员的工作量。

(6)对工具有了一定认识以后,开发测试脚本还必须遵循一些规范,类似于程序员编程规范,测试脚本的开发同样要有编写规范。养成这样的好习惯是为了能更方便地维护脚本,避免增加后期的维护量和方便测试人员使用。

在保障开发脚本回放没有问题的基础上,可适当增加出错处理功能来增强脚本的功能。同时,在脚本中加入检查点,把原来需要人工校验的软件功能让脚本去检测。在脚本中增加数据驱动方法,使脚本能覆盖更的分支路径,进一步提高脚本的集成度,不断增强脚本测试的自动化水平。

(7)必须安排专人负责推动自动化测试的开展,同时还需配备专人负责维护脚本,甚至可以引入配置管理工具来统一管理脚本。只有这样,我们才会从中积累更多的测试资源,才能更广泛地推广自动化测试。

总之,自动化测试的优势是显而易见的,它不仅可以帮助我们提高测试准确性和测试效率,还可以降低测试中的人工错误率。自动化测试工具主要应用于重复性很高的测试上,如果能在大型项目的SIT测试阶段广泛应用并得到良好执行,那么可在UAT测试阶段开始前提供一个比较稳定的软件版本。因此,合理应用自动化测试,对提高银行软件测试效率大有裨益,对项目成功起到关键作用。

 

联系我们
 
  • 扫码关注我们上海长亮

Copyright ©2015 上海长亮信息科技有限公司
地址:上海市浦东新区杨高南路428号由由世纪广场2号楼17A室



电话:021-60876797
邮编:200127