嵌入式软件测试工具静态分析的研究与实现

VIP免费
3.0 赵德峰 2024-11-19 4 4 3.44MB 84 页 15积分
侵权投诉
摘要
当前在各种高技术武器装备中,嵌入式计算机及其实时软件承担着系统指挥、
过程控制、数据采集和处理、数据通信以及系统安全保障等任务,软件已经成为
整个系统的神经中枢,通过近年来从事军用软件的测试实践工作以及对军方用户、
软件承制单位软件测试情况的调查研究,目前我国对军用武器装备软件的测试工
作,往往采用人工判读或从系统外部进行功能测试的方法与其所承担的重要使命
是不相称的。静态分析的研究是软件工程的一个热点,市场上已经有一些自动化
测试工具支持静态分析。但这些测试工具主流还是欧美厂商的产品,并且价格不
菲。国内缺乏这类成熟的产品,因此开发此类软件具有一定的现实意义和广阔的
市场前景。
本文根据软件测试工具的概念、定位、系统框架、具体构成,彻底分析和研
究了软件测试工具中核心部分——静态分析的关键技术与实现方案。利
Programmar 工具构造静态分析器的编译系统获得更好的扩展性和数据完整性,
服了编译环节的技术壁垒。同时引入 XML 技术实现系统中数据的存储与转换,实
现了中间结构到静态质量分析和动态覆盖插桩过程的接口,为今后实现对多种语
言的支持奠定了基础。本文提出的静态分析器的架构和中间结构的存储转换是一
种新的尝试,可以为软件测试工具的开发提供一定的借鉴意义。
论文首先介绍了嵌入式软件测试工具的应用背景和应用现状,并对技术现状进
行分析比较。基于上述分析结果,明确了系统开发目标:构建一个嵌入式软件测
试工具的系统结构,并开展了系统设计。接着结合嵌入式软件测试工具的应用,
对预处理﹑词法语法﹑中间结构﹑转换器和静态分析进行详细分析和研究;在此
基础上,根据系统设计目标,结合嵌入式软件测试工具实现静态分析功能。然后
通过基于嵌入式软件测试工具进行了详细的比较分析,包括实践项目中遇到的问
题和解决方案,对系统应用进行了总结。最后进一步结合应用发展趋势,对嵌入
式软件测试工具的未来发展方向进行了较为深入地探讨。
关键字:词法语法分析 中间结构 解析器 可扩展标记语言 标记语言
样式转换
ABSTRACT
Nowadays in all kinds of devices of high level technology software plays an
important role .It resides in commanding system, process control, collecting data,
communication and system safety. At the present time software testing in army is
executed mainly by man. Research on static analysis is focused on by IT people in
software engineering. On the market most of all testing tool are developed in overseas
and their price is high. In China this kind of testing tool is absent and it will mostly be
imported from Europe and America. So it is significant to develop this testing tool and it
will be sold booming in market.
In the paper software testing tool’s concept and framework will be expatiated
firstly. Furthermore hard core of software testing tool (static analysis) will be described
in detail.We are sure the development objective after analyzing the results. Moreover
the tool of Programmar will be used to overcome bulwark in technique. And the
technique of XML will be used to realize data storage, transition and interface between
middle structure and static analysis and dynamic inserting stake in order to support
several languages. The framework of static analysis and middle structure’s storage and
transition proposed is a new try. And it can be used for reference in development of
software testing tool. The news is excited in IT fields because it will make up some
vacuity in China.
Built-in software testing tool’s application background will be described in paper
in first place. After we are comparing technology nowadays we define developing
objective: making a framework of built-in software testing tool and developing system
design step by step. Moreover according its application preprocessing, lexical and
syntax, middle structure, transition and static analysis will be analyzed in order to gain
necessary information which is important for us to achieve the tool. Furthermore a lot of
problems and solving scheme which were fallen across in practice will be summarized
in order to improve it in future. Finally its developing direction in future will be
discussed at length in paper.
Key Wordlexical and syntax analysis,middle structure,parser,XML,
XSLT
目录
摘要
ABSTRACT
第一章 绪论.....................................................................................................................1
§1.1 嵌入式软件测试概述 ............................................1
§1.2 课题的背景及意义 ..............................................2
§1.3 研究内容 ..................................................... 3
§1.4 本文的组织结构 ................................................4
第二章 嵌入式软件测试工具的系统组成.....................................................................5
§2.1 嵌入式软件测试的特点 ..........................................5
§2.1.1 软硬件互相协调、互相反馈和互相测试 ....................... 5
§2.1.2 嵌入式软件的专用性 ....................................... 5
§2.1.3 嵌入式软件的实时性 ....................................... 6
§2.2 嵌入式软件测试自动化过程模型 ..................................6
§2.3 嵌入式软件测试方法分类 ....................................... 7
§2.3.1 软件测试方法 ............................................. 7
§2.3.2 硬件测试方法 ............................................. 7
§2.3.3 软硬件结合的测试方法 ..................................... 8
§2.3.4 基于宿主机的测试 ......................................... 9
§2.3.5 基于目标机的测试 ......................................... 9
§2.4 嵌入式软件测试工具的系统结构 ................................. 9
§2.4.1 静态分析器 .............................................. 10
§2.4.2 动态测试分析器 .......................................... 11
§2.4.3 结果浏览器 .............................................. 11
§2.4.4 文档生成器 .............................................. 12
§2.4.5 质量模型定义器 .......................................... 12
§2.4.6 规则检查器 .............................................. 13
§2.4.7 代码浏览器 .............................................. 13
第三章 预处理和词法语法分析与研究.......................................................................14
§3.1 语言的描述 ...................................................14
§3.1.1 正则表达式 .............................................. 14
§3.1.2 语法和语义 .............................................. 15
§3.1.3 上下文无关文法描述 ...................................... 16
§3.2 预处理器 .................................................... 16
§3.2.1 预处理概念 .............................................. 16
§3.2.2 宏的替换 ................................................ 19
§3.3 词法分析器 .................................................. 23
§3.3.1 手工词法分析器 .......................................... 23
§3.3.2 自动词法分析器 .......................................... 24
§3.4 语法分析及工具 .............................................. 25
§3.4.1 LL(1)分析法 ............................................. 25
§3.4.2 递归下降分析 ............................................ 26
§3.4.3 构造分析树 .............................................. 28
§3.4.4 解析工具 Programmar ...................................... 31
第四章 中间结构和转换器的分析与研究...................................................................35
§4.1 中间结构 .....................................................35
§4.2 中间结构的元数据表示 .........................................37
§4.2.1 中间结构的存储 .......................................... 37
§4.2.2 元数据的表达 ............................................ 38
§4.2.3 元数据在工具中的实现 .................................... 39
§4.3 中间结构的接口 .............................................. 40
§4.3.1 从解析到转换 ............................................. 40
§4.3.2 解决方案雏形 ............................................ 42
§4.3.3 优化的解决方案 .......................................... 45
第五章 静态分析的研究...............................................................................................46
§5.1 代码分析 .................................................... 46
§5.1.1 常规信息 ................................................ 46
§5.1.2 CFG 图 ................................................... 46
§5.2 代码审查 .................................................... 48
§5.2.1 内存泄漏 ................................................ 48
§5.2.2 空指针引用 .............................................. 50
§5.3 软件度量 .................................................... 53
§5.3.1 质量模型 ................................................ 53
§5.3.2 度量元 .................................................. 54
第六章 静态分析的实现...............................................................................................56
§6.1 系统设计框架 ................................................ 56
§6.2 框架详细设计 ................................................ 57
§6.2.1 预处理器 ................................................ 57
§6.2.2 词法语法分析器 .......................................... 62
§6.2.3 中间元结构 .............................................. 64
§6.2.4 信息的提取 ............................................... 67
§6.2.5 分析层 .................................................. 71
第七章 结论与展望.......................................................................................................78
§7.1 结论 ........................................................ 78
§7.2 展望 ........................................................ 78
参考文献.........................................................................................................................79
在读期间公开发表的论文和承担科研项目及取得成果.............................................81
第一章 绪论
1
第一章 绪论
§1.1 嵌入式软件测试概述
随着软、硬件技术的发展,计算机的应用领域越来越广,而其中软件的功能
也越来越强大,同时也越来越复杂。这就使保证软件的质量,保证软件的高度可
靠性,面临着大的挑战。特别是诸如军事、航空航天、通讯、交通医疗等行业,
软件的微小瑕疵就可能造成对生命安全、天文数字的巨额财产、甚至对国家安全
严重威胁。为了确保软件的质量,达到软件工程的度量标准,就必需进行严格的
软件测试。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编
码的最终复审,是软件质量保证的关键步骤。
软件测试就是为了发现错误而执行程序的过程。软件测试的目的:测试是程
序的执行过程,目的在于发现错误;一个好的测试用例在于发现至今未发现的错
误;一个成功的测试是发现了至尽未发现的错误的测试。
软件测试的原则:应当把“尽早地和不断地进行软件测试”作为软件开发者
的座右铭;测试用例应由测试输入数据和与之对应的预期输出结果两部分组成;
程序员应避免检查自己的程序(注意不是指对程序的调试);在设计测试用例时,
应当包括合理的输入条件和不合理的输入条件;不合理的输入条件是指异常的,
临界的,可能引起问题异变的输入条件;充分注意测试中的群集现象;经验表明,
测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该
对错误群集的程序段进行重点测试;严格执行测试计划,排除测试的随意性;应
当对每一个测试结果做全面的检查;妥善保存测试计划,测试用例,出错统计和
最终分析报告,为维护提供方便。
软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角
度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测
试是否针对系统的内部结构和具体实现算法的角度来看,软件测试可分为白盒测
试和黑盒测试[1]
静态测试是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、
过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠
缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递
归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一
步的查错,并为测试用例选取提供指导。
动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析
嵌入式软件测试工具静态分析的研究与实现
2
运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、
析程序的输出结果。
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,
通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打
开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接
口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序
是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库
或文件)的完整性。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通
过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部
的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不
顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证[2]
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”
法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检
查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使
每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了
设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中
因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
常见的白盒测试包括:
1) 语句测试:选择的测试用例至少执行一次程序中的每条语句。
2) 判定或分支覆盖:选择的测试用例是每个分支(包括真,假分支)运行一次。
3) 条件覆盖:选择的测试用例使每个用于判定的条件具有所有可能的逻辑值。
§1.2 课题的背景及意义
目前嵌入式软件测试产品的主流是部分欧美厂商的产品,有 Telelogic
Logiscope、McCabe Test/QA、LDRA Testbed 等工具提供了软件的静态分析功能。
这些产品在国外的国防、电信等领域应用广泛,同时他们也在我国国内市场积极
进行技术推广工作。占据了绝对市场。国外测试工具已经形成了垄断,一则由于
测试工具存在相当技术壁垒,二则少数厂商才能提供产品,三则国内没有软件厂
商能够提供产品,所以一套测试工具少则数万人民币的价格,多则数万美元的天
价。每年随着技术的更新还要不断的升级,缴纳不菲的升级费用和维护费用。国
内在此方面的研究处于起步阶段,尚未见可提供实用的商品,随着人们对软件质
摘要:

摘要当前在各种高技术武器装备中,嵌入式计算机及其实时软件承担着系统指挥、过程控制、数据采集和处理、数据通信以及系统安全保障等任务,软件已经成为整个系统的神经中枢,通过近年来从事军用软件的测试实践工作以及对军方用户、软件承制单位软件测试情况的调查研究,目前我国对军用武器装备软件的测试工作,往往采用人工判读或从系统外部进行功能测试的方法与其所承担的重要使命是不相称的。静态分析的研究是软件工程的一个热点,市场上已经有一些自动化测试工具支持静态分析。但这些测试工具主流还是欧美厂商的产品,并且价格不菲。国内缺乏这类成熟的产品,因此开发此类软件具有一定的现实意义和广阔的市场前景。本文根据软件测试工具的概念...

展开>> 收起<<
嵌入式软件测试工具静态分析的研究与实现.pdf

共84页,预览9页

还剩页未读, 继续阅读

作者:赵德峰 分类:高等教育资料 价格:15积分 属性:84 页 大小:3.44MB 格式:PDF 时间:2024-11-19

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 84
客服
关注