嵌入式软件测试的基本方法

article/2025/10/26 9:56:59

  嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统。嵌入式系统的软硬件功能界限模糊,测试比PC系统软件测试要困难得多,嵌入式软件系统测试具有如下特点:

  (1)测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;

  (2)强壮性测试、可知性测试很难编码实现;

  (3)交叉测试平台的测试用例、测试结果上载困难;

  (4)基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;

  (5)性能测试、确定性能瓶颈困难;

  (6)实施测试自动化技术困难。

  大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试那种关系人的生命安全的重要的行业中的嵌入式软件所花费的成本,可能相当于软件工程其他开发步骤总成本的三倍到五倍。

  在嵌入式软件测试中,既要考虑软件本身,还要考虑软件同硬件平台和操作系统的集成,同时还有条件苛刻的时间约束和实时要求,以及其他合性能相关的要求。

  1、全数字模拟测试

  全数字模拟测试是指采用数学平台的方法,将嵌入式软件从系统中剥离出来,通过开发CPU指令、常用芯片、I/O、中断、时钟等模拟器在开发主机平台(Host)上实现嵌入式软件的测试。该方法操作简单,适用于功能测试,是一种可以借鉴的常规软件测试方法。

  但是全数字模拟测试有较大的局限性,使用不同语言编写的嵌入式软件需要不同的仿真程序来执行,通用性差,实时性与准确性难以反映出嵌入式软件的真实情况,当并发事件要求一定的同步关系时,维护统一、精确地系统时钟,理顺时序关系相当困难。因此,设计一个能进行系统测试的环境代价太大,全数字模拟测试只能作为嵌入式软件测试的辅助手段。

  2、交叉测试(Host/Target测试)

  自从出现高级语言,嵌入式系统的开发环境和运行环境通常是存在差异的,开发环境被认为是主机平台(Host),软件运行环境为目标平台(Target),相应的测试为Host Target测试(交叉测试)。测试过程中,充分利用高级语言的可移植性,将系统中与目标环境无关的部分工作转移到PC平台上完成,在硬件环境未建好或调试工具缺乏时就可以开展,这时可以借鉴常规的软件测试方法。

  系统中与硬件密切相关的部分在Target上完成,用到的测试工具需要支持目标环境。最后,在目标环境中进行验证确认。交叉测试适用于高级语言,操作方便,测试成本较低,但是实时性受调试环境的制约,在目标环境中测试时要占用一定的目标资源。

  3、嵌入式软件测试方法分类

  嵌入式软件测试或叫交叉测试(Cross-test),测试内容包括:1.单元测试;2.集成测试;3.确认测试;4.系统测试。

  使用有效的交叉测试策略可极大地提高嵌入式软件开发测试的水平和效率,下文给出各个阶段的嵌入式软件测试方案。

  静态测试

  静态测试不利用计算机运行被测程序,目的是度量程序静态复杂度,检查软件是否符合编程标准。

  1)静态测试工具McCabeQA

  McCabeQA是美国McCabe&Association公司的产品。它利用着名学者McCabe的软件结构化测试理论,即使用V(G)圈复杂度=模块内部独立线性路径数来度量软件的复杂度。

  McCabe最大的特点就是可视化,以独特的图形技术表示代码。软件通过分析源码,得到整个软件系统的结构图,同时得到了各种基于工业标准评估代码复杂性,包括V(g)、EV(g)、DV(g)、Halstead等数十种静态复杂度度量。

  用不同的颜色表示软件模块的复杂性,测试人员的测试重点放在质量差的模块上;提供各种质量模型深入评价软件质量,纪录软件质量波动曲线和版本变化趋势分析,从而控制软件修改不同阶段的质量。在单元级McCabe显示模块的流程图,并且相对应地标出代码的位置,视图与代码相互对应,可很快找出问题所在。分析最终得到可定制的符合工业标准的综合报告。

  2)代码规则检查工具QAC/C++

  QAC/QAC++是用于代码规则检查的自动化工具。代码审查主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

  4、动态测试

  动态测试时软件必须运行。动态测试方法分为黑盒法和白盒法。为了较快得到测试效果,通常先进行功能测试,达到所有功能后,为确定软件的可靠性进行必要的覆盖测试。

  在软件开发的不同时期进行动态测试,测试又分为单元测试、集成测试、确认测试、系统测试。

  5、单元测试

  单元测试方案之一采用IPL公司的Cantata++测试工具,它能够满足开发者进行高效的单元测试和集成测试要求,能够提高测试效率,具有一整套包含测试、覆盖率分析和静态分析的功能。Cantata++含有以下几个主要部分:

  CTH测试功能库,Cantata++通过CTH提供的测试函数执行测试,提供测试所需用例的输入输出,并检查输出结果是否符合要求,给出合格/不合格的确切结果。打桩、封装和动态分析的执行也是利用CTH。

 


http://chatgpt.dhexx.cn/article/Pgc6XlmI.shtml

相关文章

嵌入式测试大赛预选赛

刚刚参加了预选赛,对于这种热身赛,是不需要一点编程能力的,只不过需要一些细心 题目下载: 链接:https://pan.baidu.com/s/1Xm2d8UYhrK75fukcXQhEcg 密码:hxzy 这次预选赛是在练习题4的基础上改的&#x…

嵌入式软件测试

如何在目标板上实时测试应用程序为什么嵌入式系统测试困难? 在目标板上测试面临的系列问题: 1、如何下载测试到板子上,然后如何收集测试结果 2、如何累积可重复自动执行的测试 3、如何尽可能减少人工工作 4、如何减少内存不够的问题 这…

全国软件测试大赛嵌入式测试步骤及所需工具

文章目录 前言一、所需工具二、测试步骤1.从慕测平台上下载题目2.搭建测试环境3.测试脚本编写怎么编写 总结 前言 全国软件测试大赛嵌入式测试最全步骤及所需的工具 一、所需工具 若需要测试工具请私信我 二、测试步骤 以2019年的省赛题目为例 1.从慕测平台上下载题目 下…

嵌入式软件测试(黑盒测试)-----三年嵌入式软件测试的理解

前言 文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕…

简单聊聊嵌入式软件测试

一、什么是嵌入式?什么是嵌入式软件测试? 此文不从行业术语来讲,就用大白话来描述,容易明白,不当之处,还请见谅和指正。 嵌入式?简单的可以理解为上位机或者单片机,或者运行微型可定…

嵌入式测试

一、嵌入式软件测试的方法 嵌入式软件测试分为4个阶段,即模块测试、集成测试、系统测试、硬件/软件集成测试。前3个阶段适用于任何软件的测试,硬件/软件集成测试阶段是嵌入式软件所特有的,目的是验证嵌入式软件与其所控制的硬件设备能否正确地…

机器学习必备知识点 之 先验概率和后验概率

机器学习必备知识点 见 机器学习必备知识点 我们可以把概率获得分为两种: 一种是从原因到结果——先验概率一种是从结果到原因——后验概率 举个例子: 这里的P(C1),P(C2),P(x|C1),P(x|C1)都是先验概率,因…

Gretna网络分析之先验知识

目录 1. 简介 1.1 小世界网络 1.2 平均路径长度 2.功能键介绍 2.1 Global Network metrics 2.2 Nodal and modular network metrics 3.彩蛋 (转载请注明来自Ressan博客) 1. 简介 网络:由节点和连线构成的图/模型,用来研究…

如何将先验知识注入推荐模型

看到知乎上的一个问题“如何向深度学习模型中加入先验知识?”,觉得这是一个很好的问题,恰好自己在这方面有一些心得,今天拿出来和大家聊一聊。 说这个问题有趣,是因为提问者一定是对DNN的“智能”程度不满意了&#xf…

如何给模型加入先验知识?

来源:PaperWeekly 作者:Billy Z 模型加入先验知识的必要性 端到端的深度神经网络是个黑盒子,虽然能够自动学习到一些可区分度好的特征,但是往往会拟合到一些非重要特征,导致模型会局部坍塌到一些不好的特征上面。常常一…

几何深度学习 - 利用几何先验知识的深度学习

深度学习很难。 虽然通用逼近定理表明足够复杂的神经网络原则上可以逼近“任何东西”,但不能保证我们可以找到好的模型。 尽管如此,通过明智地选择模型架构,深度学习取得了巨大进步。 这些模型架构对归纳偏差进行编码,为模型提供…

如何向深度学习模型中加入先验知识?

链接:https://www.zhihu.com/question/279012198 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 作者:采石工https://www.zhihu.com/question/279012198/answer/1298985606 1) CNN 中使用的卷积层就是利用了图像像…

浅谈模型中加入先验知识

必要性 端到端的神经网络是个黑盒,虽然能够学习到一些可区分度好的特征,但是也会拟合到一些非重要特征,导致模型局部地区会有一些不好的特征表现,所以可以加入一些先验知识来优化这些区域表现。 首先给出可以有效的加入先验信息的…

综述:如何给模型加入先验知识

转载自:https://zhuanlan.zhihu.com/p/188572028 这里写目录标题 为什么要给模型加入先验知识?1 基于pretrain模型给模型加入先验2 基于输入给模型加入先验3 基于模型重现给模型加入先验4 基于CAM图激活限制给模型加入先验 为什么要给模型加入先验知识&a…

1 先验知识

目录 1. 脑的解剖学结构 (1)额叶Frontal lobe (2)顶叶Parietal lobe (3)颞叶Temporal lobe (4)枕叶Occipital lobe 2. 脑区命名 3. 脑组织定位 (转载请注明来自Re…

给模型加入先验知识

‍ 点‍击上方“机器学习与生成对抗网络”,关注星标 获取有趣、好玩的前沿干货!‍ ‍ 来源|知乎 作者|Billy Z 链接|https://zhuanlan.zhihu.com/p/188572028 报道|人工智能前沿讲习 01 模型加入先验知识的…

神经网络基础--指数加权移动平均ewma

因为神经网络中的常用优化算法都会涉及到指数加权移动平均(exponential weighted moving average, ewma;也可称为exponential moving average,ema),所以这里单独写下这个知识点。 ewma通过将历史的值和当前…

EWMA 指数加权移动平均 模型

Exponentially Weighted Moving Average(EWMA)指数加权移动平均是一种常用的序列数据处理方式,如下: 在时间 t, 根据实际的观测值(或量测值)我们可以求取 EWMA(t)如下: EWMA(t ) λY(t) ( 1-λ…

时间序列分析 - 移动平均SMA, EMA(EWMA) 之python

pandas: pandas.DataFrame.rolling pandas.DataFrame.ewm pandas.DataFrame.mean 其中rolling可以指定窗口类型win_type,比如boxcar, boxcar, triang, blackman, hanning, bartlett 以hanning window为例,其窗口形状为钟型,曲线函数为: p…