龙建祥 王宏风 姚申茂
(海军705厂1) 湛江 524016)(海装舰船技术保障部2) 北京 100841)
各国武器装备发展的实践表明,武器装备实行“三化”(通用化、系列化、模块化)不仅是发展武器装备的需要,而且对推动国防科技进步也起到非常重要的作用。它的目的就是为了最大限度地利用先进科技成果,最大限度地减少同一水平上的重复劳动,以最小的投入和有限的品种、规格的单元研制出满足多样化需求的武器装备,以达到缩短研制周期、降低成本、提高质量和可靠性、简化维修和后勤装备保障、提高战斗力的目的。VXI总线测试方案就是“三化”建设中的一个很好的例子,它具有电磁兼容性好、可移植性强和组建系统容易等优点,当前各国武器装备的维修设备中普遍采用了VXI总线的测试方案。
新技术的应用往往也伴随着对该项新技术的测试课题的研究。如:基于VXI总线的测试软件如何进行软件测试?基于VXI总线的测试软件的可靠性与可用性如何评估?
VXI总线是 VME总线在仪器领域的扩展(VMEbus eXtensions for Instrumentation),是计算机操纵的模块化自动仪器系统。经过十多年的发展,它依靠有效的标准化以及VXI总线仪器的互换性和互操作性。目前,全世界有近400家公司在VXI总线联合会申请了制造VXI总线产品的识别代码(ID号)。大约有1300多种VXI产品,其门类几乎覆盖了数据采集和测量的各个领域。
军事部门不仅把VXI用于基地设备的修理与维护,而且也用于作战系统。目前,许多政府机构和军事机构正在把VXI看作测试标准,美国军方开始由定做逐步转向使用现成的商用VXI系统,这一行动正在把更多的民用部门导向VXI。VXI总线已成为公认的21世纪仪器总线系统和自动测试系统的优秀平台。
软件测试(Software testing)是软件生命周期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动,软件测试的目的是为了检验软件系统是否满足需求[2]。
软件测试从测试方法上分可以分为“白盒测试”和“黑盒测试”两种。白盒测试是根据程序的内部逻辑来设计测试用例(test case),检查程序中的逻辑通路是否都按照预定的要求正确工作。而黑盒测试是根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明书的要求[3]。
从测试的顺序和规模上分,又可分为单元测试、集成测试、确认测试和系统测试。单元测试是测试软件模块级的功能和算法,单元测试应该在编码和详细设计阶段应用白盒测试的方法进行测试。集成测试是测试软件模块间的接口和通讯,集成测试应该在设计阶段应用黑盒测试的方法进行测试,确认测试是以规格说明书为依据,对软件的功能、性能等进行的黑盒测试,而系统测试则是对软件与硬件和其他相关因素的功能测试。
对各个阶段的测试必须选用相应的测试工具来完成,常用的软件测试工具有测试数据生成程序、动态分析程序、静态分析程序和文件比较程序。测试数据生成程序可以为被测试系统自动生成大量输入数据;动态分析程序是分析被测程序中每个语句的执行次数,利用它可以发现测试过程中没有执行的语句,以便增加测试数据;静态分析程序不需要执行被测试的程序,它仅仅扫描被测程序的正文,从中寻找可能导致错误的异常情况。在这些自动测试工具中,NuMega公司的NuMega测试软件最具权威性,该测试软件由一个静态分析程序(BoundsChecker)和两个动态分析程序(T rueCoverage和T rueTime)组成。
为了对基于VXI总线测试软件进行较为完备的测试,结合VXI平台的主要功能,我们拟订以下测试方法:
1)文件管理功能的测试,主要进行文件的存储、文件打开、文件新建、文件访问和文件合并等文件功能进行测试。
2)程序运行及调试功能的测试,这部分的测试用例将运行源程序并进入界面,单步执行并设断点功能进行测试。
3)编程控件的测试,这部分的测试用例将对基本控件,包括流程设计控件、函数调用控件、输入输出控件、数据控件以及显示控件进行功能测试。
4)对VXI平台重要的常用功能的测试,这部分的测试用例将对仪器管理与控制、子程序与子函数的调用、测试数据的分析与显示、测试结果的存储与取回、操作界面的建立以及生成测试报告六个常用功能进行测试。
5)在进行上述的测试的同时,用NuMega公司的NuMega测试工具对源程序进行静态分析和动态分析。
软件测试主要依据是被测试系统的研制任务书和技术规格书,是对软件整体功能和性能的综合测试与评估。测试用例的合理性对于软件的测试与评估具有关键作用,所以应该与软件的研制人员以及最终用户一起,有针对性地研究实际操作环境并加以描述,形成合理的测试用例。另一方面,软件运行环境的复杂程度对软件评估具有重要作用,所以应产生尽量逼真的运行背景[4]。
软件维护是软件生命周期的最后一个阶段,也是持续时间最长,代价最大的一个阶段。测试的主要目的就是提高软件的可维护性,降低软件维护的成本。软件维护通常包括四类:为了纠正在使用过程中暴露出来的错误而进行的改进性维护;为了适应外部环境的变化而进行的适应性维护;为了改进原有的软件而进行的完善性维护;以及为了改进将来的可维护性和可靠性而进行的预防性维护。
软件的可理解性、可测试性和可修改性是决定软件可维护性的基本因素。软件生命周期每个阶段的工作都和软件可维护性有密切的关系。良好的设计、完善的文档资料以及一系列严格的复审和测试,使得一旦发现错误是比较容易诊断和纠正。因此,在软件周期的每个阶段都必须充分考虑可维护性问题,并且为软件维护作好准备。
文档是影响软件可维护性的决定因素,因此,文档甚至比可执行代码更为重要。文档可分为用户文档和系统文档两大类。不管是那一类文档都必须和源代码同时维护,只有与程序完全一致的文档才是真正有价值的文档。根据软件行业的有关标准,软件研制过程中形成的文档主要有:《软件开发计划》、《软件需求规格说明》、《接口需求规格说明》、《接口设计文档》。
可靠性(reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量称为可靠度。软件可靠性(software reliability)是软件系统的固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的正确程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。但是实际上任何软件都不可能达到百分之百的正确,而且也无法精确度量。一般情况下,只能通过对软件系统进行测试来度量其可靠性。
软件测试的根本目的是消除故障,提高软件的可靠性。软件可靠性涉及到两个概念,即软件的可靠性和软件的可用性。软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功运行的概率。软件可用性是程序在给定的时间点,按照规格说明书的规定成功运行的概率。
在一段时间内,软件系统故障停机时间分别为tdown1,tdown2,tdown3…,正常运行时间分别为tup1,tup2,tup3…,则系统的稳态可靠性为:
如果引入系统平均无故障时间MTBF和平均维修时间MTBR的概念,则As s可以变为:
平均维修时间MTBR是修复一个故障平均需要的时间,它取决于维护人员的技术水平和对系统的熟练程度,也和系统的可维护性有重要的关系。平均无故障时间MTBF是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统中潜伏的故障的数目。
软件的平均无故障时间MTBF是一个重要的质量指标,往往作为对软件的一项要求。MTBF可以用以下的公式进行估计:
其中:ET为测试之前程序中故障总数;IT为程序长度(机器指令总数);τ为测试(包括调式)时间;Ec(τ)为在0到 τ期间改正的错误数 。K 为常数,它的值应该根据经验选取,K的典型值是200。
在上述公式中的ET(故障总数)是一个十分重要的量,它既是直接标志软件的可靠性程度,又是计算软件平均无故障时间的重要参数。ET与程序规模、类型、开发环境、开发方法、开发人员的技术水平和管理水平等都有密切的关系。估计ET有两种方法,即置入故障法和分别测试法[6]。
实践证明,尽管人们在开发软件的过程中使用了许多保证软件质量的方法和技术,但开发出的软件中还会隐藏许多错误和缺陷。这对于规模大、复杂性高的软件更是如此。所以,严格的软件测试对于保证软件质量具有重要作用。软件测试与可靠性评估工程虽然得到了普遍的重视,但还处于不成熟阶段,特别是军方软件的测试与可靠性评估管理还没有建立较完善较权威的管理和规范。加上国内对于软件可靠性模型的研究多集中在软件的研制阶段,而很少有涉及测试与评估阶段,所以加大软件测试与可靠性评估研究具有重要意义。本文设计了基于VXI总线的测试软件的软件测试与可靠性评估方法,可用于当前基于VXI总线的测试软件的测试、可靠性、可用性做出初步的鉴定的参考。
[1]Dr.Linda Rosenberg,Ted Hammer,Jack Shaw.Software Metrics and Reliability Unisys/NASA GSFC,Bld 6 Code 300.1
[2]徐晓春.软件测试的方法和工具[J].计算机世界,1999(12)
[3]淡艳.如何设计黑盒测试的测试用例[J].成都教育学院学报,2005,19(11)
[4]李海鸥,张忠亭,姜守达.基于VXI总线的通用测试软件研究[J].高技术通讯,2000(12)
[5]陈光禹.VXI总线测试平台技术[M].北京:电子科技大学出版社,1996,10
[6]魏震生,张义忠,于振江.基于VXI总线的测试平台与故障诊断系统设计[J].计算机自动测量与控制,2001(10)