装备虚拟训练软件测试技术研究
2016-07-10钟尚斌
根据装备虚拟训练软件测试的特点和测试关键问题,在传统测试技术的基础上,提出了装备仿真训练软件测试方法,保证测试工作能有效地发现装备仿真训练软件开发各个阶段存在的缺陷和错误,有效保障软件的质量和可靠性。
【关键词】虚拟训练软件 软件测试 测试性
随着信息化军事技术的不断发展,装备仿真训练软件也获得了迅速的发展,其规模越来越庞大、实现的功能越来越多、结构越来越复杂,装备仿真训练软件的性能和可靠性也成为至关重要问题的。因此,软件测试成为装备仿真训练软件开发过程中一个必要的环节。依据一个科学的测试模型,使用先进的软件测试技术对装备仿真训练软件进行充分的测试,可以及时发现软件程序中的错误,有效降低软件错误出现的概率,验证软件功能的可行性,提高软件的可靠性和安全性。
1 软件测试模型
软件测试是装备仿真训练软件开发过程中一个不可缺少的重要步骤,而且随着装备仿真训练软件规模的增大、复杂度的增加,软件测试也变得越来越重要。装备仿真训练软件软件测试过程与开发过程一样,都能决定软件的质量,而且测试过程的质量将直接影响测试结果的准确性和有效性。
在软件开发几十年的实践过程中,人们总结了很多的开发模型,这些模型对于软件开发过程具有很好的指导作用,由于测试与开发是紧密结合在一起的,所以软件测试也需要有测试模型去指导实践。软件测试模型是将测试过程活动进行抽象的概念模型,用于定义测试活动的流程和方法,是确保软件工程质量的重要手段。测试专家通过实践总结出了很多很好的测试模型。这些模型将测试活动进行了抽象,明确了测试与开发之间的关系,更好的分析软件测试在整个软件研发中的参与度和工作过程,进而不断完善软件质量保证流程,提高软件产品的质量,并成为了测试管理的重要参考依据。目前,主要的测试模型主要有以下4种:
1.1 V模型
V模型是将传统测试模型瀑布模型改进后的一种测试模型,如图1所示,从左到右,分别描述了软件的基本开发过程和对应的测试行为,清楚地体现出每个测试阶段和开发过程各阶段的对应关系。但是在V模型当中,测试过程放在了编码的下一个阶段,这就容易使人误解为测试是软件开发的最后一个阶段,而需求分析的检验工作也是在验收测试才能进行。
1.2 W模型
W模型由两个V模型组成,分别代表测试与开发过程,非常明确的标注了生产周期中开发与测试之间的对应关系,如图2所示。但是在W模型中测试和开发也保持着一种线性的前后关系,上一阶段工作完全结束,才能正式开始下一阶段的工作,这样就无法支持迭代、自发性以及变更性调整等情况。
1.3 H模型
H模型形成了一个完整独立的测试过程,并且将测试准备活动和测试执行活动清晰的区别出来,如图3所示。图中仅仅演示了在整个生命周期中某个层次上的一次测试“微循环”,图中的“其他流程”可以是任意开发流程。H模型的特点是软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。当某个测试点就绪时,软件测试即从测试准备阶段进入测试执行阶段。
2 装备仿真软件测试的特点及关键问题
2.1 装备仿真软件测试的特点
装备仿真训练软件是一个由系统、分系统/子系统、模块组成的复杂系统,并随着系统和操作功能的增多,复杂程度也在增加,系统的好坏归根结底是由各个分系统和各个模块的好坏决定的,对各个分系统和各个模块的测试是一个非常重要的环节。装备仿真训练软件测试具有以下6个特点:
2.1.1 装备仿真训练软件测试主要分为三个阶段
从软件生命周期全过程来看,软件测试可分为单元测试、功能测试、集成测试、性能测试、系统测试、配置测试、回归测试等阶段。根据装备仿真训练软件的结构、规模、类型和安全性关键等级等方面的特点,确定装备仿真训练软件测试主要分为单元测试、集成测试和系统测试三个阶段。
2.1.2 单元测试是装备仿真训练软件的测试重点
装备仿真训练软件测试是一项针对性很强的工作,即使对同一类型的功能,可能由于不同型号任务的要求,功能实现也会有所差异,因此要求重点进行单元测试。单元测试是根据详细设计和源程序,了解每个最小模块的输入、输出条件和逻辑结构是否正确合理。单元测试通常应对模块内所有控制路径设计测试用例,以便发现错误。
2.1.3 装备仿真训练软件程序内部结构复杂,路径组合数目庞大
程序的三种基本结构分别是:顺序结构、分支结构和循环结构,装备仿真训练软件最小组成模块的内部程序都可看作是这三种结构按不同方式组合的产物,这其中包含大量多重选择和循环嵌套的程序,而且模块与模块之间存在着大量的交互,所以程序内部包含的不同路径数目可能是天文数字,尤其对大规模复杂的装备仿真训练软件,穷举所有的路径是不可能的,需要根据实际情况去选择适合的覆盖测试方法。
2.1.4 装备仿真训练软件黑盒测试用例数量庞大
装备仿真训练软件中包含了不同专业的多个分系统,每个分系统又由多个子系统和模块组成,其中包含的参数数量庞大,参数与参数之间的进行组合之后的数量将更加庞大,而软件运行出现的故障时,更多的情况是由于多个参数的相互作用的原因,所以,要想充分考虑到参数与参数之间的关系,需要的测试用例数量是无穷尽的。
2.1.5 装备仿真训练软件测试一般需要特定的测试环境支持
装备仿真训练软件测试可以采用静态测试方法和动态测试方法。其中,静态测试以人工检查为主,不需要特定的测试环境;而动态测试则需要建立驱动软件模块执行的测试环境,支持软件模块的参数输入和输出结果的可视化。
2.1.6 装备仿真训练软件测试一般采用白盒测试与黑盒测试相结合的方法
一般采用白盒测试方法来测试装备仿真训练软件程序内部的逻辑结构;装备仿真软件的功能测试部分则需要采用黑盒测试方法。
2.2 装备仿真软件测试的关键问题
软件测试的目标是发现软件中可能存在的设计缺陷和错误。测试时验证得越全面,软件中可能存在的缺陷就会越少,而每一个项目、每一个软件的测试都会有不同的特点和测试关键问题,测试工作要根据软件的特点和关键问题,设计适合该软件的测试。装备仿真训练软件测试的关键问题主要有以下4点:
2.2.1 测试工作必须由非开发人员来完成
由于许多开发单位对软件测试的认识水平不够,自己设计、自己编程、自己测试、自己维护的现象还比较普遍,这样的结果就是导致测试结果不理想,没有达到测试的要求。所以,为了保证测试质量,装备仿真训练软件的测试工作必须由非开发人员来进行,保证的效果。
2.2.2 在白盒测试中,采用基本路径测试方法解决路径覆盖率问题
在装备仿真训练软件结构中,路径组合是一个庞大的数字,所以要在测试中覆盖所有路径是不可能的,需要把覆盖的路径压缩到一定范围内。如:程序的循环部分可以只循环一次。因此,在路径覆盖测试上,我们选择基本路径测试法。
2.2.3 在黑盒测试中,采用组合覆盖测试方法解决测试用例无穷尽问题
由于装备仿真训练软件中参数与参数的组合数量庞大,无法设计无穷尽的测试用例满足覆盖率问题,为此,采用组合覆盖测试方法,不仅可以充分考虑到软件中参数与参数之间的相互作用,更重要的是能以最少的测试用例实现最大程度的覆盖,具有较好的测试效果。
2.2.4 要有必要的测试文档
没有文档的项目是一个不成功的项目,同样,没有文档的测试也不会是一个成功的测试。测试工作的计划、设计、实现和问题报告都要以文档的形式记录下来留存,方便同项目组人员进行阅读和修改,更重要的是对于后续同类项目是资源的积累过程和设计的改进依据。
3 装备仿真软件测试模型
测试过程模型定义了测试的流程和方法,为测试工作提供了指导。但是传统的测试模型各有长短,不可能适合所有的测试软件,软件测试模型因测试软件的不同而不同,所以,本文通过对传统的测试过程模型进行的分析和探讨,同时研究分析了装备仿真训练软件的实际情况,进而得到了适合装备仿真软件的测试模型,然后从该模型出发,完善软件测试工作流程。装备仿真训练软件测试模型是一个包含了软件文档审查、代码静态分析和审查、单元测试、子系统集成测试、系统测试和验收测试的综合测试模型,如图4所示。
3.1 测试准备
测试准备阶段是在测试实施之前,构造执行测试所需的要素,这些要素通常包括软件开发文档、软件开发程序、实际执行测试所需的软件、准备测试环境和测试工具;同时还要为测试过程准备适当的测试用例。
3.2 单元测试
装备仿真训练软件单元测试部分包含静态测试和动态测试两个部分。其中静态测试的对象是装备仿真训练软件单元模块的文档和程序代码,主要通过文档审查、代码审查、代码静态分析等方法来确保软件需求和设计文档的正确性、代码的规范性、设计或实现的正确性。而软件结构和功能方面的缺陷则需要采用动态测试的方法来完成。
装备仿真训练软件单元模块动态测试采用黑盒测试和白盒测试相结合的方法,从模块级检查软件的功能、性能、接口和其他约束条件是否满足需求。白盒测试技术主要测试每个单元内部逻辑结构的覆盖率,黑盒测试技术测试模块单元功能满足需求情况。
3.3 集成测试
集成测试主要检验装备仿真训练软件中经过单元测试的模块和子系统各部分工作是否实现了相应技术指标、达到了相应的要求。在装备仿真训练软件集成测试部分,既可以弥补单元测试中没有测试到的Bug,又可以测试单元测试中没有办法测试的功能,如装备仿真训练软件中前后台集成之后的关联功能。所以集成测试就是测试各个部件之间的配合情况,为系统测试提供基本保证。
装备仿真训练软件的集成测试必须在所有模块、子系统能够正常运转的情况下才能进行,一般采用的方法是数据驱动方法中的自底向上集成测试。具体的步骤是先测试组成子系统的模块群,由于最底层的单元模块都已经经过了单元测试,所以各个模块可以向上集成为各个子系统;然后在此基础上就可以测试各个子系统能否正常工作,以及进行各个子系统之间的测试工作。
3.4 系统测试
装备仿真训练软件的系统测试是在集成测试的基础上进行的,不仅是单纯的测试软件部分,而是将硬件、网络和外设等其他要素结合进来进行综合性测试。系统测试主要依据系统总体技术方案和需求说明书进行测试,目的是发现系统与用户需求不符或矛盾的地方。
系统测试的测试类型一般包括功能测试、性能测试、负载测试、强度测试、容量测试、安全性测试、用户界面测试、有效性测试、配置测试、故障恢复测试、安装测试和回归测试。而在装备仿真训练软件的系统测试中,功能测试、性能测试、负载测试、安全性测试、有效性测试、配置测试、故障恢复测试是必须进行的,其他项目可以依据具体项目情况选择性的进行。
3.5 验收测试
在完成装备仿真训练软件的系统测试之后,进行验收测试。只有通过了验收测试,才标志着项目的结束,软件产品的完成。一般来说,验收测试以用户为主,主要验证软件的功能、性能以及其他特性是否与用户要求相一致。
4 结束语
软件测试的目的是通过测试来发现缺陷,找出缺陷的分布特征和出现的规律,以便在新的开发项目中改进设计结构,避免缺陷的出现,同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。随着装备仿真训练软件质量要求的提高,软件测试在软件开发中的地位越来越重要。装备仿真训练软件测试模型是从传统的软件测试模型中提取出来的,适合装备仿真训练软件的测试模型,不仅可以提高测试在软件生命周期中的作用,还可以完善软件部分的工作流程。
参考文献
[1]李龙等.软件测试实用技术与常用模板[M].北京:机械工业出版社,2013.
[2]赵斌.软件测试技术经典教程(第二版)[M].北京:科学出版社,2013.
[3]唐见兵.仿真软件测试研究[J].计算机应用于软件,2008,25(1):105-107.
[4]赵一丁,李志民,苗风君.一种新的针对仿真系统的测试方法[J].计算机应用研究,2013,30(5):1435-1438.
[5]黎连业,王华,李淑春.软件测试与测试技术[M].北京:清华大学出版社,2010.
[6]王泉等.无人机飞控软件测试方法研究[J].航空计算机技术,2008,38(2):78-81.
作者简介
钟尚斌(1971-),男,四川省资中县人。大学本科学历。现为91550部队工程师。研究方向为装备训练管理。
作者单位
91550部队 辽宁省大连市 116000