嵌入式软件技术软件测试策略和方案设计

发布者:EtherealHeart最新更新时间:2015-03-30 关键字:嵌入式 手机看文章 扫描二维码
随时随地手机看文章

    软硬件结合的嵌入式系统正越来越多地应用到我们常见的仪器设备中,嵌入式领域目标系统的应用系统也日趋复杂,开发技术日新月异。同时,随着硬件技术发展的日趋稳定,而软件故障却日益突显,由此软件的重要性已逐渐引起人们的重视,越来越多的研究人员认识到嵌入式系统,优化其测试技术已势在必行,研究出合适的嵌入式软件系统测试方法,正是本课题的意义所在。

    嵌入式系统介绍及软件特点

    嵌入式系统简介

    嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,是专为应用系统量身打造、是对功能、可靠性、成本、体积、功耗有严格要求的专用的计算机系统。

    嵌入式系统一般指非PC类标配系统,它也包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为,而操作系统控制着应用程序编程与硬件的交互作用。

    嵌入式系统软件特点分析

    嵌入式系统开发有其自身的特点。一般先进行硬件部分的开发,主要包括形成裸机平台,根据需要移植实时操作系统,开发底层的硬件驱动程序等。硬件平台测试通过后,应用软件的开发调试是基于该硬件平台进行的,这同时也是对硬件平台的一个测试。

    嵌入式系统的开发过程是一个软硬件互相协调,互相反馈和互相测试的过程。一般来说,在嵌入式系统软件中,底层驱动程序、操作系统和应用程序的界面是不清晰的,根据需要甚至混编在一起。这主要是由于嵌入式系统中软件对硬件的依赖性造成的。基于嵌入式软件对硬件的依赖性,其要求软件测试时必须最大限度地模拟被测软件的实际运行环境,以保证测试的可靠性,而底层程序和应用程序界限的不清晰又增加了测试的难度。测试时只有确认嵌入式系统平台及底层程序是正确的情况下才能进行应用程序的测试,而且在系统测试时,错误的定位较为困难。

    软件的专用性也是嵌入式软件的一个重要特点。由于嵌入式软件设计是以一定的目标硬件平台为基础的,面向固定的任务进行的,因此,一旦被加载到目标系统上,功能必须完全确定。这个特点决定了嵌入式应用软件的继承性较差,也延长系统的测试时间和增加了测试费用。

    嵌入式软件的另外一个重要特点就是实时性。这是基于软件的执行角度而言的,也就是说嵌入式软件的执行要满足一定的时间约束。嵌入式系统中,应用软件自身算法的复杂度和操作系统任务调度,决定了系统资源的分配和消耗。因此,对系统实时性进行测试时,要借助一定的测试工具对应用程序算法复杂度和操作系统任务调度进行分析测试。可见嵌入式软件与传统的面向对象和面向过程的软件相比有其自身的特点。所以嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。针对这些特点对嵌入式软件的测试进行研究是必要的和有意义的。

    嵌入式软件测试

    软件测试是软件质量保证的关键因素,代表了规约、设计和编码的最终检查。是从经济、效率的角度出发,对软件代码进行质量、正确性保证的一个过程。软件测试是软件开发中的一个重要环节,也是软件从开发过程到应用过程的关键一环,嵌入式软件也不例外。

    嵌入式软件测试策略和方案设计

    讨论嵌入式软件测试首先就会遇到一个问题:为什么不把所有测试都放在目标上进行呢?因为若所有测试都放在目标平台上有很多不利的因素:

    可能会造成与目标环境开发者争夺时间的瓶颈,避免提供更多的目标环境;

    目标环境可能还不可行;

    比起主机平台环境,目标环境通常是不精密的和不方便的;

    提供给开发者的目标环境和开发环境通常是很昂贵的;

    开发和测试工作可能会妨碍目标环境已存在持续的应用。

    确定目标主机(host-target)测试环境后,开发测试人员又会遇到以下的问题:

    1)多少开发人员会进行测试工作?

    2)多少软件应该测试,测试会花费多长时间?

    3)主机环境和目标环境有哪些软件工具,价格怎样?

    4)多少目标环境可以提供给开发者?

    5)主机和目标主机之间的连接怎样?

    6)被测软件下载到目标主机有多快?

    7)使用主机与目标环境之间有什么限制?

    进行嵌入式软件的测试都应深入考虑以上问题,结合自身实际情况,选定合理测试策略和方案。

    嵌入式软件测试流程及方法

    根据不同的指标,软件测试有不同的划分方法。

    从软件开发过程中测试所处的不同阶段可分为模块测试、集成测试和系统测试;根据是否需要运行目标代码又可分为动态测试和静态测试;根据目标代码的可见性还可分为白盒测试(结构测试)和黑盒测试(功能测试)。

    在软件测试中,每种测试方法都不是孤立的。为了最经济最有效地达到测试的目的,各种测试方法往往是互相嵌套的。例如,在软件的单元测试阶段,可以用黑盒测试和白盒测试的方法分别进行动态测试。

    近年来,在软件测试中,测试代码的覆盖率逐渐成为软件测试的统一标准,因此不管采用何种测试方法,尽可能地提高软件测试中的代码覆盖率是必需的。软件测试代码覆盖率是基于白盒测试方法的,因此,为了提高软件测试的代码覆盖率,测试人员必须清楚源代码的结构,拥有程序设计文档,以便设计测试用例,使测试尽可能地覆盖程序内部结构的每条语句,提高代码的覆盖率。

    嵌入式软件测试流程

    根据嵌入式系统的开发流程,为了最经济地实现系统的功能,采用自顶向下、层层推进的方法对嵌入式系统进行测试,采用如下图所示的测试流程。

    平台测试:这部分包括硬件电路测试、操作系统及底层驱动程序测试等。

