银行IT系统智能一体化测试理论研究

管理员账号

2016-12-30

银行IT系统的测试往往具有如下特征:一是性能测试与功能测试相互独立,二者往往互相制约和影响;二是银行后台系统往往需要等前台渠道开发完成后才会进行全面测试;三是银行80%以上是后台系统,主要负责对外提供服务。基于这些特征,如果我们能够对后台系统实施充分的自动化测试,并做到功能与性能同步测试,无疑将会大幅提高后台系统的质量、降低开发成本、加快系统投产周期。

功能&性能一体化测试主要探讨两方面的内容:一是如何在开发阶段同步并行开展功能与性能测试,实现更好地控制质量、降低系统开发与测试成本的目标;二是如何以开发阶段功能&性能一体化测试工作成果作为基础,在系统投产后进行变更时快速进行系统功能与性能的全回归测试,以保证系统变更后不会带来运行风险。

本文充分探讨了功能&性能一体化测试的理论提出背景、理论的核心思想、在实际中解决了哪些问题、实际中的应用条件、系统的平台建设等内容。

为什么打破银行的测试传统做法

任何一种得到很好应用的软件工程理论/方法,通常可以解决下面的问题:

(1)可以按照该理论/方法制定流程,依据流程可以有效管理与实施项目

(2)按照流程开发项目可以非常有效地控制产品质量,降低产品的投产风险

(3)可以很好地提高产品开发效率,从而加快项目的实施与投产进度

(4)能够有效的控制与节约成本,提高各种项目资源的利用率

(5)可以有效控制项目投产后运营过程中的风险,尤其是变更引起的风险

概括一下,即好的理论方法会促进项目提高质量、加快进度、降低成本,反之则可能降低质量、延缓进度、提高成本。

上一代银行系统基本是面向业务的系统,相对来说架构并不复杂,因此更容易测试,对后台系统的传统测试方法是适应之前的开发与管理流程的。目前各银行都在开发新一代核心银行系统,新一代银行系统的特点是架构更加复杂、规模更加庞大,传统的对后台系统的测试方法已经不适应新的架构,尤其是不适应面向SOA的架构。在本行新一代核心系统建设过程中,按照传统接口测试方法对后台系统进行测试时遇到了如下问题:

(1)前期对后台系统服务/接口测试不充分,导致后期发现问题的修复成本高

(2)后台系统往往依赖前台系统来进行测试,加重前台系统测试负担

(3)后台系统严重性能问题发现得较晚,可能需要较多成本或无法修复

(4)功能与性能测试相互独立,修改问题时互相影响,导致进度延后、成本上升

(5)如果在后期发现大量的功能/性能问题,导致整个项目集进度拖后

(6)接口回归测试案例覆盖面不够时,可能带来系统的生产运营风险

(7)……

所以要想更好的保证后台系统的质量、加快开发进度、降低测试成本,必须改变对后台系统的测试流程与方法。

“打铁还需自身硬”,我们可以换个思路,从加强各个后台系统自身质量开始入手,做到每个后台系统在开发阶段“尽早测试、充分测试”,这样整个项目集进行集成测试时,测试难度和复杂度将会大幅降低,因为在开发/接口测试阶段各后台系统80%以上功能/性能问题已经解决掉了。

功能&性能一体化测试可以为后台系统带来如下好处:

(1)遵循问题“早发现、早解决”原则,大大加快了系统开发进度、降低了开发成本、提高了产品质量;

(2)开发&测试人员可以在开发过程中随时测试接口功能&性能,及时发现代码变更后引入的缺陷;

(3)开发阶段进行了一轮“扫盲”性质的性能测试之后,保证后期代码不会进行大改,不会因性能导致开发进度发生较大延误;

(4)自身进行充分测试后,不会再依赖前台渠道来发现自己的功能&性能问题,间接节省了前台渠道的开发与测试成本;

(5)在开发阶段形成测试案例全集后,后期可以随时执行,在各种需要条件下发现系统缺陷;

(6)……

功能&性能一体化测试研究对象

功能&性能一体化测试的研究对象主要针对银行的后台系统,从那些对外提供服务/接口的系统入手,通过功能&性能一体化测试平台,实现对这些系统服务/接口功能&性能的一体化测试,从而实现提高产品质量、节约研发成本、加快开发进度的目标。

银行IT系统中80%以上的系统都是后台系统,因此一旦在后台系统推广功能&性能一体化测试,实际已经解决了银行大部分系统的功能&性能一体化测试问题。

功能&性能一体化测试提出背景

我们首先看一下功能&性能一体化理论提出的行业背景:

目前国内多数银行都在压缩科技方面的成本,减少了很多科技项目的预算。对于测试部门而言,降低成本首先会考虑到自动化测试,希望自动化测试能够替代一部分人工测试,从而降低测试外包成本。

自动化测试降低人工成本的理想是非常美好的,但实际情况则是多数银行自动化测试工作进展得很不理想,可以用“鸡肋”来形容。多数银行的测试中心主要推广基于UI的自动化测试,这类测试或是借助HP的QTP完成,或是借助基于QTP开发的平台完成。而银行的业务需求往往变化非常频繁,需求变化后UI界面往往同步发生改变,基于UI的测试脚本往往需要很大的改动甚至推倒重来才可以适应界面变化,因此面向UI的自动化测试主要局限在关键业务场景的回归测试中。基于UI的自动化测试很多还有一个弊端是一台主机往往只能模拟一个用户,导致自动化测试执行效率低下。因此目前各个银行的自动化测试投入/产出情况并不理想。

尽管如此,银行的科技部门对自动化的热情并没有消退。在对一些银行测试中心的调研中,我们了解到很多测试中心的主管们已经在考虑开展接口自动化测试。

可以看出接口自动化测试必将成为自动化测试的一个重要发展方向,而面向接口的功能&性能一体化测试则将成为自动化测试一个全新的发展阶段。

接下来我们看一下功能&性能一体化理论提出的工作背景:

在本行新一代核心系统建设过程中,我们主持了100多个系统的性能测试工作。这些系统可以大致分为核心系统、公共服务模块、产品模块、外围渠道四类系统,其中80%以上属于后台系统,性能测试团队先后对其开展了单元性能测试、集成性能测试、渠道性能测试、多渠道并行性能测试。性能测试历时将近五年,可以想象对这些系统进行性能测试和调优的难度,往往调优一个交易都要耗费大量时间。

在这么庞大的项目群的性能测试过程中,我们体会最深的是“很多性能问题到最后需要付出大量的成本来解决,甚至整个模块推倒重来,从而意识到最有效的性能测试要从开发阶段开始抓起,而不是在各个模块基本开发完成甚至UAT阶段来抓性能测试”。

举一个例子,一个交易有可能调用多个系统,每次调用的响应速度都很快,但所有响应时间加在一起的结果就是这个交易性能不达标。这类问题如果要想解决,只能所有调用到的系统的接口都去进行调优,分别找到自己的程序热点并进行优化,但这个过程往往带来较大的程序改动。

因此,性能测试如果能从开发阶段开始介入无疑是一种非常理想的情况,尤其是如果能在开发阶段随时测试系统接口的性能,这样就可以在接口对外发布前就完成了一轮调优,解决大量性能问题,从而实现既节省成本又加快进度的模板。但无论是测试人员还是开发人员目前都很少考虑在开发阶段做性能测试,这里既有技术方面的原因又有管理方面的原因。

如果能有非常好的自动化测试工具,功能测试人员可以进行接口的性能测试,则在开发阶段启动性能测试是一件相对容易推动和开展的工作。如果接口测试工具既能做功能测试,又能做性能测试,而且不需要像LoadRunner一样开发脚本,则功能测试人员完全可以在开发阶段介入功能&性能测试,随时对后台系统的功能&性能进行测试,则这些后台系统在集成测试前就可以解决掉大量功能&性能问题。

所有基于以上的考虑,本行测试中心一直想开发一套功能&性能测试一体化测试平台,来推行功能&性能一体化测试。

功能&性能一体化测试核心内容

功能&性能一体化测试核心内容包含三个方面:功能&性能一体化测试理论核心、功能&性能一体化测试平台、功能&性能一体化测试终极目标。

功能&性能一体化测试理论的核心内容主要如下:

(1)接口功能与性能测试同时进行

接口功能与性能测试可以同时完成,提高了功能&性能问题的解决效率。

