论文部分内容阅读
随着嵌入式软件测试的发展,在要求高可靠性的领域对“白盒”测试的要求也越来越高,对于实现嵌入式软件“白盒”测试的技术研究也成为IT领域的一大热点。利用插桩技术来实现“白盒”测试是一种行之有效的方法。国外很多机构和公司都对插桩技术进行了深入而细致的研究,但是国内对于插桩技术的掌握则稍显逊色,更多的是使用国外的产品进行“白盒”测试,这就增加了“白盒”测试的成本。利用插桩技术实现嵌入式软件“白盒”测试是行之有效的方法。本课题的主要任务是通过对嵌入式软件的特点以及现有插桩技术进行研究,提出了在嵌入式软件“白盒”测试中插桩技术面临的主要问题:代码膨胀率和程序执行效率,利用GCC作为开发平台,针对这两个问题进行研究,实现了插桩技术。论文针对嵌入式软件插桩技术中出现的两个问题,对插桩模型进行了改进,提出了策略性插桩模型。经过一系列的研究,提出利用替换宏定义、策略插桩来解决代码膨胀问题和提高插桩速度进而解决程序执行效率问题;然后专门针对嵌入式软件的不确定性,特别提出对优化后的代码进行抽象语法树冗余信息消除的算法,然后再进行插桩,以此来保证插桩位置的准确性;针对嵌入式软件一般都没有界面,专门提出针对模块进行插桩的策略,方便对嵌入式软件进行测试;针对嵌入式软件系统资源有限这一特点,特别设计探针函数只负责数据信息的收集和传递,数据信息的存储和分析在插桩库中进行,以此来减少探针函数所占的代码量等一系列的技术来减少插桩带来代码膨胀率,提高插桩的准确率。同时实现了覆盖率计算算法,并对MC/DC覆盖测试准则进行了研究,提出了实现MC/DC的测试流程。为了验证插桩模型的正确性,本课题采用GCC编译器为开发平台,在GCC中实现了对优化后的抽象语法树进行冗余信息消除的算法,为代码膨胀和程序执行效率问题提供了进一步的解决方案;同时在GCC中实现了策略插桩,更进一步解决了代码膨胀的问题。最后通过实验对比,证明了插桩模型的可行性和有效性。本课题首次将对优化后的抽象语法树进行冗余信息消除的算法应用于插桩技术中,使得更快速、准确的确定插桩点的位置,从一定程度上解决了插桩技术产生的代码膨胀和程序执行效率的问题。同时实现了策略插桩的方式,更进一步解决了插桩技术的所产生的问题,而且专门为嵌入式软件提出了模块探针插桩策略。采用GCC作为研究开发的平台,利用GCC的高度优化和高移植性,可以将插桩技术应用到更广泛的领域中。