当前位置:问答库>论文摘要

题目:分布嵌入式软件仿真测试关键技术研究

关键词:分布嵌入式;全数字仿真;动态桩;实时网络

  摘要

自软件工程学科诞生以来,人们对软件测试的各种理论研究和各种具体方式、方法的探寻投入了越来越多的关注。1996 年,由于惯性导航系统的软件设计缺陷所导致的价值6 亿美元的阿丽亚娜五号火箭(501 航班)解体爆炸事故,使人们对安全关键领域中嵌入式软件质量问题的关注提到了前所未有的高度。虽然人们已经在安全关键领域嵌入式软件质量保证方面投入了大量的人力物力财力。但由于嵌入式软件和嵌入式硬件环境结合十分紧密,作为软件质量保证关键一环的软件测试仍存在软件测试用例执行困难的问题,最终造成软件测试的充分性受到影响。分布嵌入式软件测试用例的执行面临着三个比较普遍的问题:单元和覆盖测试困难;软件测试对稀缺硬件资源依赖性太强;时钟不准确、网络异常等特殊场景构造困难。嵌入式系统的单元测试较通用软件更困难。在嵌入式系统中,C语言和汇编语言仍被广泛采用,而这些语言的单元测试技术远没有Java、.Net等语言的技术成熟;在嵌入式系统中,中断处理子程序、系统初始化子程序等几乎是大部分软件单元所公共依赖的部分,且这种依赖关系很难从源代码中分析出来。使用人工辅助的方式补全所有依赖函数和变量来驱动被测单元是十分低效且易错的方式。针对此问题,本文提出了“动态桩”方法,实现不完整软件单元独立运行和隔离被测函数,解决了嵌入式C和汇编语言软件单元测试所面临的桩函数构造困难的问题。覆盖率是检验软件测试充分性的重要手段之一。但目前大部分覆盖率信息收集方式都会干扰嵌入式系统中的实时信号处理。为此,本文提出了一种以全数字仿真为基础的覆盖率分析技术,采用以仿真时间代替实际时间,解决了高性能实时嵌入式系统中获取覆盖率信息会干扰实时信号处理的问题。由于嵌入式软件和硬件结合十分紧密,嵌入式软件很难脱离实际硬件环境运行,这造成软件测试对硬件依赖程度很高。但在软件测试前期,部分硬件设备可能还没有生产出来,有些仪器设备需要多个单位共享。如果软件测试不能减少对硬件设备的依赖程度,软件测试的进度将受到严重影响。有些软件测试人员在反复尝试各种常见仿真器之后甚至认为软件仿真器在准确性和性能等方面根本不可能满足嵌入式软件测试的需要。但本文研究发现,造成这一错误认识的原因是大部分软件仿真器的设计使用目的并不是软件测试,因此在软件测试中使用这种仿真器会对软件测试造成严重不适的影响。例如在准确性方面,大部分软件仿真器没有提供较准确的时间和浮点数仿真的原因是普通软件的运行根本不需要这些功能。但软件测试和普通软件运行不同,前者往往十分关注边界问题,例如浮点数异常边界,而后者往往不需要考虑。提高准确性就会导致仿真器自身的复杂度急速增加或者自身性能显著下降。为此,本文提出了以时钟为单位仿真替换以指令为单位的仿真以提高时钟仿真的准确程度,使用x87汇编语言精确控制浮点数舍入过程代替高级语言舍入过程来提高浮点数仿真的精度,最终使得仿真的精度达到了安全关键领域嵌入式软件测试的要求。软件仿真器应用受限的重要原因之一是准确性和性能的矛盾突出。例如,RTL 级别的软件仿真器性能太差以至于无法达到软件测试的要求,而普通指令集仿真的准确性会对软件测试中的边界问题造成不利影响。不仅如此,软件测试需要的调试功能、单元测试功能和覆盖率分析功能都会进一步降低仿真器性能,使准确性和性能的矛盾更加突出。为此,本文提出了针对性的“一体化优化技术”,即通盘考虑仿真器自身的优化和软件测试功能的优化。“一体化优化技术”不仅使用了大量现有优化技术,还提出了一种以无损压缩为基础的综合条件判断优化技术。综合条件判断优化技术在不降低准确性的前提下,显著提高了仿真器在软件测试中的综合性能。在分布嵌入式系统测试过程中,时钟不准确、网络异常等特殊场景难于构造。实际硬件中,由于工作温度、湿度、电磁干扰等不可预期的外部干扰可能产生时钟不准确、网络异常等情况,且这些情况往往是不稳定的,即相关的软件问题表现为“间或重现”。“间或重现”的软件问题往往难于达到安全关键领域“归零”的要求。而“归零”的前提就是要将“间或重现”的场景构造出来,并使相关的软件问题变为“总是重现”。为此,本文提出使用虚拟时钟体系来构造时钟不准确的场景,并在虚拟时钟体系的基础上通过分层仿真的实时网络来方便地构造出各种网络异常的场景,以适应嵌入式软件测试的需要。本文在突破上述关键技术问题的基础上,自主研制出完整的分布嵌入式系统仿真测试平台全数字仿真测试平台SimSHARC,并应用到实际飞控软件的测试中,取得了良好的效果。合作单位通过一段时间的试用之后,已将大量的测试任务转移到此平台上。