学位论文 > 优秀研究生学位论文题录展示

嵌入式软件白盒测试中插桩技术的研究与应用

作 者: 路翠
导 师: 蔡建平
学 校: 北京工业大学
专 业: 计算机应用技术
关键词: 插桩 “白盒”测试 覆盖率 GCC 代码膨胀 抽象语法树
分类号: TP311.52
类 型: 硕士论文
年 份: 2010年
下 载: 157次
引 用: 2次
阅 读: 论文下载
 

内容摘要


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

全文目录


摘要  4-5
Abstract  5-9
第1章 绪论  9-15
  1.1 课题的背景和意义  9-11
  1.2 课题的研究现状  11-13
  1.3 主要研究内容  13
  1.4 论文组织结构  13-15
第2章 白盒测试和插桩技术分析  15-27
  2.1 白盒测试概念  15-16
  2.2 白盒测试技术分析  16-18
    2.2.1 逻辑覆盖  16-17
    2.2.2 基本路径覆盖  17-18
  2.3 白盒测试评测方法和准则  18-20
    2.3.1 覆盖率分析  18
    2.3.2 覆盖测试准则  18-20
  2.4 插桩技术概述  20
  2.5 插桩技术分析与比较  20-23
    2.5.1 目标代码插桩技术与源代码插桩技术  20-22
    2.5.2 手工插桩技术和自动插桩技术  22-23
    2.5.3 虚拟插桩技术分析  23
  2.6 嵌入式测试软件CodeTest 插桩技术分析  23-25
  2.7 本章小结  25-27
第3章 嵌入式软件测试中插桩技术的研究  27-43
  3.1 嵌入式软件测试插桩技术研究  27-28
    3.1.1 插桩技术研究目的  27
    3.1.2 插桩技术研究路线  27-28
  3.2 嵌入式软件测试插桩技术问题分析  28-31
    3.2.1 问题产生的原因  28
    3.2.2 代码膨胀问题  28-29
    3.2.3 程序执行效率问题  29
    3.2.4 产生Heisenbugs  29-31
  3.3 嵌入式软件测试插桩模型  31-33
    3.3.1 通用插桩模型  31-32
    3.3.2 嵌入式软件测试的源代码插桩模型  32-33
  3.4 探针的概念  33-34
  3.5 覆盖率算法  34-40
    3.5.1 语句覆盖算法  34
    3.5.2 分支覆盖率算法  34-36
    3.5.3 MC/DC 覆盖测试准则  36-40
  3.6 插桩技术问题解决方法  40-42
  3.7 本章小结  42-43
第4章 嵌入式软件测试插桩模型的设计  43-59
  4.1 平台的选择  43-44
  4.2 GCC 编译器剖析  44-47
    4.2.1 GCC 编译器的体系结构  44-45
    4.2.2 RTL  45-47
  4.3 插桩模型中预处理的实现  47-49
  4.4 嵌入式软件测试中优化AST 技术  49-52
    4.4.1 GCC 的词法分析和语法分析  49
    4.4.2 GCC 的抽象语法树  49-51
    4.4.3 消除GCC 的抽象语法树冗余信息算法  51-52
  4.5 嵌入式软件测试中探针函数的设计  52-53
    4.5.1 插桩点记录文件  52-53
    4.5.2 探针函数  53
  4.6 嵌入式软件测试中插桩程序的设计  53-57
    4.6.1 插桩位置的选择  54-55
    4.6.2 插桩策略  55-57
  4.7 本章小结  57-59
第5章 实验评估  59-65
  5.1 实验环境的建立  59-61
  5.2 实验结果  61-63
  5.3 研究评估  63
    5.3.1 优点  63
    5.3.2 不足  63
  5.4 本章小节  63-65
结论  65-67
参考文献  67-71
攻读硕士学位期间发表的学术论文  71-73
致谢  73

相似论文

  1. 多功能车辆总线控制器MVBC综合验证研究,TP273
  2. 基于遗传算法的模糊测试技术研究,TP311.53
  3. 基于多核的动态剖析加速方法研究,TP332
  4. 探索式测试方法在网络游戏软件测试中的应用,TP311.53
  5. 面向高性能DSP Matrix向量化编译器的设计与实现,TP314
  6. 基于内容的信息扩散机制在群机器人系统中的应用研究,TP242
  7. 功能点分析方法在外包项目管理中的应用研究,TP311.52
  8. 新疆和田地区居民碘盐食用情况调查研究,R599
  9. 基于GCC的缓冲区溢出检测研究,TP393.08
  10. 基于GCC的ARCA3的编译器移植,TP368.1
  11. 基于符号化执行的Fuzzing测试集动态生成技术研究,TP393.08
  12. 基于蜜罐技术的网络攻击预警系统的研究与应用,TP393.08
  13. 软件安全检查工具前端的设计与实现,TP311.53
  14. 行业软件中通用测试流程的设计与实现,TP311.52
  15. 基于GA的软件测试用例自动生成技术研究,TP311.53
  16. IMS系统中OSA-GW的研究与设计,TN919.8
  17. 成都市出租车浮动车数据可靠性分析,U491
  18. 基于字节码插装的白盒测试系统的设计与实现,TP311.53
  19. 源代码抄袭检测系统的研究和实现,TP311.52
  20. GCC抽象语法树的解析及控制依赖子图的建立方法研究,TP311.11
  21. 基于GCC抽象语法树文本的C源程序语义分析方法研究,TP311.11

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 软件工程 > 软件开发
© 2012 www.xueweilunwen.com