模拟器软件的系统测试
2013-08-24商亚新
商亚新
防空兵学院,河南郑州 450052
随着信息技术与信息产业的发展,计算机软件广泛地渗入到了我们的工作和生活中,各种产品和设备与计算机软件的联系也越来越紧密。计算机软件的质量优劣也日益受到人们的重视。软件测试是保证软件质量的重要手段。在软件工程中,软件测试是软件生命周期中一项非常重要的工作,也是一项非常复杂的工作。
1 模拟器软件的开发与测试
软件是模拟器的重要组成部分,软件的质量直接影响着模拟器的质量。软件如果存在缺陷或故障,将会导致模拟器在使用过程中发生错误,对用户产生各种影响。模拟器软件的开发过程一般包括制定计划、需求分析、软件设计、软件编码、软件测试、运行维护等6 个阶段。软件测试是模拟器软件开发过程中的一个阶段,是保证模拟器软件质量的重要方法和手段。软件测试技术可分为静态测试与动态测试。静态测试是一种不通过执行程序而进行测试的技术,关键是检查软件的表示和描述是否一致,有无冲突或歧义。动态测试通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序运行的表象。动态测试一般分为白盒法测试和黑盒法测试。白盒法测试对象是源程序,依据程序内部的逻辑结构来发现编程错误、结构错误和数据错误。黑盒法是把测试对象看成一个黑盒子,依据软件的功能或软件行为描述,发现软件的接口、功能和结构错误。
模拟器的软件测试是软件开发过程中的一个阶段,但不是一个完全独立的阶段,而是贯穿于软件开发整个过程中的一个重要环节。模拟器软件测试过程由单元测试、集成测试、系统测试和验收测试等阶段组成,整个测试过程与如图1 所示。其中,系统测试是整个软件测试过程中非常重要的测试阶段,是软件的全部功能在实际运行环境中进行验证和确认的测试,也是用户进行验收前的测试。
图1 模拟器软件的测试过程
2 模拟器软件系统测试的目的和内容
模拟器软件测试是一项非常复杂的工作,首先要按照详细设计的要求对所有模块的功能、性能、接口等进行单元测试,发现每个程序模块内部可能存在的差错,确保每个模块单元工作正常。在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装成系统进行集成测试,发现与接口有关的各种错误,确保各单元模块集成系统后能够按设计要求协作运行,并确保增量行为的正确性。
模拟器软件的系统测试,就是将已经过集成测试的模拟器软件和其它支持软件安装在模拟器的专用计算机上,并与模拟器的硬件设备、人员等所有系统元素结合在一起,在实际的运行环境下,对模拟器软件进行全面测试。通过对模拟器软件的需求定义进行比较,找出软件与需求定义不相符之处,通过对模拟器进行一系列严格测试来发现软件中潜在的错误和缺陷,以确保模拟器交付给用户后能够正常使用。
模拟器软件系统测试包含功能性测试和非功能性测试两类测试内容。功能性测试的目的是测试软件的主要功能与用户的需求是否一致,主要进行训练环境设置功能测试、训练功能测试、训练评估功能测试。非功能性测试主要测试软件的性能、可靠性、健壮性是否满足设计要求,主要进行性能测试、可靠性测试、易用性测试。模拟器软件的系统测试主要采用黑盒测试技术中的因果图、决策表、错误推测等测试方法。
3 模拟器软件的功能性测试
功能测试不考虑模拟器软件的内部结构和处理过程,通常在程序的界面处进行测试,测试软件是否能够按照需求的规定正常运行,是否能够实现与需求一致的所有功能,发现软件与需求定义不相符之处和潜在的错误与缺陷。模拟器软件的功能性测试主要进行训练环境设置功能测试、训练功能测试和训练评估程序功能测试。
3.1 训练环境设置功能测试
在训练开始前模拟器要进行训练环境设置,训练环境包括地理地形、气象条件、各种设置、各类模型数据等。训练环境设置的功能测试用例应当按照软件需求进行设计,要考虑到不同训练环境的各种组合情况,测试目的就是核实在不同的环境设置时数据载入是否正确、是否完整,是否完全符合设计要求。
3.2 训练功能测试
模拟器的训练功能就是在各种操作方式(正确或错误)条件下仿真装备的真实反应(状态和过程)。不同的操作方式就是按照不同的操作顺序将模拟器不同设备面板的各种操作器件置于不同的位置状态,所有操作器件不同顺序的不同位置状态可以产生数量很大的各种条件的输入组合。仿真装备的真实反应就是模拟器软件的输出,就是启动不同的仿真过程、或改变仿真进程、或使模拟器显示器件显示不同内容与状态、或导致三维场景的不同改变。对于模拟器软件这种多条件组合输入、产生多动作输出的复杂功能测试使用因果图(逻辑模型)方法设计测试用例比较合适。
采用因果图方法设计模拟器软件功能测试用例的步骤:首先确定模拟器软件功能中的原因和结果,确定原因和结果之间的逻辑关系,根据这些关系画出因果图。确定因果图中的各个约束。然后把因果图转换为决策表。根据决策表设计测试用例。
由于模拟器软件的功能测试比较复杂,应当采用错误推测法作为辅助测试方法,依靠测试人员的经验和直觉推测软件功能可能存在的各种错误从而有针对性地设计测试用例。
根据测试用例进行训练功能测试,检查在各种操作方式条件下软件的训练仿真过程以及模拟器表象及状态是否与设计要求完全一致、是否存在错误和潜在的缺陷。
3.3 训练评估程序的功能测试
对训练过程进行评估是模拟器的一个重要功能。训练环境的设置数据和训练过程中对模拟器的所有操作过程都按照时间先后以规定的数据格式完整地记录在操作过程的文件中。训练评估程序的功能就是将记录的操作过程文件作为输入数据,经过逻辑分析和数据计算,输出此次训练的成绩和训练过程的评语。由于训练评估程序的输入是整个训练过程的全部操作,所有操作器件产生的操作顺序组合将达到非常大的数目,实际中可能无法完成,在设计测试用例时采用等价类技术对操作过程的各种顺序组合进行划分,从划分的每个区域内选取有代表性的操作过程作为测试用例。测试的目的就是检查对不同的操作过程输出的成绩和评语是否正确,是否与专家评定结果一致。
4 模拟器软件的非功能性测试
模拟器软件的非功能性测试主要内容包括性能测试、可靠性测试、易用性测试。
4.1 性能测试
性能测试主要检验模拟器软件是否达到需求规定的各类性能指标,并满足一些性能相关的约束和限制条件。软件运行的实时性是非常重要的性能指标。模拟器软件的实时性测试主要包括操作响应时间的测试以及三维场景显示的流畅与连续性测试。操作的响应时间应当与装备的响应时间一致。场景的流畅要符合人们的视觉感受,如果三维场景绘制复杂、数据量大时会导致显示帧频下降,人眼就会感到画面间断、停顿,显示帧频是衡量流畅性的指标。三维场景的流畅性与场景中三维实体的数量、复杂程度、分辨率,以及三维场景特效(如烟雾)等有直接关系,应当以场景实体和特效达到或接近最苛刻的过程进行场景显示的实时性测试。
4.2 可靠性测试
软件的可靠性也叫做稳定性,是指在负载多变的情况下或长时间运行的情况下模拟器软件运行的稳定程度。模拟器软件的可靠性测试可以使用重复测试、并发测试、随机变化以及长时间不间断运行等方法。重复测试就是对某一器件进行重复操作,测试模拟器能否持续不断地仿真设备的真实运行效果;并发测试就是同时对多个器件进行操作,测试模拟器能否产生与设备同样的状态;随机变化就是不按照正常的操作顺序,而是设计非常规的随机操作顺序或对重复和并发测试手段进行随机组合,以获得最佳的测试效果。按照设计要求让模拟器软件长时间不间断地运行,测试软件是否运行正常、功能是否出错。
4.3 易用性测试
模拟器软件的易用性主要是指训练环境设置、成绩评估等环节的界面易懂、选择准确、操作方便。界面的设计要尽量符合人们的习惯和思维方式,按钮名称用词准确、没有歧义,同一界面的按钮要易于区分,用户能够进行正确理解界面的功能并能够进行正确操作。用户能够终止进程,重新返回、重新选择。通过对界面的操作来测试模拟器软件的易用性。
5 结论
系统测试是软件交给用户进行验收测试的最后一道关口,对保证软件的质量起着非常重要的作用。系统测试也是测试人员需要花大量的时间和精力才能完成的工作,虽然有些测试工作可以使用软件测试工具来完成,但由于每一种测试工具都有其特定领域的应用,都有其自身的很多局限性,软件测试工具本身不具备创造力,不能设计测试用例,不能处理意外事件,使用测试工具发现的缺陷也没有手工测试发现的多。系统测试中的很多工作主要还是靠人完成的,测试人员的能力和素质最终决定了测试结果的好坏。根据系统测试结果和系统测试分析报告,在验收测试前完善软件功能、纠正软件错误、消除软件潜在的缺陷,提高软件质量。
[1]赵斌.软件测试技术经典教程 [M].2版.北京:科学出版社,2011.
[2]李海生,郭锐.软件测试技术案例教程[M].北京:清华大学出版社,2012.
[3]Shari Lawrence Pfleeger,Joanne M.Atlee 软件工程[M].杨卫东,译.北京:人民邮电出版社, 2007.
[4]霄汉.软件工程理论与实践[M].北京:科学出版社,2006.