(2)测试尽早启动、问题尽早解决

可以在系统设计阶段启动测试工作,当系统接口设计完成后,就可以进行测试案例设计。之后一旦后台系统的接口对外发布,就可以启动测试执行工作,这样在系统的开发与集成测试阶段,就可以发现并解决大部分功能&性能问题。

(3)随时高效率执行测试案例全集

可以随时根据测试需要,高效率的执行案例全集。借助功能&性能一体化测试平台,可以以性能测试的效率来快速执行案例,测试执行不再是耗时较多的工作,随时都可以在很短时间内完成全部案例的执行。

通过运行测试案例全集,可以大幅提高测试覆盖率,从而有效避免以往“由于测试时间不充分只能执行部分测试案例,从而导致一些问题没有被发现”的情况发生。

因此,提倡每次测试时运行全部已经设计完成的测试案例,以保证测试覆盖率。

(4)案例集设计与管理是工作核心

借助功能&性能一体化测试平台,测试人员既不需要开发测试程序,也不需要手工执行测试案例,完全可以将工作中心放在测试设计上。

在功能&性能一体化测试模式中,测试执行在全部测试工作中占20%左右,测试案例设计在全部测试工作中占50%左右,测试管理等工作占30%左右。

此外,由于要经常执行测试案例的全集,所以必须对测试案例进行维护,以保证测试案例是正确且是随时可执行的。

(5)功能&性能一体化测试平台为支撑

为推行功能&性能一体化测试,必须研发出一个功能强大的功能&性能一体化测试平台来完成测试的管理与执行。

接口功能&性能一体化测试平台的内容如下:

功能&性能一体化测试平台是为支持功能&性能一体化测试理论而开发的平台,平台主要面向后台系统的接口测试。借助此平台,开发&测试人员进行接口测试时可以将工作重心集中在测试案例设计与管理上,测试执行与分析主要交给平台来完成。

平台的两大特点:一是对于多数系统进行接口测试时不需要开发测试程序,只需要进行测试案例设计即可,这也是可以在系统开发&集成测试阶段可以推广功能&性能一体化测试的基础;二是功能&性能测试同步完成,可以实现对系统功能&性能缺陷的早发现、早解决,这种测试方法无疑是最节约成本的做法之一。

功能&性能一体化测试平台与功能&性能一体化测试理论是相辅相成的,理论与平台同时发挥作用,功能&性能一体化测试才能真正开展起来。

功能&性能一体化测试终极目标如下:

功能&性能一体化测试终极目标主要有四个:一是降低功能与性能测试成本;二是提高后台系统的产品质量;三是加快系统开发与测试进度;四是降低系统的投产运行风险。

通过改变与优化现有开发/测试/投产流程,提高测试效率与问题解决效率,遵循测试尽早启动、问题尽早解决这一软件工程原则,功能与性能测试成本肯定大幅下降,而同时产品质量也会得到很好的提升;在投产前可以基于案例全集进行充分的验证,系统投产出问题的风险也会大幅降低。

一体化测试实际工作中解决问题

(1)可以实现尽早启动测试策略

银行多数IT系统的功能测试通常会在渠道相关部分开发完成开始启动,即UI没有开发完成前多数系统是无法测试的。对于多数后台系统,典型的做法是在功能测试启动之前由开发团队的相关人员进行一些连通性的基本测试,而这种测试往往非常不充分,系统80%的缺陷主要在系统测试&UAT测试阶段完成。

借助功能&性能一体化测试平台,功能测试人员可以在系统设计阶段依据接口文档来设计测试案例,在接口对外发布后启动针对后台系统的全面测试,不必等到后台系统与前台系统联调后再进行功能测试。

通过尽早启动后台系统的测试,大量后台系统的缺陷可以在开发阶段或系统联调前解决,大大降低了缺陷的修复周期与流转成本,从而推动了了整个项目的开发与测试进度。而在前期进行了充分的测试,后面系统测试&UAT测试阶段的压力也会大大减轻。

缺陷早发现、早解决是功能&性能一体化测试的主要出发点。按照这样的原则,最终开发系统的质量将会得到提升、进度将会大大加快、成本将会大大降低。

(2)功能/性能同步测试、大幅提高测试效率

