《12嵌入式系统测试《嵌入式系统原理》》由会员分享,可在线阅读,更多相关《12嵌入式系统测试《嵌入式系统原理》(58页珍藏版)》请在金锄头文库上搜索。
1、29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理嵌入式系统原理 第六章 应用编程与数据处理嵌入式系统测试29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理需求分析总体设计硬件设计动作设计结构设计逻辑设计工艺实现软件设计概要设计详细设计代码实现测试调试软硬件集成系统集成测试29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理测试库需求设计代码编写系统与测试设计白盒测试黑盒测试l 软硬件开发、测试与质量一体化思想 l 用科学的量化方法使测试数据说话 l 尽早测试,使用需求进行衡量和监控 l 全方位测试-可靠性测试、功能性测试、应用性能测试
2、、系统性能测试29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理功能测试崩溃测试极限测试异常测试兼容性安 全 性可靠性裁 剪 性29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理软件开发周期29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理软件测试定义 使用人工或自动的手段来运行或测定某个 软件系统的过程,其目的在于检验它是否 满足规定的需求或弄清预期结果与实际结 果之间的差别。 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理基本方法 单元测试 单个模块 集成测试 模块间,子系统内 确认测试 需求说明 实时性测
3、试、安全性测试、健壮性测试、兼容 性测试、可用性测试、压力测试、容量测试、 文档测试、数据转换测试 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理单元测试 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理单元测试方法 实例化依赖基础对象 成本高 效率低 副作用 替代实例化方法 模仿对象法 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理被测模块 class Application public void run() /在应用程序类Application的运行方法 /Run中实例化并显示视图对象 View v = new Vie
4、w();/实例化视图对象 v.display();/显示视图对象 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理一种解决方法class Application public void run() View v = createView();/间接生成视图对象 v.display(); protected View createView() return new View; 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理实际例子class ApplicationTest MockView mockView = new MockView();/App
5、licationTest的私有类MockViewpublic void testApplicationApplication a = new Application()protected View createView()/重载return mockView;/使用模仿对象;a.run();mockView.validate();29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理实际例子private class MockView extends Viewboolean isDisplayed = false; /显示属性public void display()isDis
6、played = true; /设置显示属性public void validate()assertTrue(isDisplayed);/断言显示属性为真 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理覆盖率 语句覆盖 程序中的每条语句至少应该执行一次 ,很弱 判定覆盖 每个判定至少都获得一次“真值”或“假值” 条件覆盖 每一判定语句中每个逻辑条件的可能值至少满足一次 判定条件覆盖 同时满足判定覆盖、条件覆盖 路径覆盖 每一条可能的路径至少执行一次。29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理例子 (1)void someFunc(int a,
7、int b) (2) (3) if( (a0)|(b0) ) (4) (5)someExecutableStatement; (6) (7) 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理完全语句覆盖 A=1入口(a,b)a0|b0ExecutableStatement 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理判定覆盖 入口(a,b)a0|b0a0|b0a0a0|b029/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理设计测试用例 等价类划分法 根据输出对输入分类 边界值法 变量的边界值 分支测试法 错误猜测法 29/06
8、/2007Lecture12: 嵌入式系统测试嵌入式系统原理单元测试的重要性 它浪费了太多的时间? 它仅仅是证明这些代码做了什么 ? 是不是可以不进行单元测试? 集成测试将会抓住所有的Bug,单元测试是 不需要的? 成本效率不高 ?29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理集成测试 子系统的集成测试 系统的集成测试 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理集成测试 由上而下的集成测试方法 最高级别首先集成与测试 最大限度的减少工作量 比较复杂 不能支持有限版本的快速推出 由下而上的集成测试方法 实用工具模块 需要驱动29/06/2007
9、Lecture12: 嵌入式系统测试嵌入式系统原理集成测试 伞形方法 测试沿功能性数据和控制流路径进行 函数的输入:由下而上的模式集成 函数的输出:由上而下的模式集成 支持有限功能的早期发布 减少对存根和驱动的需求 系统性 低29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理自顶向下型集成测试模型 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理自顶向下型集成测试过程 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理确认测试 所有子系统的整合测试 实时性测试Rhealstone 任务切换时间 抢占时间 中断延迟时间 信号量混洗时间
10、 死锁解除时间 数据包吞吐率29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理嵌入式软件测试 仿真环境的功能 系统配置:为测试环境设定参数 测试实施:测试数据仿真、产生激励信号 测试分析:测试结果分析和评估 需要解决的问题 通信连接:以太网、RS232 测试控制:从主机输入测试用例,捕捉目标机上被测 试模块是否正常接受测试用例以及输出测试反馈 测试反馈 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理测试任务切换时间 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理29/06/2007Lecture12: 嵌入式系统测试嵌入式系统
11、原理两种常用时间工具 系统时钟 实时时钟:硬件时钟 系统时钟:硬件软件;18.2次 /秒 GPIO(General Purpose I/O通用输入输 出) 接收外部I/O 连接时钟辅助设备 需要驱动程序29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理设计指标 可控制性:控制输入,容易由外部输入控 制内部节点的状态。 可观测性:观察输出,容易由外部输出观察 内部节点的状态。集成电路可测性设计29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理可测性设计方法 扫描方法: 将电路中的时序单元
12、转化为扫描单元,这些扫 描单元连接成一个或者多个移位寄存器;移位寄 存器的内容可以由输出端逐位移出。 内建自测试方法: 测试结构嵌入测试对象内部,测试码在测试对 象内部自动产生、测试激励在测试对象内部自动 加载、测试响应在测试对象内部自动分析。硬件可测性设计29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理扫描方法分类分类扫描范围:部分扫描/完全扫描扫描原理:通路扫描、级敏扫描、奇偶扫描、扫描置位、随机存取扫描、电平敏感扫 描、边界扫描29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理扫描方法扫描单元29/06/2007Lecture12: 嵌入式系统测
13、试嵌入式系统原理扫描方法扫描链29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理扫描方法边界扫描边界扫描法是扫描方法的一个重要分支,由 JTAG(联合测试小组)提出并负责制定标准,即 IEEE Std 1149.1,它在芯片的核心及引脚之间加 入扫描单元,故而得名。29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理边界扫描原理图29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理初始态29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理捕获数据29/
14、06/2007Lecture12: 嵌入式系统测试嵌入式系统原理移动寄存器1次29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理移动寄存器2次29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理移动寄存器6次29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理数据更新29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理内建自测试存储器方案29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理测试策略 归纳测试法 收集信息确定错误类 型作出假设审查假设实施修正验证修正无法作出假设无法审查不成功29/06/2
15、007Lecture12: 嵌入式系统测试嵌入式系统原理列举可能 的原因和假设排除一些 原因和假设研究保留 的原因和假设证明成立实施修正验证修正不成功收集信息全部排除无法证 明演绎测试法 29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理测试方法Yourdon的结构化走通方法 Fagan检查方法 控制流测试 数据流测试 分域测试 静 态动 态29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理I/O 设备文件 系统虚拟 存储 器基本内核 + 内存管理Sm/Sd卡驱动触摸屏驱动DOS文件系统WINDOWS文件系统 文件映射设备映射29/06/2007Lecture12: 嵌入式系统测试嵌入式系统原理l 自动测试工具研究问题 嵌入式操作系统自动测试工具缺乏,PC通用操作 系统的自动测试工具如Rational 公司的SQA Suite, Microsoft公司的Visual Test等等不能 完全有效运用到嵌入式系统测试中,虽然 Rational 公司已加强嵌入式实时操作系统自动 测试开发工具的力度,但如何