嵌入式软件的实时在线测试.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式软件的实时在线测试 问题的提出 系统效率为什么如此低,问题在哪里? 系统采集的数据与现场相差甚远,原因何在? 系统运行中,时常复位,硬件,软件工程师百思不得其解? 系统软件随机跑飞,何处使然 ? 如何捕捉系统软件随机和偶然故障 ?无计可施!! 真实世界中的复杂嵌入式软件 结果: 金融在线事务处理系统瘫痪 电话交换网络瘫痪 电话系统崩溃,丢失了五千万次呼叫 电脑控制机场行李运送系统出现故障,行李延迟交付或乱成一团。 更多的电路板,更多的软件,更加复杂! 软件质量低劣所付出的代价: 如果关键系统出现故障? 商务飞机坠毁 反导弹防卫系统无法工作 核反应堆发生核泄露 运送卫星的火箭在空中爆炸 导弹追踪卫星报告了错误的方位 … … … … 我们已认识到软件测试重要性 但新的困难又出现了! 软件的测试不如硬件板卡测试普遍 测试工作缺乏可度量的管理手段。 软件的功能性测试不够完善,需要新的方法的补充。 嵌入式系统代码量日益增多,测试难度增加 系统越复杂,测试越复杂,风险越大 … … … … 实时在线嵌入式系统与仿真环境不同 W. Wayt Gibbs Staff Writer, Scientific American 实时系统中的错误通常很难找到原因,因为,就象你的车上的发动机发出奇怪的声音一样,它只在某种条件下才会出现。 故障在仿真环境中无法再现。 软件打点方式 比较便宜 可在CACHE打开下工作 对目标系统影响大(超过50%) 占用目标系统资源如,CPU 时间 内存,通讯通道等 缺乏很好的性能分析 缺乏覆盖率分析 缺乏内存分配分析 精确度偏低 嵌入式软件在线测试作用... 嵌入式软件在线测试的内容 Coverage Analysis MCDC(条件决策覆盖) Modified Condition DecisionCoverage - MCDC Decision Coverage - DC Coverage(语句覆盖) Statement Coverage - SC 为何要使用MCDC? 不是纯软件模拟;而是终端系统的监视 不仅可以分析哪些代码执行过,而且可以分析什么条件执行和为什么执行 一些软件质量关系到人的生命! 提供比一般代码块覆盖更详细、更明确的监视 满足特定行业机构的需求,如: FAA – 航空 FDA – 医疗 DOD, 空间技术, ISO等 工业质量要求: 根据应用软件的重要性分为不同的级别 B级 – 危险的影响 需要DC测试 差分GPS 飞机之间接近感应 C级 – 重要的影响 需要SC测试 无线数据链接 D级 – 次要性影响 需要 BBC测试 飞机内环境控制(空调温度等) E级 – 没有影响 函数进入/退出覆盖率测试 飞机内娱乐设施 几个规范和要求的例子: 航空软件 RTCA DO-178B 标准 EUROCAE ED-12B 标准 对不同级别覆盖率测试的详细的报告 符合不同级别的条件: A级 – 灾难性的影响 需要MC/DC 测试 引擎控制 飞行计算 导航处理 通常的基本块覆盖率度量方法 基本块覆盖-测量测试中 代码是否已经执行 突出高亮显示执行过的代码 在主机电脑上进行源代码显示 方法 使用 printf 语句 使用调试工具和设断点 使用硬件工具测量 硬件增强型测量工具 在线测试覆盖率: 覆盖率趋势 覆盖率 测试结果: 发现程序中的死代码 提高测试覆盖率 有 ?% 没有测量? 覆盖率可视化 实时动态显示 但是… … … … 一些软件非常关键 基本块覆盖并不适用 于所有的工业场合 DC-决策覆盖 包含决策覆盖和语句覆盖 语句覆盖摘要: 程序的每一条语句被执行了至少一次 决策覆盖摘要: 程序中的每一个进入,退出点被执行了至少一次,程序中的每一个决策的所有结果都至少出现过一次。 语句覆盖/决策覆盖详述 ( 1) Coverage line 5 = A_FUNCTION_ENTRY: 5: unsigned greatest_common_divisor Was Entered [ 2] *Coverage line 12 = A_SEGMENT: 12: if (a_working b_working) Not Executed [ 3] *Coverage line 14 = A_SEGEMENT: 14: a_working -= b_working; Not Executed ( 1) Coverage line 5 = A_FUNCTION_ENTRY: 5: unsigned greatest_common_

文档评论(0)

基本资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档