硬件电路测试需要用专门的测试工具进行测试,这里不再多述。操作系统和底层驱动程序的测试主要包括测试操作系统的任务调度、实时性能、通信端口的数据传输率。该阶段测试完成后,系统应为一个完整的嵌入式系统平台,用户只需添加应用程序即可完成特定的任务。

    模块测试:把大型的嵌入式软件系统划分为若干个相对较小的任务模块,由不同的程序员分别同时对其进行编码。编码完成后,把各个模块集成起来前,必须对单个模块进行测试。由于没有其它数据模块进行数据传递的支持,该阶段测试一般是在宿主机上进行的(宿主机有丰富的资源和方便的调试环境)。此阶段主要是进行白盒测试,尽可能地测试每一个函数、每一个条件分支、每一个程序语句,提高代码测试的覆盖率。由于只有单个模块正确才有整体集成的必要性,因此,单个模块测试一定要充分、完整。模块测试阶段,测试用例的构造不但要测试系统正常的运行情况,还要进行边界测试。边界测试就是进行某一数据变量的最大值和最小值的测试,同时进行越界测试,即输入不该输入的数据变量测试系统的运行情况。理想的嵌入式系统是不应该由于用户的信息交互而导致死机的,这也是嵌入式设计的一个基本要求。因此,不论进行何种测试,系统死机都该被作为测试错误处理。

    在模块测试阶段,也可以把大的模块划分成小的模块。在程序内部,小模块之间数据传递的入口设计接口函数,要用于快速地定位错误。用模块嵌套的思想进行软件测试,需要模块内部结构清晰,数据链路简单。

    集成测试:单个软件模块测试正确之后,将所有模块集成起来进行测试。本阶段主要是找出各模块之间数据传递和系统组成后的逻辑结构的错误。在宿主机上采用黑盒与白盒相结合的方法进行测试,要最大限度地模拟实际运行环境,可以屏蔽掉一些不影响系统执行的和数据传递难以模拟的函数。

    集成测试是嵌入式软件测试优点充分体现的阶段。集成测试前,应该由程序员根据模块之间的数据的输入输出编写模块接口函数,这需要负责不同软件模块的程序员共同协调完成,然后将模块接口函数集成到接收数据模块的入口处。单链路数据传递的软件模块集成测试时容易定位错误所在的软件模块。一个软件模块的数据不一定只有另外一个模块提供,即软件模块的数据链路不一定只是单链路的,测试时可以把复杂链路结构的数据传递划分为单链路结构数据传送进行错误定位。

    集成测试是在拥有程序设计文档、程序结构和数据结构时,对软件模块在集成中出现的错误进行测试。

    系统测试:集成测试完成后,退出宿主机测试环境,把系统移植到目标机上来,完成应用到现场环境中的移植,从用户的角度对系统进行黑盒测试,以验证每一项具体的功能。由于测试者对程序内容、程序执行情况一无所知,因此本测试阶段的错误定位比较困难。系统测试阶段应该进行意外测试和破坏性测试,即测试系统正常执行情况下不该发生的活动和人为的破坏性的测试,进一步验证系统性能。系统测试阶段不应该确定错误后立即修改代码,应根据一定的错误发生频率,确定测试周期,在每个测试周期结束时修改代码,进行反复测试;否则,不但增加了完全测试的任务量,而且降低了测试的可信度。

    测试结果分析:测试结果分析可以定位错误,指导程序员修改代码,同时指出进行测试的程序进一步测试的方向。测试结果分析是一个由测试结果和测试预得结果进行分析、比较和定位错误的过程。测试结果分析是一次测试的最后环节,分析时应该考虑软件的运行环境与实际运行环境的差异,以及各种外界因素的影响等。

    白盒测试方法

    白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法要求全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

    黑盒测试方法

    黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。

    测试用例的构造

    测试用例是为了测试目标程序设计的,包括输入项和预得结果的一种文件。根据测试环境和测试目标程序的不同,可分为某种格式的文档或某种输入行为(如一次按键)等。测试用例的构造要尽可能覆盖所有可能的取值范围,使测试尽可能地覆盖所有程序代码,提高代码的测试覆盖率,同时又不作多余、重复和无意义的测试。在嵌入式软件测试的不同阶段,要构造不同的测试用例;在系统平台测试阶段,要构造针对系统任务调度、实时性能和底层驱动程序的测试用例;在模块测试阶段,应构造针对某一模块进行测试的测试用例;在集成测试阶段,针对系统集成时数据传递、结构连接的问题构造相应的测试用例;在系统测试阶段,要构造针对某项功能的或多项功能结合在一起的测试用例,或使用已经在同类产品上已经验证正确的测试用例,测试用例是可复用的。

    结语

    嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。嵌入式系统的专用程度较高,系统的整体继承性相对较小,为了保证系统的稳定性,软件测试成为嵌入式开发的一个重要环节。由于嵌入式软件自身的特点,传统的软件测试理论不能直接用于嵌入式软件的测试。文章对嵌入式软件的特点作了分析,总结了嵌入式软件测试的策略和方案设计,提出了嵌入式软件测试流程和测试方法。本文的研究内容对嵌入式软件的测试有重要意义。

 

关键字:嵌入式 引用地址:嵌入式软件技术软件测试策略和方案设计

上一篇:HDCVI标准化之路集中体现安防产业的创新驱动力
下一篇:半球摄像机应用知多少

推荐阅读最新更新时间:2024-03-16 11:14

基于AVR的时间触发嵌入式系统的设计与应用
1.前言 近年来,嵌入式发展迅速,采用51 单片机 死循环的事件触发编程方式已逐渐不能满足企业对产品稳定性和安全性的要求。目前,嵌入式系统软件有VxWork、Linux、WinCE、μC/OS-II等,可出于成本和技术上的考虑,微控制器往往不会选取其进行设计。在实际应用中,往往会面临同时应付多外设、多任务的情况,则对它们的相互调度必不可少。时间触发嵌入式系统就是这样的简单实用的操作系统。 本文设计了基于AVR微控制器的时间触发多任务调度器并应用于实际。该调度器使用传递消息(message)的方式使得微控制器在多个任务及设备间切换。 2.AVR微控制器的结构特点 AVR是目前使用以该系列的ATmega128为
[单片机]
基于AVR的时间触发<font color='red'>嵌入式</font>系统的设计与应用
低价位嵌入式处理开发套件
Spartan-3E 1600E 开发套件支持灵活的 MicroBlaze 软处理设计 作者:Jay Gould Xilinx, Inc. 嵌入式解决方案营销 高级产品经理 jay.gould@xilinx.com Jim Burnham Xilinx, Inc. 嵌入式处理部 嵌入式产品营销 jim.burnham@xilinx.com 从头构建复杂的实时嵌入式系统既耗时,效率又低。如果硬件、软件、固件、RTOS(实时操作系统)集成和软件驱动器均为全新产品,其功能和可靠性未经实际应用验证,有谁愿意花功夫去调试它们呢?工程师在设计和调试过程中喜欢把变量分离出来,一个个地进行修改,但对您而言,要想迅速取得进展,所使用的组件一开
[应用]
嵌入式的系统教学如何解决?且看专家访谈
夏宇闻 :我是受何老师邀请来这里的。 既然来了,我想作为一个在这个行业干的年头很多的老教师也好,老工程师也好,我应该说几句话。我很高兴地是刚才听到申老师说到的教学要分层次,非常对;还有其他老师的教学方法也是很对的。他们比我年轻,搞的很好,对这个行业发展也很有热情,我也感到很高兴。但是有许多事情我也必须要说一下,我现在在产业界,作为产业界的一个顾问在工作,我就知道招人很难招,招不到合适的人。包括刚才软件工程学院的老师说了半天,可是你去了解下你们学生到底质量怎么样,你就知道了。有很多的事情不是自己说了,是产业界反馈回来的信息才能说明问题。所以我觉得教学实际上是非常重要的一个环节,而且怎么样把教学的质量控制好也是
[嵌入式]
<font color='red'>嵌入式</font>的系统教学如何解决?且看专家访谈
基于ARM高速闪存MCU应对广泛嵌入式需求
  由于采用了ARM7TDMI-S内核,LPC2000系列MCU工作频率达60MHz,与其他8-bit产品相比具有更强的功能延展性。同时它借助片上存储器加 模块实现了“零等待访问”高速闪存功能,提高了指令执行的效率。   此外,LPC2000的外设接口非常丰富,包括UART、SPI、I2C、CAN、ADC、 PWM、RTC等。LPC2000系列MCU应用领域非常广泛,从网络通信、 马达控制,到汽车和消费电子都适合于涉足。   嵌入式系统是面向用户、面向产品、面向应用的,它是将先进计算机技术、半导体技术和电子技术以及各行业的具体应用相结合的产物,因此它是一个高度密集、不断创新的知识集成系统。作为嵌入式系统,它必须能够根据应用的需
