当前位置:文档之家› 嵌入式系统的测试

嵌入式系统的测试


2.集成测试
软件集成也可在主机环境上完成,在主机平台上 模拟目标环境运行,当然在目标环境上重复测试 也是必须的,在此级别上的确认测试将确定一些 环境上的问题,比如内存定位和分配上的一些错
误。 在主机环境上的集成测试的使用,依赖于目标系 统的具体功能有多少。有些嵌入式系统与目标环 境耦合的非常紧密,若在主机环境做集成是不切 实际的。一个大型软件的开发可以分几个级别的 集成。低级别的软件集成在主机平台上完成有很 大优势,越往后的集成越依赖于目标环境。
策略
1.单元测试 所有单元级测试都可以在主机环境上进行,除非少数
情况,特别具体指定了单元测试直接在目标环境进行。 最大化在主机环境进行软件测试的比例,通过尽可能 小的目标单元访问所有目标指定的界面。 在主机平台上运行测试速度比在目标平台上快的多, 当在主机平台完成测试,可以在目标环境上重复作一 简单的确认测试,确认测试结果在主机和目标机上没 有被他们的不同影响。在目标环境上进行确认测试将 确定一些未知的,未预料到的,未说明的主机与目标 机的不同。例如,目标编译器可能有bug,但在主机 编译器上没有。
系统测试和确认测试
所有的系统测试和确认测试必须在目标环境下执 行。当然在主机上开发和执行系统测试,然后移 植到目标环境重复执行是很方便的。对目标系统 的依赖性会妨碍将主机环境上的系统测试移植到
目标系统上,况且只有少数开发者会卷入系统测 试,所以有时放弃在主机环境上执行系统测试可 能更方便。 确认测试最终的实施舞台必须在目标环境中, 系统的确认必须在真实系统之下测试,而不能在 主机环境下模拟。这关系到嵌入式软件的最终使 用。
嵌入式系统的测试
特点
如实时性强(Real-timing)
内存不丰富 I/O通道少
开发工具昂贵
并且与硬件紧密相关CPU种类繁多

测试的难点
对可靠性的要求比较高
安全性 容错性
目标环境测试和宿主环境测试有差异
宿主测试考虑的问题
1)多少开发人员会卷入测试工作(单元测 试,软件集成,系统测试)? 2)多少软件应该测试,测试会花费多长时 间? 3)在主机环境和目标环境有哪些软件工具, 价格怎样,适合怎样? 4)多少目标环境可以提供给开发者,什么 时候? 5)主机和目标机之间的连接怎样? 6)被测软件下载到目标机有多快? 7)使用主机与目标环境之间有什么限制 (如软件安全标准)?
嵌入式软件的测试工具
1、内存分析工具 在嵌入式系统中,内存约束通常是有限的。 内存分析工具用来处理在动态内存分配中存在的 缺陷。当动态内存被错误地分配后,通常难以再
现,可能导致的失效难以追踪,使用内存分析工 具可以避免这类缺陷进入功能测试阶段。目前有 两类内存分析工具——软件和硬件的。基于软件 的内存分析工具可能会对代码的性能造成很大影 响,从而严重影响实时操作;基于硬件的内存分 析工具价格昂贵,而且只能在工具所限定的运行 环境中使用。
4、覆盖分析工具 在进行白盒测试时,可以使用代码覆盖分析工具
追踪哪些代码被执行过。分析过程可以通过插装来完 成,插装可以是在测试环境中嵌入硬件,也可以是在 可执行代码中加入软件,也可以是二者相结合。测试 人员对结果数据加以总结,确定哪些代码被执行过, 哪些代码被巡漏了。覆盖分析工具一般会提供有关功 能覆盖、分支覆盖、条件覆盖的信息。对于嵌入式软 件来说,代码覆盖分析工具可能侵入代码的执行,影 响实时代码的运行过程。基于硬件的代码覆盖分析工 具的侵入程度要小一些,但是价格一般比较昂贵,而 且限制被测代码的数量。
2、性能分析工具 在嵌入式系统中,程序的性能通常是非常重要的。经常会有
这样的要求,在特定间内处理一个中断,或生成具有特定定时 要求的一帧。开发人面临的问题是决定应该对哪一部分代码进行 优化来改进性能,常常会花大量的时间去优化那些对性能没有任 何影响的代码。性能分析工具会提供有关的数据,说明执行时间 是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。 根据这些数据,确定哪些例程消耗部分执行时间,从而可以决定 如何优化软件,获得更好的时间性能。对于大多数应用来说,大 部分执行时间用在相对少量的代码上,费时的代码估计占所有软 件总量的5%-20%。性能分析工具不仅能指出哪些例程花费时间, 而且与调试工具联合使用可以引导开发人员查看需要优化的特定 函数,性能分析工具还可以引导开发人员发现在系统调用中存在 的错误以及程序结构上的缺陷。
通常在主机环境执行多数的测试,只是在最终确定测
试结果和最后的系统测试才移植到目标环境,这样可 以避免发生访问目标系统资源上的瓶颈,也可以减少 在昂贵资源如在线仿真器上的费用。另外,若目标系 统的硬件由于某种原因而不能使用时,最后的确认测 试可以推迟直到目标硬件可用,这为嵌入式软件的开 发测试提供了弹性。设计软件的可移植性是成功进行 cross-test的先决条件,它通常可以提高软件的质量, 并且对软件的维护大有益处。以上所提到的测试工具, 都可以通过各自的方式提供测试在主机与目标之间的 移植,从而使嵌入式软件的测试得以方便的执行。
3、GUI测试工具 很多嵌入式应用与带有某种形式的图形用户 界面进行交互,有些系统性能测试是根据用户输 入响应时间进行的。GUI测试工具可以作为脚本
工具有开发环境中运行测试用例,其功能包括对 操作的记录和回放、抓取屏幕显示供以后分析和 比较、设置和管理测试过程。很多嵌入式设备没 有GUI,但常常可以对嵌入式设备进行插装来运 行GUI测试脚本,虽然这种方式可能要求对被测 代码进行更改,但是节省了功能测试和回归测试 的时间。
策略总结

A)使用测试工具的插装功能(主机环境)执行静 态测试分析,并且为动态覆盖测试准备好一插装好的 软件代码。 B)使用源码在主机环境执行功能测试,修正软件 的错误和测试脚本中的错误。 C)使用插装后的软件代码执行覆盖率测试,添加 测试用例或修正软件的错误,保证达到所要求的覆盖 率目标。 D)在目标环境下重复(B),确认软件在目标环 境中执行测试的正确性。 E)若测试需要达到极端的完整性,最好在目标系 统上重复(C),确定软件的覆盖率没有改变。
Codetest
LDRA Testbed Logiscope
相关主题