管理功能的软件产品的质量在保障银行的稳定运转方面发挥着越来越重要的作用。作为提高软件产品质量的一个重要手段,加强对软件产品的测试得到了各家银行的充分重视。

  中国农业银行股份有限公司(以下简称“农行”)于2008年10月在信息技术管理部内设置了专职测试机构??备援测试中心,细化了对软件产品的测试职责,进一步增强了专业测试力量。在备援测试中心的筹备期间,农行首先从风险管理角度分析了软件产品测试的价值。新《巴塞尔资本协议》把操作风险与信用风险、市场风险并列,作为商业银行面临的三大风险之一。操作风险在软件产品方面集中表现为,由于缺乏相对独立和专业的软件质量评测机制,应用软件在需求分析、业务功能、技术实现等方面的错误和缺陷不能及时发现,导致记账错误、运行错误、结算错误等交易差错时有发生,越权操作、欺诈交易、不合理流程等导致相关风险难以有效控制。因此,软件产品在投入市场前, 只有通过有效的测试, 对内确保运行秩序, 对外确保服务质量, 才能真正成为商业银行获取差异化竞争优势的利器。

  在充分认识软件测试必要性和重要性的同时, 农行结合自身软件开发和软件运维的实际需要, 对软件测试进行了体系化的研究和实践, 不断探索如何在适应各方面约束的基础上, 更加有效和高效地开展软件测试工作的方式和方法。

  一、明确软件测试领域的定位和组成

  明确软件测试领域的定位,对发挥软件测试的作用至关重要。从领域构成角度来看,软件生命周期可划分为软件开发、软件测试和软件运维三大领域,这三大领域是相互关联和作用的。同时,根据目前软件测试工程实践的需要和发展的现状,可以把软件测试领域分为软件测试调度体系、软件测试方法体系和软件测试技术支持体系三个部分。上述划分,有利于充分利用当前的理论研究成果和标准规范,有利于条件成熟的系统先行,更有利于推进对多用户、大数据量、大交易量的大型信息处理系统的软件测试工程实践的发展。

  软件测试领域在整个软件生命周期中的定位如图1所示。在软件测试领域中,软件测试技术支持体系是软件测试调度体系和软件测试方法体系的基础,应该能够支持各种方式的软件测试调度体系和各种软件测试方法体系;而软件测试领域则应能支持各种软件开发领域和软件运维领域。软件开发领域、软件测试领域和软件运维领域共同满足相干方的期望。

 

  二、以企业标准方式规范软件测试活动

  在软件测试活动中,重要和基本的要素是软件测试要关注的实质性内容,即那些不管怎样管理调度测试、用怎样的方法测试、按怎样的流程测试,都必须要考虑的事宜。这些事宜的共同特点是, 即便不事先考虑预案, 在实际测试工作中也有可能要面对和解决;即便在总结时没有进行分析, 在被测试的软件投产上线后, 也往往会引起关注。

  农行根据自身软件测试的实际,在研究有关软件测试的文献和标准、国际标准与国外先进标准的基础上, 认为目前对软件测试的实质性要素描述为全面和稳定的文献,是标准GB/T9386-2008《计算机软件测试文档编制规范》和IEEE Std 829-2008《Standard for Software and SystemTest Documentation》。

  标准GB/T 9386-2008《计算机软件测试文档编制规范》自1988年发布第一版以来,实施了将近20年。IEEE Std 829-2008《Standard for Software and SystemTest Documentation》已经发布了多达3个版本,其中2008年发布的第三个版本改进较大,增加了“MasterTest”的概念,即明确了多个被测试软件或软件多个测试阶段并存的情况下的软件测试策略。

农行在2006年即开始关注软件测试实质性要素的规范问题, 并于2007年编制了《软件测试文档规范》企业标准第一版。此后,在学习消化GB/T 9386-2008《计算机软件测试文档编制规范》和IEEE Std 829-2008《Standard for Software and System Test Documentation》的基础上,以标准为基干,以IEEE标准为补充, 编制了基于农行企业标准的《软件测试文档规范》第二版,并于2010年正式发布,在企业范围内实施。基于农行企业标准的《软件测试文档规范》第二版在将软件测试文档分为4级规范度的基础上,提出了 “4级测试规范度”和 “3级测试联动度”的概念,并给出了不同规范度的选择指南,进一步提高了该企业标准在软件测试工作实践中的可操作性。

  与此同时,农行陆续开展了软件测试流程相关研究,不断探索能够满足农行自身管理需要的软件测试流程规范。目前, 已在研究分析相关标准和国际标准的基础上, 归纳总结了软件测试通用基本流程和软件测试通用精化流程, 并针对目前软件开发采用的主要过程模型进行了相应的软件测试活动分析。

  三、加强软件测试环境建设

  农行的软件测试环境由软件测试运行环境、软件测试数据环境和软件测试工具环境组成。

  软件测试运行环境是软件动态测试执行的依托。农行根据自身软件测试的需求和目标,以“虚实结合、高度共享、灵活调度、持续可用、绿色环保”为理念构建了软件测试运行环境。采用虚拟化技术和实际物理资源结合的方式,分别建立了基于不同平台的私有云(或资源池)。资源部署可以根据实际情况进行灵活的组合,可以由一个物理资源变为多个虚拟资源或者由多个虚拟资源整合为一个物理资源。使用虚拟化技术降低了物理资源的采购成本,减少了能源消耗,节省了维护成本。在使用虚拟化技术的同时,通过对测试阶段、业务类型的分析,实现了对多个测试并行实施、多个测试共享数据的管理,构建了通用的测试运行环境。

  软件测试数据环境是软件动态测试执行的基础。农行对银监会提出的“商业银行应制定并落实相关制度、标准和流程,确保信息系统开发、测试、维护过程中数据的完整性、保密性和可用性”进行了认真的学习和分析,建立了由测试数据敏感性与脱敏方法二维模型(静态模型)和测试数据脱敏加工模型(动态模型)共同组成的测试数据脱敏工作机制。静态模型是指,按照测试数据可能导致风险的大小程度,将测试数据敏感性分为七级;按照脱敏处理方法的不同实现方式,将脱敏处理方法分为三类,由此形成由测试数据敏感性和脱敏处理方法构成的二维模型。动态模型是指,根据需求约束(包括外部监管要求和测试实施需求)以及资源约束(包括数据资源、人力资源和设备资源等)要求的变化,通过对测试数据脱敏加工策略、加工能力和加工方法进行适当地调整,使测试数据的脱敏加工结果满足软件测试实际需要的动态工作调整模型。