嵌入式软件测试课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式软件测试课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 测试 课件
- 资源描述:
-
1、1软件测试工程师软件测试工程师(级级)培训培训 嵌入式系统软件测试嵌入式系统软件测试2PART 3 嵌入式系统软件测试1 嵌入式软件的特点2 嵌入式软件测试的特点3 困难及解决办法4 嵌入式软件开发及测试工具5 例子3前言 嵌入式软件指嵌入式计算机系统中的软件 嵌入式计算机系统:其主要目的不是进行计算,而是较大系统中成为其完整不可分割部分的计算机系统;如武器,航天,航空,指挥控制或运输系统中的计算机系统。嵌入式软件可能是最难测试的一类软件。41 嵌入式软件的特点(1)嵌入式软件和硬件联系密切嵌入式软件与所属的计算机系统有很强的耦合。软件的实现细节与 计算机系统的结构 IO端口配置 计算机系统相
2、连的外部设备及其输出信号特性都有关系。嵌入式软件只能运行在特定的目标机上;这种运行平台的特定性给嵌入式软件的开发和测试都带来极大的困难;5嵌入式软件的特点(续)(2)嵌入式软件通常要求强实时性嵌入式软件一般由于要在规定的时间内完成处理功能,同时时间也是某些处理的重要输入参数。嵌入式软件有更严格的处理时序要求。6嵌入式软件的特点(续)(3)嵌入式软件一般采用更低层的语言编写考虑到速度和性能的要求,物理设备尺寸和内存空间的限制,嵌入式软件的实现仍然要把空间紧凑和尽量节省运行时间作为追求的目标。有些情况下必须采用汇编语言编制,这种语言结构化程度低、规范化程度低,程序不易理解,不易维护,自身可靠性差。
3、许多测试工具在应用到这些程序上有许多困难甚至不能支持。72 嵌入式软件测试特点(1)嵌入式软件几乎全部涉及专用计算机外部设备(2)嵌入式软件的运行平台嵌入式计算机系统可能由于没有通常的外部设备而很难在测试过程中进行检测和观察。(因为外部设备支持有限或者需要相关硬件开发,实际的嵌入式计算机硬件甚至不能用来测试)(如某些设备既没有存储,又没有显示、打印甚至键盘等设备)8嵌入式软件测试特点(续)(3)嵌入式软件的实时性要求使输出仅在某个有限的时间内有限,并且必须在这个时间段内生效。(如飞机控制必须快速对飞行器的姿态变化作出反应以保证飞行的稳定性)(4)嵌入式软件还可能是交互的。交互的因素与前面三个因
4、素可能同时,使测试过程更加困难。9测试困难存在的更本原因?一般测试技术和测试工具的实施缺乏基本条件。103 问题对应的解决办法 3.0 评审和静态测试 3.1 专用设备问题 3.2 监测真实硬件运行情况 3.3 实时性测试 3.4 交互式软件测试 3.5 并发系统,网络通信问题 3.6 采用全数字仿真技术解决上述问题113.0 静态测试 作用:便于测试人员明确和理解程序的逻辑,同时也是开发人员自省的过程。因为实践表明,开发人员在讲解过程中能发现许多自己的错误。12静态测试方法 框架结构的测试 在实际中,采用“生成引用表”的方法来完成。即在表中列出各子程序和函数的属性:已定义、未定义、定义类型;
5、输入参数的个数、顺序、类型;输出参数的个数、顺序、类型;已引用、未引用、引用次数等。通过对引用表的分析和对照来检查程序的框架结构。13静态测试方法函数结构的测试 (1)由于其是模块化和结构化的,从而可以通过使用一系列规则从程序推导出相应的流图模型。然后将其和设计文档的流图进行对比,校验设计与源代码的一致性。(2)通过对流图的走查(walk-through),应用逻辑覆盖、分支覆盖和路径覆盖方法来测试函数的健壮性。(3)函数结构的封闭性测试。14静态测试方法细节专项检查 测试人员根据以往的测试档案和工作经验,事先列出一份常见错误清单,然后有针对性地进行检查。实践中列出的专项包括:(1)数组下标是
6、否越界,变量值是否越界?(2)是否避免了依赖了程序设计语言中的缺省值的代码?(3)除数是否有可能为零?(4)浮点数运算是否进行分析检查?(5)栈是否会溢出?(6)用过的内存是否已释放?(7)全局变量的使用是否必要?(8)函数引用时,变量类型和个数是否对应?(9)代码是否包含无穷循环?(10)递归是否存在问题?153.1 专用设备解决专用设备问题的方法有两个:方法1:如果专用设备已经可用并能用来进行测试,就使用实际的设备。在很多情况下实现起来很困难方法2:采用某种软件仿真所需要的设备(仿真能降低费用,加速进程)但是某些仿真非常困难,如传感器的噪声特性和失效模式,可能程序在仿真设备测试时运行正确,
7、在真实设备下运行时经常发生错误。163.2 监测真实硬件运行情况监测嵌入式系统中的真实硬件运行情况的困难方法1:使用某种对目标机和宿主机都适用的编译器的高级语言,即采用生成宿主机代码在宿主机上进行目标程序的运行和测试;(如常用vc编译调试算法,而后移植到单片机中)(需要认真估计目标机和宿主机之间的差异,仔细注意可能存在的问题,如算法字长等)宿主机上测试的正确运行只能说明测试也将在目标机上正确运行的有力证据;173.2 监测真实硬件运行情况(续)方法2:使用指令集仿真器指令集仿真器是一个仿真另一种计算机指令集的程序。这种仿真一般包括处理器和内存,但很少涉及时间或目标机外围设备仿真,在没有实际外部
8、设备时,这种仿真在应用程序功能需求测试方面的作用受到局限;183.2 监测真实硬件运行情况(续)方法3:使用在线模拟器是一个硬件单元,提供适当的目标硬件的电气和功能模拟,能用于目标设备,能控制目标外围设备,并能在实时条件下运行。模拟器也可能包括一些运行跟踪和系统信息检测功能来辅助测试人员。优点:这些功能一般不损害模拟器的真实性缺点:除了处理器和主内存之外所有的目标硬件是可用的。在线模拟器作为一种嵌入式软件开发工具,增加了对测试的支持,包括给出代码覆盖和数据区读写覆盖信息,性能分析等功能,成为嵌入式软件测试的有力工具193.3 实时性测试实时系统测试分两步走:先功能正确性,然后时间正确性,原因:
9、(1)判断功能正确性会改变系统的特性,如进行覆盖测量而插入探针,由于探针程序收集程序执行信息会占用CPU时间,使程序整个执行时间延长,使系统不能满足实时要求;测试技术:程序插装203.3 实时性测试(续)(2)目标机硬件上测试非常困难,能运行的测试用例受到限制。应尽量在宿主机上进行功能正确性验证,可以指令集仿真器或仅仅使用具有宿主机和目标机上都适用的编译器的编译语言;(3)单元和集成测试不太可能在目标硬件上执行,也不必要求他们在目标机上运行;213.3 实时性测试(续)(4)在原因(1)中提及的改变也会影响程序的功能性。如软件可能在覆盖插装的条件下运行正确,而在没有覆盖插装时运行不正确。覆盖插
10、装改变了程序执行过程,相应地,内存状态、执行时间等受到改变,从而引起程序执行结果地差异。因此,功能特性必须在侧重于时间性的测试阶段从系统级进行检查。223.4 交互式软件测试嵌入式软件的交互式测试可以借用一般交互式软件测试技术。测试交互式软件的问题主要是难于实现自动化;解决问题的关键:(1)使程序的输入不再来自诸如键盘、鼠标、触摸屏之类的输入设备,输出也不到显示器之类的设备上,(2)这样数据的输入和输出记录都可以自动化,自动化方式有利于进行回归测试。233.4 交互式软件测试(续)键盘:用文件来模拟字符序列的输入,程序运行时从文件读入字符就如同从键盘上输入一样。要求:字符序列须有意义的,因此字
11、符序列须于人工输入或由相当复杂的程序产生;243.4 交互式软件测试(续)触摸屏和鼠标:这两种设备的输入都于屏幕上的显示内容有关,仅仅记录输入的屏幕坐标即可。捕获和回放工具:在运行时将键盘、鼠标、触摸屏上的输入记录下来,并且能重放。所有初始输入都需要手工形成;253.4 交互式软件测试(续)有人提出最好从软件设计方面解决。将软件设计称接口部分(键盘和触摸屏操作)是独立可移去的模块。接口模块可以在测试软件主要部分时移去,然后单独测试接口部分。主要是由于接口模块功能相对而言比较简单。键 图形 来自键盘 盘 用户的完整 软件主要 完整的 显示 对显示器的 的字符 接 输入命令 部件 图形命令 接口
12、位图层操作 口 键 图形 盘 软件主要 比 显示 接 部件 较 接口 口 测试输入 期望输入 263.5 并发系统,网络通信问题并发系统、网络通信系统的测试是非常困难的。273.6 全数字仿真技术是综合解决嵌入式软件测试中由于嵌入式环境所带来的测试困难的一种方案。全数字仿真使用计算机仿真的方式构造嵌入式软件所需要的硬件环境目标机,同时仿真了嵌入式软件运行时所需要的大量的数据源(这些数据源的特性及变化决定了嵌入式软件的运行)28目标硬件环境的数字仿真通过对处理器(CPU)、内存、外围可编程芯片以及上述各器件间连接的仿真,构造目标机硬件环境。处理器仿真:对处理器指令集、寄存器、中断处理机制的仿真;
13、内存仿真:内存寻址,写,读仿真外围可编程芯片仿真:对工作模式,命令字的响应,输入输出特性,功能特性的仿真;器件间连接仿真:为这些芯片的数据端口,控制端口设置I/O地址,决定其间输入/输出关系。29目标数据环境的数字仿真数据描述包括数据序列,即用直接列表方式或数据文件方式给出数据,自动数据产生器(信号源),例如正弦波、锯齿波,脉冲等信号发生器,中断,包括随机、定时、键盘控制等。在这些数据的基础上还可以进一步描述数据类型,数据间时序或逻辑上的关系,数据时间特性等;30全数字仿真技术的目的和意义1.在不具备硬件目标环境时用软件尽可能真实地仿真目标环境;2.提供更可控的运行环境;3.测试可重复4.相对
14、于半实物实验更为安全,可靠,节省经费;5.全数字仿真技术可以支持调试和可靠性测试;6.使软件调试,测试可以和硬件开发并行进行,易于提前发现问题;7.可发现硬件测试中不易发现的问题;8.支持结构测试,故障植入31全数字仿真技术的缺点和局限 仿真运行速度慢;仿真的真实性局限32嵌入式软件测试自动化及工具 4.1 嵌入式软件开发环境 4.2 嵌入式软件测试工具334.1 嵌入式软件开发环境 嵌入式软件开发所需的一组自动工具、固件和硬件的集合。自动工具可能包括(但不局限于)编译程序、汇编程序、装入程序、调试器、模拟器、仿真器、测试工具、文档编制工具、数据库管理系统及操作规程等。硬件可能包括:在线模拟器
15、,I/O通道 嵌入式软件开发环境通常以在线模拟器方式提供软件运行环境,通过交叉编译或汇编生成目标机代码,装入目标机在线模拟器中运行,可以进行程序调试工作;34嵌入式软件开发环境 嵌入式软件环境增强了嵌入式软件开发的资源能力,具有良好的人机界面和输入/输出处理能力 新的嵌入式软件开发环境还为测试工具提供了进一步的支持。如:内存读写操作分析,可显示未曾运行的程序(相当于未读过的内存)。完整的嵌入式开发环境包括嵌入式实时操作系统在内的诸多功能部件。35TRACE32 德国Lauterbach Datentechnik公司产品,在线模拟方式 支持的测试功能包括:外部触发输入、触发输出、目标机时钟控制,
16、具有跟踪通道,进行采样及性能分析,进行函数分析,调用/被调用关系分析以及动态函数调用嵌套分析。进行内存读写分析,可显示未曾运行的程序。支持高级语言,汇编语言,嵌入式实时操作系统内核的调试工具。支持300种CPU,包括386,486,186,196族,60种编译器,6种语言,C,C+,Pascal,Ada,Assembler,支持15种操作系统,支持10种多任务实时操作系统。36XRAY Master Works 美国Microtech Research公司的产品,通过指令集仿真器和在线模拟器两种方式提供运行环境;XRAY源代码开发器,XRAY调试器,XRAY仿真器。XRAY源代码开发器和XRA
17、Y调试器一起工作时,可显示动态调用结构。XRAY调试器支持源程序级调试,监视程序执行情况,检查数据结构的值,修改数据结构的值,进行复杂和简单的断点设置,单步运行、代码插入和连续动态监视。37XRAY Master Works XRAY性能分析描述程序执行时间以及在模块种的时间分布情况的报告;在一个程序执行中,详细的动态调用报告描述一个函数的调用频率;一个给定函数的详细执行时间;代码覆盖分析全部高级语言执行语句执行与不执行的百分比;全部机器指令语句执行与不执行的百分比;全部分支语句执行与不执行的百分比;38嵌入式软件分析与测试的重要性 计算机硬件技术进步,元件质量提高,元件集成量也大大增加,嵌入
18、式设备的硬件性能得到了极大的提高;通过采用成熟的商用操作系统,使系统运行在一个高性能的、可靠的软件平台上,为实现各种大型的复杂的应用打下了良好的基础。面对系统复杂性的增加,自然需要功能强大、性能稳定的应用软件与之相适应。在嵌入系统开发中软件的代码量也越来越大,电子类产品的代码量以每两年就翻一翻的速度增长。同时,系统又要求应用也要精简高效、稳定可靠,使软件的开发在整个系统开发中所占的时间也越来越长,软件的质量对产品的最终质量起到了决定性的作用。那些没有运行过的代码带着潜在的危险交付到客户手中,经常会给用户带来巨大的经济损失、为产品供应商带来信誉上的损失,在一些特殊的领域甚至会危及人的生命安全 3
19、9SystemEvaluationIntellectual PropertyProcessor ChoiceDevelopmentEnvironment&CompilerDebugStrategiesTestStrategiesTechnicalExpertise&AvailabilityEmbedded Design ProcessASIC Integration目标:目标:为嵌入式系统开发人员提供完备开发环境。为嵌入式系统开发人员提供完备开发环境。40纯软件的测试工具 采用软件打点技术,在被测代码中插入一些函数,用这些函数来完成数据的生成,并上送数据到目标系统的共享内存中。同时在目标系统中
20、运行一个预处理任务,完成这些数据的预处理,将处理后的数据通过目标机的网口或串口上送到主机平台。这一切都需借助于用户的目标处理器完成。通过以上过程,测试者得以知道程序当前的运行状态。从上述分析可知,纯软件的测试工具的测试原理有两个必然存在的特点插桩函数和预处理任务。41纯软件的测试工具 由于插入插桩函数和预处理任务的存在,使系统的代码增大,更严重的是这些代码会对系统的运行效率有很大的影响(超过50%)。函数本身要完成数据的生成和暂存,而这些函数在它的实现过程中还可能被其他优先级更高的中断程序所中断,预处理任务需要占用目标系统CPU处理时间、共享内存和通信通道完成数据的处理、数据的上送。当采用纯软
21、件测试工具对目标系统进行测试时,用户目标系统是在一种不真实的环境下运行的,我们所捕获的数据也是不够精确。所以采用纯软件的测试工具缺乏性能分析,它不能对用户目标系统中的函数和任务运行的时间指标进行精确的分析。当做覆盖率分析的时候,因为要大量打点,而打点多于200时就会影响系统的运行,所以只能做单元覆盖率分析且单元的程序量不能太大。不能对内存的动态分配进行动态的观察。42 纯硬件的测试工具 纯硬件工具通常用于系统的硬件设计与测试工作。当它用于软件的分析测试时,却无法满足用户的基本要求。如逻辑分析仪,逻辑分析仪是通过监控系统在运行时总线上的指令周期,并以一定的频率捕获这些信号,通过对捕获的信号进行分
22、析来判断程序当前运行的状况。由于它使用的是采样的方式,难免会遗失一些重要的信号;同时,分析的范围也及其有限。以性能分析为例,当使用某种逻辑分析仪进行性能分析时,我们只能以抽样的方式,同时对个函数做性能分析,得到一个不精确的结果 纯硬件工具根本不能对内存分配进行分析和检查的能力。43AMC公司CodeTEST原理 程序员编写的源代码首先会通过CodeTEST的编译驱动器调用原编译器对进行预编译,然后CodeTEST的插桩器(源代码分析程序)对预编译好的源代码进行自动的插桩,即在需要插桩的关键位置写入一条赋值语句(如:amc_ctrt=0 x74100009),并把插入的标记送入一个数据库文件中生
展开阅读全文