项目介绍

  某大型商业银行测试项包括功能、性能、压力、白盒测试等多方面进行,动态覆盖率选用星云测试工具进行小型机下核心交易程序的分支覆盖测试。

  该银行核心交易系统使用的平台为AIX,设计的开发语言为IBM XL C\C++,编译工具为XLC,整个测试多达上千交易项。

测试诉求
  在动态白盒覆盖率测试数据获取中,因核心交易系统代码量大,交易项目过多,用报文进行单个逐一白盒测试需要的时间过长,银行要求整个核心交易系统800多万报文需在并发模式中运行,且运行时间不能超过2天。
解决方案
  • 在星云精准测试有关于“动态白盒覆盖率功能点”测试中,为获取测试覆盖率数据,首先对每个交易项目进行插装。因涉及到的交易项目过多,银行要求可以一次性的进行全体项目插装,并要求插装时间不能超过4天。针对需求, 星云测试的SHELL产品通过简单的修改XLC编译器(原XLC编译器指向SHELL的编译器,SHELL编译器插装完毕后指向回XLC编译),使得整个插装能一次性进行,并在插装中使用了并发技术。本次总插装点超过300多万,插装时间在原有的编译时间的基础上,效率损失非常小。
  • 在动态白盒覆盖率测试数据获取中,因核心交易系统代码量大,交易项目过多,用报文进行单个逐一白盒测试需要的时间过长,银行要求整个核心交易系统800多万报文需在并发模式中运行,且运行时间不能超过2天。针对这个需求,星云测试通过SHELL示波器数据采集中的消息队列技术以及批量提交测试数据技术,在实际测试中支持40个并发运行、80-150(TPS/秒)接口报文发送,在总800万报文高并发下持续运行20多小时,测试传输数据无丢失的情况下完成整个测试。
  • 星云测试针对银行分支覆盖上给出了可视化的技术方案,展示出当前被测函数的分支代码覆盖率详细情况,以颜色进行分子/分母可视化展示,并按要求对每个交易进行单独的覆盖率数据统计,(该银行核心交易系统的每个交易项目都有独立的路径与编号文件夹名,星云测试按其需求进行划分每个交易项,进行分支覆盖率统计,并提供了路径搜索功能,来查询交易项目中的具体分支覆盖率信息)。对于一般交易可以重点考察基本块覆盖率,对于关键函数可以基于MC/DC的覆盖率可视化技术,考察(机载适航标准的)覆盖率指标。
  • 该银行核心交易系统的分支覆盖是以银行测试的中心进行测试,测试结果针对覆盖不全的信息需单独给负责该模块的开发人员进行确认。星云测试针对这个需求,从安全以及其内部测试报表的考虑,给出了单独的覆盖率可视化数据导出功能,针对不同的项目导出代码可视化信息PDF文件用于部门之间的确认,查找出为覆盖的原因。(在实际使用中,银行的开发人员会收到测试中心发放的覆盖未达标PDF可视化文件进行确认,确认结果多数为测试过程中未考虑深层次的逻辑关系导致未测试到与按实际业务正常走向进行测试却缺少大量的异常测试用例)
  • 星云测试针对银行核心交易系统如此多的交易项目给出了漏洞风险的报告,通过星云测试的测试数据分析,以函数圈复杂度为主要单位,配合每个函数覆盖率进行整个银行核心交易系统的漏洞分析,检测出测试风险中漏洞较高的交易项目并进行排序展示。
  • 在全量测试中,银行采用的线上交易报文再测试环境多进程回放的方式。星云测试产品以系统级,高并发场景采集程序内部运行逻辑,星云测试软件示波器实时展示收发数据的频率,shell以每秒最高1500多万的数据(针对程序逻辑运行块)进行采集。在被测试系统搞并发和吞吐运行的情况下,基于星云测试的高频队列模块,可以在交易系统进程内,向外部示波器高频率发送数据,保证核心交易系统仍可保持正常访问和合理的响应。
测试效果反馈
  • 星云测试在核心交易系统约十几亿行代码量,总800万报文高并发下持续运行20多小时,测试传输数据无丢失的情况下完成整个测试。
  • 覆盖率可视化及关键函数基于MC/DC的覆盖率可视化技术把高复杂度的模块风险降低到最低。
  • 星云测试产品在系统级、高并发的场景下,针对程序逻辑运行块以每秒最高500多万的数据,采集程序内部运行逻辑,保证核心交易系统正常访问和合理的响应。
  • 因对整体业务的改进,极有数据说服力,后续进行了大规模采购。