随着现代系统日益复杂,传统的测试方法已显不足。用于验证这类大型复杂系统软件的测试文档套件可能变得臃肿而不清晰,导致执行时间极长,测试程序混乱而难以管理。此外,这些系统的复杂性也会阻碍对复杂系统概念和行为的快速理解,而这正是跟上现代测试工作要求的必要组成部分。
测试与评估(T&E)领域存在优化和创新的机会,自动测试框架和迭代测试方法的出现就是证明。基于模型的系统工程(MBSE)等相关概念的定向扩展和应用将带来更多机遇。本论文记录了在应用于实际项目时加强测试与评估领域的三种方法的开发和实施情况。首先,系统的开发方法从瀑布式(Waterfall)过渡到了敏捷式(Agile),从而在创建新功能时提供了一种反应更快的方法。其次,开发了测试自动化框架(TAF),实现了测试程序的自动执行。第三,使用系统建模语言(SysML)创建了一种测试文档方法,采用了 MBSE 的概念,使测试程序的规划和分析标准化。
本论文提供了将这三个概念应用于机载电子战管理系统(EWMS)开发过程的结果,该系统与机载和机外系统连接,接收和处理威胁环境,为飞行员或机组人员提供保护飞机的响应解决方案。该系统是一个传统的长期航空航天项目的代表,在其生命周期内不断升级。在为期两年的时间里,这一新流程产生了一系列定性和定量结果,包括提高了测试文档套件的质量和组织性,缩短了执行测试程序的最短时间,能够更早地识别缺陷,并提高了被测系统的整体质量。在应用这些概念的过程中,我们还汲取了许多经验教训。项目开发方法的转型、测试方法的现代化以及新测试文档系统的引入可能会为系统开发带来显著的效益,但这些类型的流程变革必须与项目需求进行权衡。本论文详细介绍了在一个示例项目中为提高测试与评估流程的有效性所做的努力,并以此作为在类似系统中实施的框架。
测试是系统或产品开发生命周期的重要组成部分。适当的验证和确认工作有助于确保产品按预期开发并满足客户需求。美国国家航空航天局(NASA)估计,测试工作占大型航空航天项目软件开发总成本的 75% 至 88%。如下图 1 所示,高度复杂的系统需要极其庞大的源代码基线(例如,截至 2012 年,F-35 战斗机和支持软件的源代码行数(SLOC)总计超过 2400 万行),这就需要大量的测试工作来进行适当的验证。
此外,现代软件工程实践通常不支持确保软件质量所需的回归测试管理。随着现代系统的复杂性不断增加,以及对网络安全等系统开发相对较新方面的关注,传统的测试方法需要优化和创新。
截至 2007 年,"来自行业的数据显示,在过去 40 年中,各种系统和应用软件的规模呈指数增长"。这种指数式增长直接影响到用于测试这些系统的程序的规模和复杂性。此外,随着产品的成熟和长期使用,为产品开发的测试套件的规模也会大幅增加。通常情况下,这种增长会产生大量的测试程序,随着时间的推移,这些测试程序会不断演变,从而形成一个测试套件,在某些方面,它本身就可以被视为一个产品。这种测试套件的演变可能是由多个测试工程师共同完成的,这可能会造成风格不一致,并增加一层复杂性。这种高度的复杂性可能会产生各种与测试相关的问题:
如果不加以纠正,这些问题可能会在以下方面影响整个开发流程:
在过去几年中,测试工程工作量大幅增加。这与提高生产力和效率的目标一起,制定了以下目标:
提高测试程序套件的可维护性
小型系统的测试程序可能不足 100 页,而大型系统的测试程序可能长达数百至数千页。
一些测试程序变得臃肿和混乱,导致出错时需要花费更多的调查时间。
提高需求与测试程序之间的可追溯性
不同系统的需求映射并不总是一致的。
根据程序的历史和客户需求,有些系统没有需求跟踪,而有些系统则有测试步骤的需求跟踪。
减少小版本和大版本的测试执行时间
对于较简单或较非正式的系统(即次要系统),正式测试执行时间平均为几天到几周。
对于最复杂的系统(即主要系统),正式测试执行时间(模拟运行和正式验收)可长达 18 周或更长。
引入测试自动化
历史上,所有测试都是手动执行的。
在过去几年中,研究人员一直在带头努力实现测试自动化。
缩短测试工程师培训时间
因此,研究人员一直在研究将敏捷开发流程、自动测试和系统工程方法结合应用到测试与评估(T&E)领域,作为解决上述某些因素的潜在方案。
本文所述的研究试图解决前面讨论的问题。解决方案通过三项措施来实现:
1.向敏捷开发流程转变
2.实施测试自动化
3.融入基于模型的系统工程(MBSE)概念
过渡到敏捷流程会改变产品开发的方式,但也会带来一些好处,如提高整体产品质量、增加项目可见性和降低风险。此外,加入持续集成(CI)等 DevOps 概念还能通过简化流程提高部署速度。具体到本论文,敏捷过渡的重点是对测试工程师的系统访问、团队生产力、工程师培训时间以及需求重要性的影响。
测试自动化通常是指将测试程序从手动流程(即测试工程师实际完成程序中的步骤并记录结果)过渡到自动化流程(即测试工程师开发脚本,执行测试程序中的操作并自动记录结果),但测试自动化的好处远不止机器以最快速度执行测试程序所带来的好处。这些益处将在后面的章节中进一步讨论,其中包括增强测试工件的组织性、提高产品测试和产品本身的质量、缩短测试执行时间,以及为优化整个产品开发流程创造更多机会。
将 MBSE 概念和技术融入测试与评估领域,可以加深对系统的理解,提供系统功能和组件的映射方法,以及提高回归测试效率的目标策略。为测试目的创建的系统模型有可能在以下方面得到有效利用: