转:嵌入式软件测试基本概念_嵌入式产品测试是做什么-程序员宅基地

技术标签: 嵌入式系统测试方法  测试  testing  软件测试  单元测试  嵌入式  任务  

嵌入式软件测试基本概念

这里讨论的嵌入式软件测试是一个系统测试的概念。即将开发的软件系统(包括嵌入式操作系统和嵌入式应用软件)、硬件系统和其它相关因素(如人员的操作、数据的获取等)综合起来,对整个产品进行的全面测试。嵌入式系统的系统测试比PC系统软件测试要困难得多,主要体现如下:

  1. 测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;
  2. 强壮性测试、可知性测试很难编码实现;
  3. 交叉测试平台的测试用例、测试结果上载困难;
  4. 基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;
  5. 性能测试、确定性能瓶颈困难;
  6. 实施测试自动化技术困难。

 

 嵌入式软件测试和传统软件测试异同点

嵌入式软件与别的软件相比,它具有专用性,它只能在需求所指定的硬件平台上执行,并且嵌入式软件的开发环境和运行环境是不一致的,因此即使宿主机环境下测试再充分,也不能说明在目标机环境下运行该软件就不出问题。因而,嵌入式软件还面临着目标环境的测试。这不仅增加了测试的代价,而且还带来了嵌入式软件的测试策略问题,即哪些测试分配在宿主环境进行,哪些测试分配到目标环境下进行(户军茹,2007)。

所以嵌入式软件测试更有它的必要性,而且比一般的软件测试存在更多的困难。

嵌入式软件测试与普通软件测试的相同之处

传统的软件测试是将软件分在不同的层面上进行测试,包括模块测试(或单元测试),集成测试,系统测试等。

 

嵌入式软件测试和一般的软件测试存在着许多相似的问题和相似的解决方法。这就是我们寻找的嵌入式软件的通用的测试方法。

按阶段可分为单元测试、集成测试、系统测试和确认测试。

单元测试(Unit testing):完成对最小的软件设计单元的验证工作,只有在该基础之上才能保证后续的测试工作。主要采用白盒测试技术,用来保证单元的最大覆盖率和发现编码和详细设计中的错误。单元测试一般可以就在宿主环境上运行。嵌入式测试系统一般分为以下几个单元:预处理和词法语法分析单元、插桩单元和测试信息分析和显示单元以及测试用例单元。

集成测试(Integration testing):是把经过单元测试的模块按软件的结构组合在一起作为一个系统或一个子系统来综合测试。主要是用来发现程序的架构和体系结构设计方面的错误。虽然白盒测试用来保证大部分的路径覆盖率,但黑盒测试在集成测试中还是比较广泛。集成测试一般是在宿主环境中进行。

系统测试(System Testing):将系统的测试软件系统和其他资源(硬件、人机交互信息资源和数据库)都综合起来构成完整的计算机应用系统进行测试的。是用来确保整个系统的性能、执行强度、安全性和功能都达到了我们的要求。所以在这个阶段是要和硬件结合,即和目标板一起进行测试,在目标环境中进行。确认测试(Validation testing):是把软件系统作为一个单一的执行实体而进行的需求有效性测试。其目的是验证我们的软件是否满足所有的功能、行为和执行要求,这部分主要是用黑盒测试。

根据测试时是否运行被测试的程序,软件测试技术还可分为静态测试方法和动态测试方法。

静态测试方法的主要特征就是不运行被测试的程序,主要采用检查、技术复审和代码静态分析来检查被测软件的错误,对于嵌入式软件来说该测试只需在主机上进行就可以了;动态测试方法是使被测代码在相对真实环境下运行,从多角度观察程序运行时能体现的功能、行为、结构等,并从中发现错误。它又分为白盒测试方法和黑盒测试方法。对于嵌入式软件来说,为了保证测试的真实性,一般要求在目标环境中进行。

从测试是否针对系统的内部结构和逻辑处理过程,通常可分为:白盒测试与黑盒测试。

 

黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试。它必须依靠能够反映这一关系和程序功能的需求规格说明书来考虑测试用例和推断测试结果的正确性。即所依据的只能是程序的外部特性。因此黑盒测试是从用户观点出发的测试。黑盒测试方法包括等价类划分、边界值分析、因果图和正交设计等基于软件功能的测试技术。在进行嵌入式软件黑盒测试时,要把系统的预期用途作为重要依据,根据需求中对负载、定时、性能的要求,判断软件是否满足这些需求规范。为了保证正确地测试,还需要检验与硬件之间的接口。嵌入式软件黑盒测试的一个重要方面是极限测试。在使用环境中,通常要求嵌入式软件的失效过程要平稳,所以,黑盒测试不仅要检查软件工作过程,也要检查软件失效过程。

 

白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试。采用这一测试方法,测试者可以看到被测的源程序,用以分析程序的内部构造,并且根据其内部构造设计测试用例。这时测试者可以完全不顾程序的功能。白盒测试方法又包括逻辑覆盖、符号测试、路径分析、程序插桩和程序变异等基于软件内部结构的测试技术。白盒测试与代码覆盖率密切相关,可以在白盒测试的同时计算出测试的代码覆盖率,保证测试的充分性。由于严格的安全性和可靠性的要求,嵌入式软件测试同非嵌入式软件测试相比,通常要求有更高的代码覆盖率。在软件工程的测试中有一个颇为实用的覆盖准则,即当语句覆盖率100%,分支覆盖率≥85%时,认为测试是理想的,软件错误可查出近90%,且允许时间和空间的消耗。日本日立公司和美国空军均采用此标准。对于嵌入式软件,白盒测试一般不必在目标硬件上进行,更为实际的方式是在开发环境中通过硬件仿真进行,所以选取的测试工具应该支持在宿主环境中的测试。

嵌入式软件测试强调的是白盒测试,一般的白盒测试包括语句覆盖、分支覆盖和条件覆盖。

 

嵌入式系统软件的独特之处

嵌入式系统由于自己本身的特点,如实时性强、内存不丰富、I/O通道少、开发工具昂贵并且与硬件紧密相关、CPU种类繁多等等,决定了不同的嵌入式系统必须有不同的测试方法,下面介绍几种不同的嵌入式产品在测试时应特别关注的问题。

唯一系统——“一次性”开发

 

某些系统,比如人造卫星,一旦发射之后就无法对其进行维护。这样的系统是“唯一系统”,意味着其建造是一次性的。

自治系统

 

有些嵌入式系统可以在无限长的时间内自主运行,它们担负某种任务。一旦运行后,就不再需要有人干预或与人交互。

硬件限制

 

硬件资源的局限性会给嵌入式软件带来一定的约束,比如内存使用和电力消耗。有时候特定的硬件也依赖于软件中计时的解决方法。对软件方面的这些约束并不会影响到需求的系统功能,但它们却是系统运行的首要条件,需要对此进行大量深入而技术性又很强的测试。51Testing软件测试网(P8/,U&^&p H+H

硬实时行为

 

“实时”的本质就是输入或输出在发生的瞬间就能够影响到系统的行为。

 

控制系统

 

控制系统通过连续的反馈机制和环境相互作用:系统的输出会影响环境,而环境反过来会影响到控制的行为。

 

强调安全系统

在嵌入式系统中当嵌入式系统的故障会导致对人体健康的严重伤害(或更为可怕的后果)时,则称该系统是“强调安全”的。大量的嵌入式系统都和人体有直接的物理接触,故障会直接导致身体的损伤,例如航空电子设备、医疗设备及核反应堆等。对这样的系统进行风险分析是极其重要的,需要采用严格的技术来分析并提高系统的可靠性。

极端的环境条件

 

有些系统需要在极端的环境条件下进行连续的操作,比如极热或极冷、机械震动、化学物质或放射性等环境条件。测试这些系统需要有特殊的设备来提供极端条件。当真实环境中的测试太危险时,就需要用设备来模拟环境。

 

 

嵌入式软件集成测试注意事项

嵌入式软件集成测试不仅要求软件行为的正确性,而且它要与其被控制的硬件设备实现正确的交互。在具体测试过程中可包含以下几个方面的测试工作(胡一飞,2007)

任务测试:首先独立测试系统中的每个任务,对每个任务设计白盒测试和黑盒测试用例。任务测试可以发现任务中的逻辑错误和功能错误,不能发现实时性错误和行为错误;行为测试:通过使用CASE工具创建的软件模型来仿真实时系统,按照外部事件(如中断、控制信号和数据)的序列检查其行为的正确性,可以先对每个事件进行独立测试,然后随机的把事件输入给系统来检查系统行为的正确性;

任务间测试:独立的任务测试完成后,就可以多个任务一起来测试时间相关的错误,错误用不同的数据率和处理负载来测试任务间的通信,来确定任务间的同步是否会产生;另外,测试通过消息队列和数据存储进行通信的任务以发现这些数据存储区域大小方面的错误。

集成测试:集成软件和硬件一起测试,来发现软硬件之间接口错误,同时测试是否存在中断处理方面的错误,包括中断优先级的分配是否正确、中断的处理是否正确、中断处理是否满足时间要求、多个中断出现的情况下系统的功能和性能是否存在问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/oncea2003/article/details/5679361

智能推荐

LightOJ - 1067 Combinations(快速幂+逆元)_快速幂求逆元 在线oj-程序员宅基地

文章浏览阅读484次。DescriptionGiven n differentobjects, you want to take k of them. How many ways to can do it? For example, saythere are 4 items; you want to take 2 of them. So, you can do it 6 ways. Take 1, _快速幂求逆元 在线oj

Fairseq学习日记:注定麻烦的旅程_final_lr_scale-程序员宅基地

文章浏览阅读6.6k次,点赞10次,收藏23次。现在开头:Fairseq是一个正在快速迭代的产品,而且是开源的!这不是表扬,这意味着三件事情:1.他没有文档!所有框架代码都没有任何注释,包括函数docstring都没有2.他没有经过有效测试,估计是抢时间吧!即使是官网Readme里的例子也是无法跑起来的!3.他是一个框架,而且是一个非常不Pythonic的框架,充斥着inline/包装器/莫名其妙的语法。虽然这三点决定他真的对不住Facebook的金字招牌,但是作为一个学习者,总要把他运行起来,那么开始这场针对 FaceBOOK派“全_final_lr_scale

[Linux][Busybox]分享你不知道Top 命令参数_busybox top-程序员宅基地

文章浏览阅读5.1k次。目录摘要:基本操作与命令介绍:进入top后交互一点点新的操作Author: Keivn.Xu [email protected]摘要: 玩过Linux一定使用过busybox top命令,但下面的操作方法,你不一定有见过。基本操作与命令介绍:console:/ $ busybox top -help top: invalid optio..._busybox top

rssi参数获取_信号强度(RSSI)知识整理-程序员宅基地

文章浏览阅读1.6k次。为什么无线信号(RSSI)是负值答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了。因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的。1mW就是0dBm,小于1mW就是负数的dBm数。弄清信号强度的定义就行了:RSSI(接收信号强度)Received Signal Strength IndicatorRss=10logP,只需将接受到的信号功率P代..._c#获取低功耗设备的rssi信号强度

后端服务的雪崩效应及解决思路_接口超时时间过长导致雪崩效应-程序员宅基地

文章浏览阅读204次。1.RPC与本地调用的区别RPC远程调用,一般是跨平台、采用http协议,因为http协议底层使用socket技术,只要你的语言支持socket技术,就可以相互进行通讯。比如:java语言开发的接口,使用http协议,如此以来C#语言可以调用。本地调用:只支持java语言与java语言开发,使用虚拟机和虚拟机之间的通讯,RMI。2.雪崩效应产生的原因默认情况下只有一个线程池维护所有的服务接口,如果大量的请求访问同一个接口,达到tomcat线程池默认极限,可能会导致其他服务无法访问。3.雪_接口超时时间过长导致雪崩效应

linux操作redis_linux 连接redis-程序员宅基地

文章浏览阅读2.7w次,点赞4次,收藏35次。redis常用命令_linux 连接redis

随便推点

计算机视觉——相机标定-程序员宅基地

文章浏览阅读1.1w次,点赞8次,收藏82次。相机标定_相机标定

js获取年月日 时分秒的日期格式_js 时分秒 时间格式-程序员宅基地

文章浏览阅读1.1k次。const date = new Date()const year = date.getFullYear()const month = date.getMonth() + 1 >= 10 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`const day = date.getDate() >= 10 ? date.getDate() : `0${date.getDate()}`const hours = date.getHours() ._js 时分秒 时间格式

【模拟】Oracle重建索引_oracle 重建索引-程序员宅基地

文章浏览阅读2.2k次。摘要:简述重建索引的情况及重建索引_oracle 重建索引

keil迁移到cubeIDE_cubeide生成代码 keil打开-程序员宅基地

文章浏览阅读2.7k次。以stm32f105rct6为例子,keil迁移到cubeIDE_cubeide生成代码 keil打开

语音处理:Python实现dBFS刻度和采样值相互转换_dbfs 频域-程序员宅基地

文章浏览阅读781次。以对数域常用的dBFS刻度为例,支持主流音频信号位深:整型16/24/32位和浮点32位,编写Python实现对数域和采样值单位互换功能_dbfs 频域

SOD(显著性目标检测)数据集_sod数据集-程序员宅基地

文章浏览阅读4k次,点赞5次,收藏29次。显著性目标检测常用十种数据集:SOD,提取码:f7uqDUT-OMRON,提取码:wqpnMSRA-B,提取码:rfrbSOC,提取码:d5b9SED2,提取码:q4iaHKU-IS,提取码:2f1iPASCAL-S,提取码:naaxDUTS,提取码:a5w7THUR-15K,提取码:ptk9ECSSD..._sod数据集

推荐文章

热门文章

相关标签