[嵌入式]
用于嵌入式温度测量的磁性纳米传感器
美国NIST的热磁成像与控制项目正在开发纳米级别的温度传感器 位于马里兰州的美国国家标准与技术研究所(NIST)的研究人员正在开发一种纳米级超灵敏温度传感器阵列,据悉,这种传感器可以嵌入到各种材料中。 该系统将是第一个在不透明的三维体积中对微观温度进行实时测量的系统,其中可能包括医用植入物、冰箱、电子设备,甚至是人体。 该团队介绍,热磁成像和控制(Thermal MagIC)项目可能会给生物学、医学、化学合成、制冷、汽车工业、塑料生产等许多领域的温度测量带来革命变化。NIST的物理学家Cindi Dennis:“几乎任何地方的温度都起着关键作用。”“这是无处不在。” Thermal MagIC将通过使用
[传感器]
用于<font color='red'>嵌入式</font>温度测量的磁性纳米传感器
Atmel新款闪存MCU满足USB嵌入式应用需求
Atmel Corporation日前推出四款带有USB控制器的全新AVR闪存微控制器(Flash MCU)。AT90USB微控制器设计用于满足在主机和功能模式中需要USB连接的嵌入式应用的各种不同要求。 目前正在使用的USB设备数量超过10亿;在占领计算机和外围设备领域之后,USB在消费产品和工业设备领域也正在迅猛发展。数据存储、数据传输、产品配置和固件更新是推动这一趋势的关键应用。AT90USB1286和AT90USB646具有USB口,用于需要与USB主机相连的应用。AT90USB1287和AT90USB647符合USB On-The-Go(OTG)标准,在应用中作为两用设备(Dual Role Device, DRD),
[新品]
基于嵌入式NiosⅡ软核的串口直接读写寄存器方式编程
O 引言 Altera公司的FPGA作为全定制芯片的一个代表正在得到日益广泛的应用。为了用户使用方便,Altera公司推出嵌入式软核NiosⅡ可以便利地使用工具生成并放人FPGA芯片中。NiosⅡ软核可以在用户的系统中处理一些诸如人机接口界面、内部时序逻辑控制、外部设备初始化等工作。通用异步收发器(UART),是嵌入式系统上很常用的一个串行接口,由于其方便、简单、易用等特性,在嵌入式系统中依然扮演着十分重要的角色。所以Altera才把UART作为一个连接Nios/NiosⅡ与其相关外设的IP放在SoPC Builder里面供用户使用。Nios一代调试甚至直接用串口。 NiosⅡ处理器是Intel公司为Altera公
[嵌入式]
基于<font color='red'>嵌入式</font>NiosⅡ软核的串口直接读写寄存器方式编程
怎样去设计汽车嵌入式SoC系统?
嵌入式系统是泛计算领域的重要组成部分,是嵌入式对象宿主体系中完成某种特定功能的专用计算机系统。嵌入式系统有体积小、低功耗、集成度高、子系统间能通信融合的优点。 随着汽车技术的发展以及微处理器技术的不断进步,在汽车电子技术中得到了广泛应用。目前,从车身控制、底盘控制、发动机管理、主被动安全系统到车载娱乐、信息系统都离不开嵌入式技术的支持。 01 汽车嵌入式系统发展历程 嵌入式系统诞生于微型机时代,经历了漫长的独立发展的单片机道路。嵌入式系统的核心是嵌入式微处理器。与嵌入式微处理器的发展类似,汽车嵌入式系统也可以分为三个发展阶段: 第一阶段:SCM(Single Chip M
[汽车电子]
怎样去设计汽车<font color='red'>嵌入式</font>SoC系统?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新安防电子文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved