随着金融行业的业务不断增加,金融交易模式的不断变化,金融机构对信息化的要求也越来越高,高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量,对金融行业软件的测试人员来说,也提出了更高的要求。以下针对金融行业软件的测试做出了具体的分析:
1金融行业软件特征分析
金融行业软件系统具有集中度高、规模庞大、数量多、系统之间关联性强、业务复杂、需求变化快等特点,如何有效可行的实现软件测试和软件质量控制,是对金融行业软件测试人员提出的基本要求。
1.1金融行业软件的业务特点
以金融行业软件的典型代表银行系统软件为例:一般的银行系统软件都有一个核心系统,核心系统主要涉及账务的处理、清算、计息等。银行的其它业务系统都会直接或间接的与核心系统进行交互,主要处理一些涉及业务的流程以及系统管理、用户管理等辅助功能。
此外,银行的业务系统也种类繁多。比如:ACE/柜面、网上银行、电话银行、呼叫中心、信贷、资产托管、资金风险分析及风险控制系统、外汇买卖、基金、期货、黄金、汇票、信用卡业务以及其它衍生业务等等。各个系统之间都可能有着密切的联系,之间也会涉及到不同系统之间的接口。
因此,在测试过程中,除了对银行的核心系统、业务系统进行测试之外,还会涉及对接口的测试,而接口测试往往需要测试人员构造一定的测试环境与测试数据来模拟各系统之间的交互。
1.2金融行业软件的复杂性特点
就银行系统软件来说,本身就具有复杂性的特点。首先,银行软件具有不同的客户群,如个人用户、企业用户、银行内部管理人员、业务人员等,因此,银行软件会有针对不同客户所使用的版本或权限控制。此外,对于不同的服务方式,如柜台、电话银行、网上银行等,都必须开发出不同的软件。其次,银行业务种类繁多,业务逻辑也非常复杂,对业务处理要求有很高的安全性和实时性,这些都要借助复杂的技术才能实现。因此,对于测试而言,软件的复杂性也增加了测试的复杂性,对测试者来说要求有相当的经验和测试技术的支持。
另外,由于银行业务的快速发展,当旧的银行软件系统无法满足业务处理的要求时,就必须开发新的系统,对于重新开发的新系统来说,旧系统的用户数据必须保证能在新系统中正常使用,这就涉及到了新旧版本的数据移植问题,由于新旧系统之间数据字典存在差异,数据移植后能否正常,就需要对新旧数据进行比对性测试。比对测试过程往往会涉及数据库的应用及比对工具的开发使用。
2金融行业软件测试的现状
根据某项调查,金融企业应用系统的数量,中小银行应用系统数量普遍在100个左右,有一半银行超过100个应用系统;虽然保险行业应用系统数量相对较少,但大部分保险公司拥有10―50个应用系统;而且这些数量还有进一步上涨的趋势。调查数据也表明,金融行业IT部门的测试能力目前远远低于金融机构对测试的要求[3]。即使是IT成熟度比较高的企业,也难以覆盖所有应用系统的测试需求。金融企业的测试需要和信息科技部门的测试能力之间存在一定的差距。
3金融行业软件测试方法及范围分析
以下主要从功能测试、接口测试、数据移植测试、性能测试、安全性测试、风险监控测试、文档审核几个方面来阐述金融行业软件的测试方法及范围[4]。以下划分主要为了更清晰了解金融行业软件测试所包含的范围,本次分析不涉及白盒测试的内容,主要针对涉及金融行业软件业务特性的测试方法及范围进行阐述。
3.1功能测试
功能测试,主要是对软件的功能进行的验证,对于金融行业软件来说,功能测试主要进行以下功能的验证:
3.1.1业务验证测试
验证业务系统的功能是否正确实现,测试其业务处理的准确性。
1)业务流程测试
金融行业软件测试首先关注的是业务的正确性,业务流程要合理、业务处理正确无误,这些往往需要测试人员具备一定的金融软件测试经验,才能更好的判断业务流程设计是否合理,是否满足客户实际需求,以及业务流程处理过程中可能会涉及到的异常,通常通过正常案例和异常案例来验证业务流程的完整性和正确性。业务流程除了验证流程的正确性,通常对于涉及金额、资金、库存等数据及业务流程中生成的记录是否正确性也是测试的重点。
2)账务处理
对于银行来说,账务处理为核心系统功能,也是这类软件测试的重点,账务处理不仅涉及到资金,还与交易过程相关,在测试系统对账时,必须对账务处理流程有清晰的认识,对于账务处理过程中账务是否处理正确、是否出现错账、是否需要进行调账等案例都要能进行完整的案例设计来覆盖测试点,这一块的测试一般需要有经验的测试人员来进行测试。
3)清算
银行系统清算过程涉及的东西较多,如资金清算、库存清算、计费、计息、对账、登帐、报表生成等复杂的过程,同时涉及的数据量也是非常的大,对于大型系统来说更是如此数据检查的工作量也很大,同样测试人员需要对清算的全过程有清晰的了解。
4)报表
对于银行系统来说,报表是直接呈现给用户最直接的结果,而对一个银行系统来说,报表的数量一般都较庞大,很可能涉及到几十张报表,因此对报表的检查也是测试的重点,这需要测试人员对银行系统涉及的业务非常熟悉,能判断报表的设计是否合理,报表数据是否正确等。
3.1.2客户端测试
客户端主要针对的是软件界面功能的测试,根据功能划分一般涉及以下几类:
1)系统管理类
系统管理主要包括系统参数管理、用户管理、角色管理、权限分配等,测试也包含相应的业务逻辑及页面测试,如查询功能的测试、显示风格、验证客户端页面显示数据是否正确等。
2)数据查询类
主要验证数据查询结果客户端显示是否正确。
3)其它涉及业务操作的功能界面
主要针对客户端界面的录入、查询等功能进行测试。
客户端测试还会对界面的友好性、提示信息的合理性等进行测试。
3.2接口测试
对于银行来说,通常行内系统和与银行外对接的系统是独立开发的,行内与行外系统采用的数据库、通讯协议等都可能存在差异;并且对于银行来说,还可能存在多个系统,如:网上银行、ACE/柜面、电话银行、呼叫中心、信贷、资产托管、资金风险监控分析系统等,并且各个系统之间可能关联特别紧密,存在许多交互;因此,在测试中会涉及到相关系统接口的测试,这时通常需要构造对接系统的测试环境、数据、业务等来模拟对接系统。
接口测试中,由于一方系统在测试过程中不可见,因此通常需要进行环境的模拟,比如开发模拟软件来模拟被测试系统与所交互的系统之间的通讯,并且在测试过程中通常需要测试人员自己组报文,通过模拟发送器收发发送报文来进行测试,并通过后台检查报文转换是否正确,通过数据库来验证数据是否正确。通常来说,接口的测试测试人员主要跟后台和数据库打交道,而很少通过客户端来操作,因此要求测试人员对数据库知识、对应的操作系统命令以及一些中间件具有一定的熟悉程度才能更好的进行测试。
接口测试一般在功能测试阶段完成,功能测试计划中应包含接口测试。
3.3数据移植测试
对于银行来说,软件产品经常存在更新换代或升级的情况,新系统的运行环境和旧系统可能不一致。因此,为了保证系统的顺利运行,在新系统研发出来,准备上线之前,需要把原来旧系统的客户历史数据移植过来,这就涉及到了数据移植问题。数据移植并不是简单的数据迁移,因为新旧系统之间数据字典是不同的,为了保证移植结果的正确性,需要对新旧数据库的数据进行比对,通常可以通过人工方法或开发比对工具进行比对。
举例来说,旧系统采用的SQLSERVER的数据库,而新系统采用Oracle的数据库;并且就系统可能存在50张数据表,新系统可能有200张数据表,而且,新系统的数据表结构与旧系统可能完全不一样,或者新旧系统的某张表可能对应另一个系统的几张表,这样在数据移植测试中就要进行几方面的测试。比如,两个数据库可能存在有差异的地方,如数据类型不同,位数不同,在数据移植过程中对这部分就应该做详细的检查。此外,表结构的不同,在做数据移植检查时,需要获得新旧版本的数据字典,并且对移植过来对应的所有字段数据是否移植正确做检查。
数据移植测试往往需要测试人员有足够的耐心,能仔细进行比对,发现存在的问题。数据移植测试一般在功能测试阶段完成,功能测试计划中应包含数据移植的测试。
3.4性能测试
性能测试的目的主要是验证业务系统是否满足业务需求的多用户并发操作,是否满足业务性能需求,评估压力解除后的自恢复能力,测试系统性能极限。
随着金融行业软件的规模越来越大、处理能力要求越来越高,进行性能测试成为金融软件测试中必不可少的一个环节。金融行业软件一般在投入使用时,需要接受大批量的业务,并且对于业务的响应处理时间也有很高的要求,这对于应用程序本身、操作系统、中心数据库服务器、中间件服务器以及网络设备的承受力都是一个严峻的考验。任一个环节的问题都可能给用户带来巨大的商业损失。因此,如何保证在压力情况下系统能正常运行是金融行业软件质量保证的关键,同时也是测试人员最需关注的重点。
在性能测试过程中,通过性能测试工具来模拟与真实环境接近的情况,如通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率,获得一定的参数(如:(如内存、CPU、缓存、系统响应时间、最大吞吐率、事务平均处理时间),以及系统可以承受的压力情况,进行针对性的测试与结果分析,找到影响系统性能的瓶颈,以便对系统进行优化。
3.5安全性测试
安全性测试的目的主要是评估业务系统在网络安全、主机安全、应用安全、数据安全、运行维护安全、电子认证安全、业务连续性等方面的能力及管理措施,评价其业务系统的安全防控和安全管理水平。
对于金融行业软件来说,安全性有着重大的意思,尤其对于网络日益发达的今天,大量的金融类交易都是通过网络来实现,确保信息的安全,对安全性测试提出了更高的要求。如客户数据的安全、资金的安全;银行主机的安全,应用程序的安全以及网络安全,某一个环节出现问题都会给系统带来巨大的风险。安全性测试主要检查出软件存在的安全隐患,确定安全等级,以期得到整改。
通常用的安全性检查手段及检查点如:跨站攻击、弱点攻击、管理界面泄露、敏感信息泄露、跨站点请求伪造、恶意上传等。
对于安全性测试来说,一般需要专业的工具作为支持,因为,大多数的安全性测试都会交给具有一定资质的第三方评测机构来进行。
3.6风险监控测试
主要目的是评估业务系统的风险监控、预警和管理措施,测试其业务系统异常交易、大额交易、非法卡号交易、密码错误交易等风险的监测和防范能力以及系统资源占用的监控。
对于银行的较大型系统来说,一般都会专门开发对应的风险监控系统,一类风险监控主要是对系统的交易、资金、等情况进行监控;另一类则是对主机资源情况进行监控,对于交易、资金类的风险监控测试时主要是根据风险监控需求来验证监控结果是否符合需求描述;对于系统资源类的测试主要关注被监控主机的资源占用情况是否合理。
风险监控测试一般在功能测试阶段或性能测试阶段完成,功能测试或性能测试计划中应包含风险监控的测试。
3.7文档审核
目的主要是验证业务系统的用户文档、开发文档、管理文档等是否完整、有效、一致,是否符合相关标准并遵从更新控制和配置管理的要求。
文档审核最基本的原则是软件实现必须按照用户需求文档来进行设计和实现。对于需求文档审核来说,文档必须覆盖用户所有需求点的描述;对于开发文档,如概要设计文档、数据库设计文档,设计和实现原则应根据需求而定;此外各类管理文档审核包括对项目工期的定义、项目人员的安排与任务分配、项目具体执行的定义等等。在实际应用中,由于用户需求存在经常性的变动已经增加,文档也会存在相应的变更,审核部分也包括对变更部分内容的审核。但是目前金融行业软件没有一个严格的规范来进行约束,因此,在文档审核和实际的开发、测试操作环节都不能得到真正的落实,对测试质量环节也造成了相应的影响。
3.8自动化测试
现阶段实施的自动化测试与手工测试相比较,就是采用程序模拟手工测试的过程。在自动化测试过程中,原来由手工控制的操作,现在由程序来控制,不再进行手工干预[5]。自动化测试主要用于功能测试,测试过程包括脚本的录制、编写及回放。
4金融行业软件测试工具分析
金融行业软件测试与其它应用软件测试流程基本一致,测试过程也涉及到一定的测试工具的使用,以下是金融行业软件常用的软件测试工具:
4.1黑盒测试工具
黑盒测试工具较多应用的是自动化测试工具QARun、QTP。
4.2性能测试工具
常用于金融系统软件,适用于各种体系架构的自动负载测试工具LoadRunner,它能预测系统行为并优化系统性能。
对于性能测试来说,很多情况下,商业化的软件不一定能满足性能测试的需求,因此很多时候,需要开发一定的性能测试软件来进行针对性的测试。
4.3测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)工具
常用测试管理工具有:QC、TD、ClearQuest等,主要对测试计划、测试用例、测试实施进行管理,并进行缺陷跟踪管理。
5金融软件测试模式分析
在金融机构内部组织业务测试之前,软件必须经过完整的系统测试、性能测试及安全性测试等才能交付金融机构的业务部门进行业务测试,测试模式可以有以下几种模式:
5.1软件开发方进行的内部系统测试、性能测试和安全性测试
开发方内部进行的测试与本文第三部分描述的软件测试方法与范围分析基本一致,下面主要就第三方测试的模式进行分析。
5.2第三方测试机构进行的系统测试、性能测试和安全性测试
5.2.1第三方测试的优点
第三方测试是指由独立的软件评测机构,根据项目管理方或用户的委托,对被测软件所进行的科学、公正、客观的综合测试及评测活动。在软件工程的整个流程中,用户对于软件的质量非常关注,但用户本身没有足够的能力对软件进行测量的评估,这时,就需要引入一个专业的评测机构,来对软件的质量进行客观的评测。第三方测试不同于软件开发方的内部测试或用户的业务测试,强调由独立于用户和开发方的软件评测机构来承担测试任务,其目的在于保证测试的公正性与客观性。第三方测试主要适用于对行业应用软件的测试及评估。基于以上第三方测试的优点及目前金融机构测试人员与金融系统测试需求的不平衡性,目前,在金融行业,专业评测机构的第三方测试已经显示出诸多的优势,并得到越来越多的应用,如在人行支付系统、商业银行的一些应用系统,都曾引入第三方测试,并获得了很好的效果。
相对于内部测试来说,第三方测试具体有以下几个优点:
1)随着系统规模的日益庞大,软件开发方很难投入足够的人力、物力来参与测试工作。同时,开发方也缺乏专业的测试工具以及经验丰富的测试人员;只有第三方机构才具有这样的实力来完成测试任务。
2)第三方测试以合同的形式制约了测试方,保证了测试工作在一开始就具有客观性。
3)第三方能够通过系统需求来理解整个系统,并从软件工程的角度把握系统,能专业、公正的评价系统中出现的问题。4)第三方机构的权威性能更好的协调第三方、用户以及开发方三者之间的关系。
5.2.2第三方测试的应用
第三方测试机构在测试技术方面一般具有行业内较为专业的测试技术以及较为领先的测试技术、对于被测试项目来说具有技术测试层面的优越性。但是另一方面,第三方测试的管理具有一定的复杂性,整个测试活动的实施,不但需要较强能力的软件测试人员,更需要得到用户及软件开发方的支持,才能确保测试人员对被测软件有较深的认识,确保软件测试的最终质量。
此外第三方测试在整个测试活动中,需要判断开发方的软件是否满足用户的需求,提交最终的测试报告,对所测试软件给出公正、客观的评测结果。
5.2.3第三方测试常用的测试工具
无论作为内部测试或第三方测试,都必须采用一些自动化的测试工具来进行测试的管理和执行。常用的第三方测试的测试工具主要包含以下几类:
1)测试管理工具
如:TestDirector、QualityCenter、ClearQuest。
2)性能测试工具
如:LoadRunner及第三方自己开发的性能测试工具。
3)自动化测试工具
如:QARun、QTP
5.2.4第三方测试目前存在问题及发展前景
首先,第三方测试作为用户和开发方都放心的测试或评测机构,在客户需求日益增加的情况下,具有良好的发展前景。但是,第三方测试机构所提供的是测试服务,只涉及人工费用,在竞争压力比较大的环境下,价格战不可避免。
6结束语
本文针对金融行业软件的测试现状、测试方法及范围、测试工具、以及测试模式进行了分析,提出了适用于金融行业软件测试的具体方案及实用技术。但随着新的设计模式及开发方法的不断涌现,现有的测试理论及技术必须做出与之相对应的改进才能满足不断变化的用户需求。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
文档获取方式:
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取