关键词:
铁路信号系统
安全关键软件
软件测试
组合测试
测试用例生成与优化
摘要:
软件测试是保障软件质量、提高软件安全性的重要手段。组合测试围绕软件输入域的交互组合,能够在保证组合覆盖的前提下,对软件实施高效、系统、科学的测试,是一种重要的软件测试方法。该方法重点检测各种交互组合造成的软件故障,近年来得到了深入研究与广泛应用。铁路信号是保障铁路运输安全、提高铁路运输能力的自动化与智能化技术集合,在保证列车行车安全等方面发挥着重要作用。近年来,软件广泛应用到铁路信号系统中,使得铁路信号系统逐步成为软件密集型安全苛求系统。其软件安全性要求极高,一旦发生失效,轻则影响行车效率,重则导致严重的行车事故,因而,需要通过严格的测试来保障软件的安全性。EN 50128标准作为行业采纳的铁路信号软件安全标准,也明确指出了需要通过软件测试来提高系统软件的安全性。但是,由于铁路信号软件的交互对象众多、信息类型丰富、接口多样、工程数据/硬件配置复杂,其中蕴含了大量的交互组合,为有效开展铁路信号软件的测试工作带来了很多难题,而这些交互组合往往是诱发软件失效的重要因素之一。将组合测试方法应用于铁路信号软件的测试中,对铁路信号软件开展有针对性、系统性的组合测试,有助于提高测试效率,进一步提升软件的安全性。然而,目前围绕组合测试用例生成与优化方面的研究还存在若干问题,一方面,对于约束组合测试用例集的精简生成仍然有巨大的提升空间,另一方面,目前还欠缺专门面向多测试用例集生成与优化方面的研究。这造成了组合测试方法出现测试效率低、成本爆炸等情况,限制了组合测试方法在铁路信号软件测试中的广泛应用。本文针对组合测试存在的问题,结合铁路信号软件的测试特点,开展了组合测试用例生成与优化方法研究,并将上述方法与铁路信号软件的测试工作进行有机结合,提高了测试质量与测试效率,取得了预期成果。论文的主要工作与研究成果包括:(1)为了解决约束组合测试方面存在的测试效率低的问题,提出了一种基于参数映射的覆盖数组重构方法。该方法以最优覆盖数组作为种子测试用例,采用参数映射方式对最优覆盖数组进行重构,扩展得到精简的约束测试用例集。定义了输入参数的重要性度量指标,并设计了参数的启发式映射策略。实验结果表明,采用本文的方法,可比现有主流方法生成更为精简的约束测试用例集,从而提高了测试效率。(2)为了解决组合测试和基于模型的测试相结合造成的测试成本爆炸问题,提出了一种面向多测试用例集的组合测试约简方法。以测试执行成本最低为约简目标,构建了针对多测试用例集约简的优化模型,并以贪婪-粒子群混合优化算法为核心,在保证测试用例集逻辑覆盖特性的基础上,采用混合优化算法约简多测试用例集。对铁路信号软件的多测试用例集进行约简验证,结果表明,本方法在保证组合覆盖和逻辑覆盖的前提下,能够有效移除冗余测试用例、降低测试成本。(3)为了解决面向多输入模型的组合测试方法存在的测试效率低、测试成本高的问题,提出了一种专门面向多输入模型共享参数的组合测试用例集生成方法。设计了方法针对多测试用例集异步扩展与同步扩展的两阶段启发式生成架构。实验结果表明,采用本文提出的方法能够面向多输入模型,有效构造精简的组合测试用例集,提高了面向多输入模型的组合测试效率、降低了测试成本,完善了组合测试方法的研究。(4)针对铁路信号软件的组合测试实际应用问题,本文以ZPW-2000轨道电路接收器软件、CTCS-2级列控车载设备软件等具有代表性的铁路信号软件作为研究对象,构建了软件的输入模型。然后,采用本文提出的上述组合测试用例生成与约简方法,构造了软件的组合测试用例集。并对测试用例集进行了实例化,经过组合测试应用,取得了预期的效果,为实施铁路信号软件的组合测试做出了有益的理论方法探索。