一体化测试首先实现了后台系统接口功能与性能的同步测试。在进行接口功能测试的同时,可以同步测试系统接口的性能,这样在开发阶段就可以发现并解决大量响应时间不满足指标、线程互锁、低效SQL、数据库索引不合理等问题。

这样开展功能与性能测试带来的收益是是非常多的,尤其是效率上的提升。例如功能/性能问题的发现与修改周期大大缩短,修改每个功能/性能问题的带来的影响也大大降低,而开发与测试成本也会大幅降低。

借助功能&性能一体化测试平台,能够以性能测试的效率大规模并发执行功能测试案例,从而在很短的时间内执行完成全部测试案例。测试完成后,可以同时生成功能测试报告与性能测试报告。以QTP为例,一台主机往往只能模拟一个用户来运行测试,效率实际非常低下。面向接口的功能&性能一体化测试,测试效率完全取决于系统本身的性能,可以达到每小时执行几十万甚至数百万笔案例的运行效率,测试案例的运行时间在整个测试周期中占比非常低。

(3)改变测试人员工作重心、优化工作流程

传统的接口自动化测试的执行往往非常耗时,测试人员50%左右的时间都耗费在测试执行上,手工/半手工方式逐条执行测试案例是主要的测试执行方式,而测试案例设计在日常工作中占20%左右的比例。

功能&性能一体化测试则通过功能&性能一体化平台以性能测试的效率高速来执行案例,可以节省大量的测试执行时间,通常测试执行在测试人员日常工作中大概占20%左右的比例。

因此通过功能&性能一体化测试平台进行测试时,测试人员50%的精力将会放在测试案例设计上,这无疑将大大提高测试案例的质量,从而可以发现更多的功能&性能问题。

(4)拓展测试阵地、开发人员可以测试性能

对于各家银行的测试团队而言,功能测试人员的主阵地通常在系统测试/UAT测试阶段,这主要是由于测试人员的技术水平决定的。而借助功能&性能一体化测试平台,不擅长开发的测试人员可以非常容易开展接口功能&性能自动化测试,测试团队的武器立刻从冷兵器升级到现代高级武器。有了先进的测试工具,测试人员几乎可以开展单元测试以外的全部功能&性能相关的测试,测试人员的主阵地将大大前移。

通常情况下开发人员不会进行性能测试:一是因为有性能测试团队的存在;二是因为没有合适的工具,毕竟LoadRunner等性能测试工具的使用还是相对复杂的。但无论如何开发人员都会进行功能测试,当使用功能&性能一体化测试平台进行接口功能测试时,性能测试可以同步完成,对于存在性能问题的交易可以直接进行优化,这种解决功能性能问题的成本无疑是最低的。

(5)降低代码变更频次、降低性能测试成本

较早启动功能&性能一体化测试,很容易做到功能&性能问题早发现、早解决。这种测试方式的缺陷流转路径也会更快更短,从而代码的修改频次将会大大降低。此外性能问题与功能问题同步发现,也会避免功能问题与性能问题在不同时段修改的互相影响,从而减少了代码修改频次。

接口功能&性能一体化测试往往类似于一种自顶向下的集成测试,大量的后台系统如果在开发阶段和集成测试阶段进行了充分的功能&性能测试,将会扫除大量诸如响应时间不达标、索引不合理、低效SQL等基础类性能问题,这种方式无疑会降低大量性能测试的执行和调优成本。后台系统完成基础的性能调优后,再开展渠道发起的端到端性能测试将会相对比较容易,无论是测试执行进度还是调优的进度将会大大加快,从而节省了后期性能测试的成本。

(6)改进测试流程、加快集成/UAT测试速度

后台系统有了先进的功能&性能一体化测试平台,可以在各渠道相关功能开发完成前进行充分地测试,不再像以前一样依赖外围渠道系统来进行全面的测试。后台系统前期做了充分的功能&性能一体化测试,其功能将会比较稳定,从而在集成/UAT测试阶段时更容易定位缺陷,这无疑大大加快了集成/UAT测试进度。可以看出,一旦每个后台系统充分遵循问题早发现、早解决的原则,整个项目的进度将会得到更快的推进,还可以避免很多出了问题难定位和互相“踢皮球”的情况。

(7)容易开展全回归测试、降低投产后风险

