论文部分内容阅读
航天领域软件,对质量要求高,软件失效可能带来灾难性后果或重大经济损失,甚至对国家安全构成严重威胁。而该领域大多数是实时嵌入式软件,测试难度大。在有限的测试时间和可用资源范围内,自动化测试是一种可以达到最大测试覆盖率而满足测试充分性要求的可行方法。因此,研究一套适应航天领域实时嵌入式软件特点的自动化测试方法,对于提高航天高可靠软件的测试效率和质量具有重要意义。
实时嵌入式软件具有实时性、嵌入性、反应性、专用性等特点,这些特点对测试提出了特殊要求。虽然软件的自动化测试技术研究很广泛,但适合于实时嵌入式软件的自动化测试仍然没有很好的方法;通过大量调研,我们发现很难找到一种通用的自动化测试生成方法适用于所有的实时嵌入式软件,因此我们从研究航天领域的大多数实时嵌入式软件的基本特性入手,研究了适用于具有状态变迁行为特点的一类需求的自动化测试技术。
为了自动生成测试用例和数据,需要根据需求规约(Specification)为软件建立状态模型。状态模型包括有限状态机、扩展有限状态机、状态图等。状态图由于自身的嵌套、并发和通信机制,适合于复杂的实时嵌入式软件建模。本文以Statemate MAGNUM的状态图为例,介绍了状态图的语法和语义,并研究了如何为实时嵌入式软件建立状态模型。构建好状态模型后,本文介绍了有限状态机、扩展有限状态机和状态图测试的基本理论,总结了状态图测试的充分性准则,从状态迁移的视角分析了软件的各种故障模式,以及各种测试覆盖准则的故障检错能力,并比较了这些测试覆盖准则的强度。着重提出了七个覆盖多种测试准则的测试用例生成算法:用于状态覆盖和迁移覆盖的测试树生成算法、潜通路测试生成算法、n-switch覆盖生成算法,改进的全判定谓词覆盖测试用例生成算法、嵌套状态图的状态覆盖集测试生成算法、迁移覆盖集测试生成算法,正交状态图的并发状态覆盖测试生成算法。概要介绍了动作的可观测性和时间性能的测试。然后,根据提出的测试用例生成算法,实现了基于状态图的测试用例生成系统原型。
在测试用例生成后,为应用到实际的测试工作中,需要验证测试的期望结果,以及为测试用例确定输入数据,以驱动测试的执行。本文讨论了实时嵌入式软件的状态验证问题,最后论述了如何将现有的白盒测试数据生成方法,综合应用到为状态图的测试序列自动选择测试数据,并讨论了测试用例的可执行性问题。本课题的研究成果,可在一定程度上为航天实时嵌入式软件基于状态的行为级需求自动化测试提供一种方法,并为后续研究提供了可扩充的研究思路。