嵌入式软件测试(精)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13
静态测试方法-细节专项检查
• 测试人员根据以往的测试档案和工作经验,事先列出一份常见 错误清单,然后有针对性地进行检查。实践中列出的专项包括: (1)数组下标是否越界,变量值是否越界? (2)是否避免了依赖了程序设计语言中的缺省值的代码? (3)除数是否有可能为零? (4)浮点数运算是否进行分析检查? (5)栈是否会溢出? (6)用过的内存是否已释放? (7)全局变量的使用是否必要? (8)函数引用时,变量类型和个数是否对应? (9)代码是否包含无穷循环? (10)递归是否存在问题?
14
3.1 专用设备
解决专用设备问题的方法有两个: 方法1:如果专用设备已经可用并能用来进行测试,就使 用实际的设备。[在很多情况下实现起来很困难] 方法2:采用某种软件仿真所需要的设备(仿真能降低费 用,加速进程)
但是某些仿真非常困难,如传感器的噪声特性和失效模式, 可能程序在仿真设备测试时运行正确,在真实设备下运行 时经常发生错误。
软件测试工程师 (Ⅱ 级 ) 培训
嵌入式系统软件测试
1
PART 3 嵌入式系统软件测试
1 嵌入式软件的特点 2 嵌入式软件测试的特点 3 困难及解决办法 4 嵌入式软件开发及测试工具 5 例子
2
前言
• 嵌入式软件指嵌入式计算机系统中的软件
• 嵌入式计算机系统:其主要目的不是进行计算, 而是较大系统中成为其完整不可分割部分的计算 机系统; 如武器,航天,航空,指挥控制或运输系统中的 计算机系统。 • 嵌入式软件可能是最难测试的一类软件。
12
静态测试方法-函数结构的测试
• (1)由于其是模块化和结Biblioteka Baidu化的,从而可以通过使 用一系列规则从程序推导出相应的流图模型。然 后将其和设计文档的流图进行对比,校验设计与 源代码的一致性。
(2)通过对流图的走查(walk-through),应用逻辑覆 盖、分支覆盖和路径覆盖方法来测试函数的健壮 性。 (3)函数结构的封闭性测试。
22
3.4 交互式软件测试(续)
键盘: 用文件来模拟字符序列的输入,程序运行时从文件读入字符 就如同从键盘上输入一样。 要求:字符序列须有意义的,因此字符序列须于人工输入或 由相当复杂的程序产生;
23
3.4 交互式软件测试(续)
触摸屏和鼠标: 这两种设备的输入都于屏幕上的显示内容有关,仅 仅记录输入的屏幕坐标即可。
21
3.4 交互式软件测试
嵌入式软件的交互式测试可以借用一般交互式软件测试技术。 测试交互式软件的问题主要是难于实现自动化;解决问题的 关键: (1)使程序的输入不再来自诸如键盘、鼠标、触摸屏之 类的输入设备,输出也不到显示器之类的设备上, (2)这样数据的输入和输出记录都可以自动化,自动化 方式有利于进行回归测试。
• 一般测试技术和测试工具的实施缺乏基本 条件。
9
3 问题对应的解决办法
• • • • • • • 3.0 评审和静态测试 3.1 专用设备问题 3.2 监测真实硬件运行情况 3.3 实时性测试 3.4 交互式软件测试 3.5 并发系统,网络通信问题 3.6 采用全数字仿真技术解决上述问题
10
3.0 静态测试
1.
2. 3. 4. 5. 6. 7. 8.
在不具备硬件目标环境时用软件尽可能真实地仿真 目标环境; 提供更可控的运行环境; 测试可重复 相对于半实物实验更为安全,可靠,节省经费; 全数字仿真技术可以支持调试和可靠性测试; 使软件调试,测试可以和硬件开发并行进行,易于 提前发现问题; 可发现硬件测试中不易发现的问题; 支持结构测试,故障植入
7
嵌入式软件测试特点(续)
(3)嵌入式软件的实时性要求使输出仅在某个有限 的时间内有限,并且必须在这个时间段内生效。 (如飞机控制必须快速对飞行器的姿态变化作出 反应以保证飞行的稳定性)
(4)嵌入式软件还可能是交互的。 交互的因素与前面三个因素可能同时,使测试过 程更加困难。
8
测试困难存在的更本原因?
18
3.3 实时性测试
实时系统测试分两步走:先功能正确性,然后时间正确性, 原因: (1)判断功能正确性会改变系统的特性,如进行覆盖测 量而插入探针,由于探针程序收集程序执行信息会占用 CPU时间,使程序整个执行时间延长,使系统不能满足实 时要求;
测试技术:程序插装
19
3.3 实时性测试(续)
(2)目标机硬件上测试非常困难,能运行的测试用例受到 限制。应尽量在宿主机上进行功能正确性验证, 可以指令集仿真器或仅仅使用具有宿主机和目标机上 都适用的编译器的编译语言; (3)单元和集成测试不太可能在目标硬件上执行,也不必 要求他们在目标机上运行;
30
全数字仿真技术的缺点和局限
• 仿真运行速度慢; • 仿真的真实性局限
31
嵌入式软件测试自动化及工具
• 4.1 嵌入式软件开发环境 • 4.2 嵌入式软件测试工具
32
4.1 嵌入式软件开发环境
• 嵌入式软件开发所需的一组自动工具、固件和硬件的集合。 • 自动工具可能包括(但不局限于)编译程序、汇编程序、 装入程序、调试器、模拟器、仿真器、测试工具、文档编 制工具、数据库管理系统及操作规程等。 • 硬件可能包括:在线模拟器,I/O通道 • 嵌入式软件开发环境通常以在线模拟器方式提供软件运行 环境,通过交叉编译或汇编生成目标机代码,装入目标机 在线模拟器中运行,可以进行程序调试工作;
来自键盘 的字符
键 盘 接 口
用户的完整 输入命令
软件主要 完整的 部件 图形命令
图形 显示 接口
对显示器的 位图层操作
键 盘 接 口 测试输入
软件主要 部件
比 较
图形 显示 接口
期望输入
25
3.5 并发系统,网络通信问题
并发系统、网络通信系统的测试是非常困难 的。
26
3.6 全数字仿真技术
是综合解决嵌入式软件测试中由于嵌入式环境所带 来的测试困难的一种方案。
4
嵌入式软件的特点(续)
(2)嵌入式软件通常要求强实时性 嵌入式软件一般由于要在规定的时间内完 成处理功能,同时时间也是某些处理的重 要输入参数。 嵌入式软件有更严格的处理时序要求。
5
嵌入式软件的特点(续)
(3)嵌入式软件一般采用更低层的语言编写 考虑到速度和性能的要求,物理设备尺寸和内存空间的限 制,嵌入式软件的实现仍然要把空间紧凑和尽量节省运行 时间作为追求的目标。 • 有些情况下必须采用汇编语言编制,这种语言结构化程度 低、规范化程度低,程序不易理解,不易维护,自身可靠 性差。 许多测试工具在应用到这些程序上有许多困难甚至不能支 持。
33
嵌入式软件开发环境
• 嵌入式软件环境增强了嵌入式软件开发的资源能 力,具有良好的人机界面和输入/输出处理能力 • 新的嵌入式软件开发环境还为测试工具提供了进 一步的支持。如:内存读写操作分析,可显示未 曾运行的程序(相当于未读过的内存)。 • 完整的嵌入式开发环境包括嵌入式实时操作系统 在内的诸多功能部件。
3
1 嵌入式软件的特点
• (1)嵌入式软件和硬件联系密切
嵌入式软件与所属的计算机系统有很强的耦合。 软件的实现细节与 计算机系统的结构 IO端口配置 计算机系统相连的外部设备及其输出信号特性都有关系。 嵌入式软件只能运行在特定的目标机上; 这种运行平台的特定性给嵌入式软件的开发和测试都带来 极大的困难;
35
XRAY Master Works
• 美国Microtech Research公司的产品,通过指令 集仿真器和在线模拟器两种方式提供运行环境; • XRAY源代码开发器,XRAY调试器,XRAY仿真 器。 • XRAY源代码开发器和XRAY调试器一起工作时, 可显示动态调用结构。 XRAY调试器支持源程序 级调试,监视程序执行情况,检查数据结构的值, 修改数据结构的值,进行复杂和简单的断点设置, 单步运行、代码插入和连续动态监视。
• 方法3:使用在线模拟器 是一个硬件单元,提供适当的目标硬件的电气和功能模拟, 能用于目标设备,能控制目标外围设备,并能在实时条件 下运行。 模拟器也可能包括一些运行跟踪和系统信息检测功能来辅 助测试人员。
优点:这些功能一般不损害模拟器的真实性 缺点:除了处理器和主内存之外所有的目标硬件是可用的。 在线模拟器作为一种嵌入式软件开发工具,增加了对测试 的支持,包括给出代码覆盖和数据区读写覆盖信息,性能 分析等功能,成为嵌入式软件测试的有力工具
34
TRACE32
• 德国Lauterbach Datentechnik公司产品,在线模拟方式 • 支持的测试功能包括:外部触发输入、触发输出、目标机 时钟控制,具有跟踪通道,进行采样及性能分析,进行函 数分析,调用/被调用关系分析以及动态函数调用嵌套分 析。进行内存读写分析,可显示未曾运行的程序。 • 支持高级语言,汇编语言,嵌入式实时操作系统内核的调 试工具。 • 支持300种CPU,包括386,486,186,196族,60种编译器, 6种语言,C, C++, Pascal, Ada, Assembler,支持15种操 作系统,支持10种多任务实时操作系统。
16
3.2 监测真实硬件运行情况(续)
• 方法2:使用指令集仿真器 指令集仿真器是一个仿真另一种计算机指令集的 程序。这种仿真一般包括处理器和内存,但很少 涉及时间或目标机外围设备仿真,在没有实际外 部设备时,这种仿真在应用程序功能需求测试方 面的作用受到局限;
17
3.2 监测真实硬件运行情况(续)
20
3.3 实时性测试(续)
(4)在原因(1)中提及的改变也会影响程序的功能性。 如软件可能在覆盖插装的条件下运行正确,而在没有覆盖 插装时运行不正确。覆盖插装改变了程序执行过程,相应 地,内存状态、执行时间等受到改变,从而引起程序执行 结果地差异。 因此,功能特性必须在侧重于时间性的测试阶段从系统级进 行检查。
• 作用:便于测试人员 明确和理解程序的逻 辑,同时也是开发人 员自省的过程。因为 实践表明,开发人员 在讲解过程中能发现 许多自己的错误。
11
静态测试方法
• 框架结构的测试 在实际中,采用“生成引用表”的方 法来完成。即在表中列出各子程序和 函数的属性:已定义、未定义、定义 类型;输入参数的个数、顺序、类型; 输出参数的个数、顺序、类型;已引 用、未引用、引用次数等。通过对引 用表的分析和对照来检查程序的框架 结构。
捕获和回放工具: 在运行时将键盘、鼠标、触摸屏上的输入记录下来, 并且能重放。所有初始输入都需要手工形成;
24
3.4 交互式软件测试(续)
• 有人提出最好从软件设计方面解决。将软件设计称接口部分(键盘和触摸屏 操作)是独立可移去的模块。接口模块可以在测试软件主要部分时移去,然 后单独测试接口部分。主要是由于接口模块功能相对而言比较简单。
28
目标数据环境的数字仿真
数据描述包括数据序列,即用直接列表方式或数据 文件方式给出数据,自动数据产生器(信号源), 例如正弦波、锯齿波,脉冲等信号发生器,中断, 包括随机、定时、键盘控制等。
在这些数据的基础上还可以进一步描述数据类型, 数据间时序或逻辑上的关系,数据时间特性等;
29
全数字仿真技术的目的和意义
全数字仿真使用计算机仿真的方式构造嵌入式软件 所需要的硬件环境-目标机,同时仿真了嵌入式 软件运行时所需要的大量的数据源
(这些数据源的特性及变化决定了嵌入式软件的运 行)
27
目标硬件环境的数字仿真
通过对处理器(CPU)、内存、外围可编程芯片以及上述各器 件间连接的仿真,构造目标机硬件环境。 处理器仿真:对处理器指令集、寄存器、中断处理机制的仿 真; 内存仿真:内存寻址,写,读仿真 外围可编程芯片仿真:对工作模式,命令字的响应,输入输 出特性,功能特性的仿真; 器件间连接仿真:为这些芯片的数据端口,控制端口设置I/O 地址,决定其间输入/输出关系。
6
2 嵌入式软件测试特点
(1)嵌入式软件几乎全部涉及专用计算机外部设备 (2)嵌入式软件的运行平台-嵌入式计算机系统可能由于 没有通常的外部设备而很难在测试过程中进行检测和观察。 (因为外部设备支持有限或者需要相关硬件开发,实际的 嵌入式计算机硬件甚至不能用来测试) (如某些设备既没有存储,又没有显示、打印甚至键盘等 设备)
15
3.2 监测真实硬件运行情况
监测嵌入式系统中的真实硬件运行情况的困难 方法1:使用某种对目标机和宿主机都适用的编译器的高 级语言,即采用生成宿主机代码在宿主机上进行目标程序 的运行和测试; (如常用vc编译调试算法,而后移植到单片机中 )
(需要认真估计目标机和宿主机之间的差异,仔细注意可能 存在的问题,如算法字长等) 宿主机上测试的正确运行只能说明测试也将在目标机上正确 运行的有力证据;
相关文档
最新文档