通常系统进行生产变更前,主要对系统变更以及变更影响到的部分进行测试,这种测试往往是不全面的。对于一些非代码类变更,例如修改一些配置项,由于开发管理不规范,往往不太容易确定测试范围,如果测试不全面则会带来生产问题。

功能&性能一体化测试平台的优势之一就是测试执行效率高,借助它可以在每次变更投产前以性能测试的效率快速进行案例全集的回归测试,避免了以往投产前部分回归测试不全面的风险,排除了潜在的功能与性能问题,从而降低系统变更上线后的风险。

功能&性能一体化测试实际应用

功能&性能一体化测试适合应用的企业组织:

功能&性能一体化测试主要应用于拥有大量IT系统的企业,例如银行、电信类企业,因为这类企业往往拥有数百套IT系统,且其中大部分是后台系统,推广功能&性能一体化测试可以收到显著的成效。大型企业之所以适合并能够推广这类测试,是因为其有实力来开发功能&性能一体化测试平台。开发测试平台是一个较大的投入,既需要持续的资金投入,又需要找到合适的领域专家,这两个条件都具备才能够完成平台的开发与推广。而对于IT系统较少的企业,只有引入第三方的功能&性能一体化测试平台,才能够推广这样的测试。

功能&性能一体化测试适合应用的测试对象:

功能&性能一体化测试比较适合后台系统的接口测试。对于前台渠道系统,则目前的技术还不太适合推广功能&性能一体化测试。不过由于对后台系统进行了充分的接口测试,前台渠道系统的功能&性能测试压力将大大减轻。

功能&性能一体化测试适合应用的测试阶段:

功能&性能一体化测试主要应用在下面三个测试阶段
(1)系统开发与集成测试阶段

系统开发与集成测试阶段是功能&性能一体化测试的主要应用阶段,在这两个阶段将完成测试案例库的开发、一体化测试执行、系统大部分功能&性能问题修复。

(2)发布版本前的功能&性能验证

一个后台系统发布最新版本到测试环境中是,可以进行一轮基于案例全集的功能&性能一体化测试,以保证系统的功能&性能都是没有问题的。

(3)系统正式或变更投产前的全回归测试

系统正式或变更正式投产前,进行一轮基于案例全集的功能&性能一体化测试,可以大大降低系统投产后的风险。

这种测试尤其对于变更类投产意义更大。对于系统变更,传统做法是先测试后台系统的受影响部分,然后通过渠道测试受影响部分,因而对变更的影响分析十分重要——但很多时候变更的影响分析不是那么容易,尤其是一些影响全局的变更。而当对后台系统的案例全回归测试是一件非常容易的工作时,我们将可以随时开展这种测试——不必进行深入的影响分析,就可以以极低的成本排除后台系统的风险。

建设功能&性能一体化测试平台

建设功能&性能一体化测试平台是功能&性能一体化测试工作能够开展起来的必要条件。通过建设功能&性能一体化测试平台,我们不但要完成功能&性能一体化测试,还要实现了下面很多第三方测试工具目前不具备的功能:

(1)测试脚本/程序的免开发支持

(2)对不同协议接口的测试支持

(3)对测试案例的规范化设计与管理

(4)测试过程的监控与分析

(5)测试结果的深入分析与展示

(6)灵活的测试场景设计与管理

(7)接口测试流程管理功能

(8)……

通过专业化的功能&性能一体化测试平台,真正实现对软件开发与测试流程的优化与改变。同时依托功能&性能一体化测试理论与平台,我们可以进一步研究很多新的测试管理方法与技术,例如:测试案例自动生产技术、测试数据管理平台、云测试管理中心、测试大数据分析中心等等。

相信通过不断地探索与技术突破,我们会不断提高银行系统的自动化测试水平!

读者评论

相关博文

  • 陈绍英老师专题开讲啦

    陈绍英老师专题开讲啦

    本专题的主讲人是拥有16年以上IT系统开发与测试经验的陈绍英老师。大家有任何关于性能测试、自动化测试方面的问题,或是对陈老师作品的疑惑,都可以在本页面留言,陈老师将会为大家耐心作答。 下面先来介绍陈老师: 陈绍英,北京大学软件与微...

    陈晓猛
    1560 2 2 5

推荐用户