以下主要从功能测试、接口测试、数据移植测试、性能测试、安全性测试、风险监控测试、文档审核几个方面来阐述金融行业软件的测试方法及范围[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]。自动化测试主要用于功能测试,测试过程包括脚本的录制、编写及回放。