嵌入式测试范文

2024-09-23

嵌入式测试范文(精选10篇)

嵌入式测试 第1篇

目前,嵌入式软件主要应用于指控系统、火控系统、飞机、舰船、导弹、宇宙飞船、某些指挥与控制系统等的数据处理机。对于在武器系统中的一些嵌入式软件,由于其在武器中起着至关重要的作用,因此必须对其进行深入彻底地测试。对于大规模、复杂性高的武器系统软件,软件中的缺陷和错误有可能是致命的,因为武器系统的发射及指挥决策的成功与否,都涉及到巨大的投入、甚至国家安危。软件测试是保障软件可靠性、提高软件质量的重要措施。在软件测试这个学科的发展过程中,人的主观能动性是起主导作用的。将人的主观能动性与软件测试工具有机结合起来,提高软件测试的效率,从量化的角度来衡量测试的充分性。

单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试中能够发现软件中存在的大部分错误;软件测试方法可以分为静态测试和动态测试两种情况。因此,从上述的几个方面,根据使用的设计语言的差异,分别描述不同测试工具在军用嵌入式软件测试中的应用。

2 单元测试

单元测试又称模块测试,可从程序的内部结构出发设计测试用例,多个模块可以平行地、对立地测试,通常在编码阶段进行,必要的时候要制作驱动模块和桩模块。单元测试以发现模块设计错误为主要测试目的,因此测试应覆盖模块的每条语句和分支。单元测试的主要内容包括代码审查、静态分析、功能测试、性能测试、结构覆盖测试等等。

由于单元测试的主要目的是发现软件中是否存在错误,在设计测试用例时还要注意以下几点:

(1)是否存在混合类型运算;

(2)程序中是否误解或用错了算符优先级;

(3)是否在不同数据类型的对象之间进行比较;

(4)精度是否不够;

(5)表达式符号是否有错;

(6)是否存在死循环等。

边界条件测试是单元测试中最重要的测试项目之一,采用边界值分析技术,针对边界值极其左、右设计测试用例,很有可能发现新的错误。

对于军用嵌入式软件而言,一部分软件主要是由8086/8087汇编语言编写,还有用C/C++语言编写的。根据汇编语言的特点开发专用的软件,在Testbed的基础上开发了8086/87单元测试软件包。在Testbed的辅助下进行单元测试,测试者不但可以通过图形界面的方式清楚地看到被测模块的覆盖情况,从而有目的性设计测试用例,而且可以通过输出的结果文件确认该模块功能实现的正确性。用C/C++语言编写的军用嵌入式软件,选择Testbed for C/C++软件测试包Tbrun进行面向过程的C/C++软件的单元测试,主要基于它的Bitmap方式,因为它可以使插装代码的数量达到最底限度,但又能达到和其他软件软件测试工具同样的测试效果。

3 静态测试与内存检测

静态测试是不执行程序代码而通过人工走查或工具辅助查找程序中存在的错误或缺陷以及软件质量的一些信息。通过人工代码审查和代码走查,能够发现软件中存在的很多问题。但是如果想要得到软件的清晰度、可维护性、可测试性、不可达性、不合理性、注释行数、复杂度、循环、嵌套、结构化程度、耦合度等的一些质量方面的静态度量信息,还需要借助软件测试工具进行静态分析。在测试工具的辅助下,不但可以提高测试效率,而且能够以图形或文本的方式很方便地给出测试结果,使测试人员在很短的时间内就可以对被测软件有一个大概的印象,从而根据测试结果确定哪些部分需要重点分析和走查,使得两种静态测试的方法相辅相承。

在开发过程中经常会遇到这样的问题:调试时语法没有问题,代码也没有错误,但应用程序运行就是不正常甚至死机,这有可能是由于被测软件的逻辑错误引起的内存溢出或资源泄露等问题造成,这些错误一般是不容易被检测出来的。如果借助专门的测试工具,这些问题就会在运行时暴露出来。Rational Purify就是检查内存泄漏的测试软件中有效的工具。因为它不但能够快速准确地发现软件运行的内存错误,而且不需要被测软件的源代码,其错误可以定制适合的语言包括C/C++,Java等。

4 动态测试

动态测试是相对于静态测试而言的,因此,动态测试是将被测软件运行起来,根据需求加入相关测试用例,并取得测试结果进行分析,检查软件满足需求的情况。

黑盒测试和白盒测试是构成动态测试的基本内容。所谓黑盒测试是把程序看成是一个内部不可见的黑盒,测试者无需顾及程序内部结构、语句、分支、路径等的情况,只要根据需求,设计相应的测试用例,根据输出结果判断程序功能以及性能的正确性。基于黑盒测试的特点,在进行嵌入式测试的过程中设计适合软件测试要求的软件仿真测试系统是必要的。测试过程中,军用嵌入式软件在真实的目标机上运行,仿真测试系统为其提供各种输入信号并采集其输出信号,模拟各种战场态势和环境,以提取正确的测试数据。

借助测试工具的作用,能够达到衡量测试是否充分的目的。那么,如何在众多的测试工具中进行选择呢?首先是要根据被测软件的特点(如被测软件的语言种类)选择几种适合的工具;其次,要看测试工具的功能覆盖面和权威性;三要看测试工具的友好程度;四要看测试工具的二次开发方便性和售后服务情况。

由于军用嵌入式软件以汇编语言为主,能够进行汇编语言测试的工具就成为选择对象,如McCabe、TESTBED等。两种工具比较而言,在静态分析方面各有千秋,在动态覆盖率测试方面,McCabe只能用于C/C++或Fortran等的测试,不能进行汇编语言的动态覆盖率测试。TESTBED不但能够进行汇编语言的动态覆盖率测试,也可以进行C/C++、Fortran、Ada等语言的静、动态测试,尤其是它在进行单元测试或覆盖率测试时可以选用BITMAP方式,既用相对少量的插装代码,又获得软件的覆盖率信息;同时,每一种测试工具,在真正用于测试时都会遇到一些技术问题,这就对工具的技术支持程度提出了很高的要求,因为软件测试是有一定的时间要求的,遇到问题必须在一定时间范围内得到解决。在选择时可以参照文中提出的参考意见,选择出合适的测试工具。

5 结语

当然,工作人员在测试工作中起主导作用,工具只是起辅助作用。测试者积累的经验,合理地利用工具辅助测试工作,这样可以提高测试效率、更新测试手段,从不同的侧面对软件进行评测。

摘要:阐述了对军用嵌入式软件进行单元测试、静态测试、动态测试时的基本测试方法,以及如何将一些测试工具与测试工作进行有机地结合,从而使测试工作更加高效。

关键词:嵌入式软件,测试工具,测试

参考文献

[1]郑人杰.计算机软件测试技术.清华大学出版社,1992.

嵌入式软件的覆盖测试 第2篇

嵌入式软件的开发与通用软件很大的`不同点在于,需要采用交叉开发的方式:开发工具运行在软硬件配置丰富的宿主机上,而嵌入式应用程序运行在软硬件资源相对缺乏的目标机上。对于这类软件的测试也存在着同样的问题:测试工具运行在宿主机上,测试所需要的信息在目标机上产生,并通过一定的物理/逻辑连接传输到缩主机上,由测试工具接收。因此,嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理/逻辑连接,解决数据信息的传输问题。

基于嵌入式系统数字温度的测试系统 第3篇

关键词: 温度传感器 嵌入式系统 测试系统

1.引言

温度传感器是一类被广泛应用且被最先开发的传感器。但大多数温度传感器没有对数字信号分析及处理,达到自动化控制的效果。因此,本设计基于这种情况,利用相关软硬件提高了温度传感器的实用价值。

2.总体设计

2.1系统功能模块设计

从需求分析可以看出,该系统的功能模块应包括以下几个部分:实时温度采集与更新模块、自定义温度警报模块、超温报警模块。DS18B20采用了单总线方式的传输协议,即只需要一根管脚就可以对输入输出进行控制。此种单总线传输协议在实际应用中有很大优势,使用此种协议的芯片不需要任何外围电路,对硬件设计时的复杂性大大简化了许多。

2.2系统软件设计方案

2.2.1嵌入式操作系统选择

在本设计当中,硬件平台完全支持Linux、开发便捷迅速、资料众多、内核小、效率高等优点决定了在本设计当中的稳定性等优点,均使得本设计采用了Linux作为开发的操作系统。

2.2.2应用层程序语言选择

应用程序使用C语言进行开发,使用Linux标准C语言接口,与驱动层进行交互。

3.硬件设计

3.1整体硬件电路设计

根据硬件设计方案,在开发中用到的硬件有Tiny6410开发板、DS18B20数字温度传感器、USB转串口数据线。

3.2硬件连接方式

将USB转串口线一端接在Tiny6410的串口1上,另一端连接PC机USB接口。两个DS18B20传感器的VCC与GND管脚并联起来,与Tiny6410开放的电源与地线接口相连,两个传感器的数据接口一起连接在S3C6410的GPIO的管脚上。

4.软件设计

4.1嵌入式系统架构

本系统在软件方面主要由Linux内核裁剪和移植、底层驱动程序开发、上层应用程序开发三部分组成。其中,Linux内核的运行需要有引导程序BootLoader、内核的配置裁剪与编译、根文件系统的编译三个部分支持。

4.2驱动程序设计

在本设计当中,对DS18B20数字温度传感器根据其数据手册上的传输协议及参数进行驱动编写,首先要明确其控制参数及流程。本系统中对传感器的操作流程如下:

DS18B20写操作:

(1)置数据线高电平;

(2)延时2微秒;

(3)置数据线低电平;

(4)延时15微秒;

(5)按从低位到高位的顺序发送字节(一次只发送一位);

(6)延时60微秒;

(7)数据线拉到高电平;

(8)循环上述步骤使9位传送完毕;

(9)数据线拉高电平。

DS18B20读操作:

(1)置数据线高电平;

(2)延时2微秒;

(3)数据线拉低电平;

(4)延时2微秒;

(5)数据线拉高电平;

(6)延时8微秒;

(7)读数据线状态进行数据处理;

(8)延时50微秒。

5.结语

本设计在温度的测量精度上较为准确,系统能快速反应并准确显示改变后的温度。在长时间运行下测量结果依然准确,在实际生产生活的温度测量工作中具有较大实用价值。同时系统中仍存在一些不足有待弥补。

参考文献:

[1]徐亦朱.DS18B20中文手册[M].安徽:安徽大学出版社,2013.

[2]沙占友.智能化集成温度传感器原理与应用[M].机械工业出版社,2002-7-1.

[3]罗苑棠.嵌入式Linux驱动程序和系统开发实例精讲[M].电子工业出版社,2009.

[4]Tiny6410刷机指南[M].广州友善之臂计算机科技有限公司,2013-05-14.

嵌入式软件测试研究 第4篇

嵌入系统一般包括微机处理器、外围常见的IO设备以及各种嵌入式软件等。微机处理器主要有单片机、DSP、以及ARM等控制器。而软件则是在微机处理器上运行的各种软件, 嵌入式系统主要具备以下几方面的特点:

第一、嵌入式同时结合软件和硬件, 软件和硬件之间是有机的整体, 两者相互依存, 缺一不可, 嵌入式强大的功能是由硬件和软件共同组成而实现的。因此嵌入式系统的测试需要在相关的平台上运行, 才能得以实现。

第二、受制于科技水平的发展以及硬件尺寸的要求, 在一般情况下硬件具备的资源都是有限的, 因此在进行嵌入式测试的时候需要合理的安排硬件具备的资源, 以保证资源得到最大程度的应用。

二、嵌入式软件测试的内容和方法

嵌入式测试存在很多难点:外设-有无外设, 数据的采集和控制输出、测试结果的获得-运行的数据不易观察或获得 (输入是硬件的输出、没有显示) , 求高效, 用汇编语言) 、测试环境-无真实运行环境, 模拟或半仿真 (仿真的正确性, 代价) , 未完成不能运行, 例如:专门建立地测环境、资源有限-测试时可用资源少[1]。

面对嵌入式系统的多样性, 不同嵌入式的软件测试过程也是不同的。比如移动电话的测试过程和视屏机顶盒以及空调控制系统等软件测试过程都是不一样的。每一种软件测试过程都需要考虑自身软件的要求和硬件的要求, 需要一个最优化的软件测试过程, 减少软件测试的成本。

2.1黑盒和白盒测试想结合的方式

在软件进行白盒测试之后紧接着需要对软件进行黑盒测试。白盒测试和黑盒测试都是嵌入式软件测试过程进行实时测试过程中经常使用的两种方法。白盒测试主要用于软件的控制流测试和数据流的测试过程当中。软件的覆盖率以及性能的好坏是软件研发过程中需要重点考虑的内容, 也是白盒测试的主要检测内容。而黑盒测试则是基于客户或者是开发过程中的需求也进行的测试。黑盒测试着眼于软件外部框架的测试。黑盒测试时根据产品的说明书, 在软件操作界面上检查软件的功能能否得以实现。例如手机的一些常见软件 (神庙逃亡) 在开发完以后, 我们首先会神庙逃亡进行白盒测试, 以检测神庙逃亡在运行过程当中, 数据传输情况以及画面转化情况是否正常。假如白盒测试成功以后, 接着我们需要对软件进行黑盒测试, 在黑盒测试的时候, 我们需要测试神庙逃亡的每个插件和道具的功能, 以保证神庙逃亡整个软件运行的顺畅。

2.2动态测试和静态测试

动态测试是一种常见的基本测试方法, 在硬件的基础上运行软件, 观察代码被执行的情况、以及软件功能是否能按照要求去实现。静态测试是指在软件不被运行的情况下, 对软件的文档和程序进行扫描分析的过程。通过借助一些软件文档, 用人工的方式对软件的代码进行检查的方式。在软件开发结束以后, 我们会在一些测试软件上面运行这些被开发的嵌入式软件, 在测试的过程中, 我们会逐行运行嵌入式代码, 以达到测试每一行代码的作用, 这个过程我们通常称为动态测试。而静态测试则是凭借测试人员日常积累的经验, 对代码进行查错。通过静态测试工具Test Bed、Klock Work分析软件的指针有未初始化、数组是否越界、注释率、复杂度等达到对软件代码的检验。通过覆盖率测试工具对软件代码进行插装、执行软件, 达到对软件语句覆盖率、分支覆盖率等分析, 检查软件代码执行情况。

测试过程中重点关注一下几个问题:点关注以下事宜:上电或重启自检、在线自检、初始化 (使系统SW处于完备、正确的初始状态) 、中断分析 (中断嵌套、中断保护和恢复、堆栈使用、优先级和约束、资源竞争) 、实时性、可靠性、接口处理 (接口相关文件最新, 软件需求、设计、软件使用规范一致) 等问题。可见软件测试过程是一项繁重的任务[4]。

三、结束语

目前嵌入式系统适用的范围越来越广泛, 因此对嵌入式系统的要求也越来越高。嵌入式只有在满足可靠系数高、安全系数高和性能指标强的情况下, 才能发挥嵌入式系统的最大作用。因此在对嵌入式系统进行应用的过程中需要对嵌入式系统进行测试。

摘要:目前嵌入式得到了广泛的应用, 但是嵌入式系统在安全性和稳定性方面并没有得到同步的提升。因为嵌入式软件本身的缺陷导致了一系列问题时有发生。本文针对嵌入式系统存在的问题, 重点阐述了嵌入式系统测试对于嵌入式软件应用的重要性。紧接着重点介绍了嵌入式软件测试的内容、方法以及步骤。

关键词:嵌入式软件,软件测试,交叉测试

参考文献

嵌入式测试 第5篇

嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。嵌入式系统的专用程度较高,系统的整体继承性相对较小,为了保证系统的稳定性,软件的测试成为嵌入式开发的一个重要环节。由于嵌入式软件自身的特点,传统的软件测试理论不能直接用于嵌入式软件的测试,因此,研究嵌入式软件的测试有重要意义。

1 基本概念简述

1.1 模块化设计

(本网网收集整理)

软件的设计是以一定的方法为基础的。面对越来越复杂的软件开发任务,人们提出了各种软件设计的模型。从用户需求和系统要实现的任务功能出发,把大型的软件划分为相对较小的模块。为了减少模块与模块之间的关联性,模块之间的逻辑结构相对独立,无函数的交叉调用,数据传递由全局变量完成,这就是模块化设计的基本思想。模块化设计的核心是模块的独立性,主要包括功能独立性和结构独立性,这使得软件开发的分工易于实现。软件测试是软件开发中的关键环节,基于模块化设计的软件测试模型简单,查错和纠错都易于实现。下面以单链路数据传递的软件模型说明模块化软件设计的软件测试的基本原则。

在图1中,函数F(X-Y)定义为软件模块X到软件模块Y的接口函数,用来通过终端显示由模块X进入模块Y的数据。如果模块C执行后发生错误,则由模块B和模块C的数据接口函数F(B-C)判断是否是模块B出来的数据就是错误的。如果F(B-C)不错,则证明模块C存在错误;如果F(B-C)传递数据错误,再察看F(A-B)传出的数据是否错误,如果不错则证明模块B存在错误。用此依次前推孤立错误的方法,即可以很容易地定位错误所在的模块。这就是模块化设计时软件测试的基本原则。

1.2 嵌入式系统

嵌入式系统开发有其自身的特点。一般先进行硬件部分的开发,主要包括形成裸机平台,根据需要移植实时操作系统,开发底层的硬件驱动程序等。硬件平台测试通过后,应该软件的开发调试是基于该硬件平台进行的,这同时也是对硬件平台的一个测试。整个嵌入式系统开发流程如图2所示。因此可以说,嵌入式系统的开发过程是一个软硬件互相协调,互相反馈和互相测试的过程。一般来说,在嵌入式系统软件中,底层驱动程序、操作系统和应用程序的界线是不清晰的,根据需要甚至混编在一起。这主要是由于嵌入式系统中软件对硬件的依赖性造成的。嵌入式软件对硬件的依赖性要求,软件测试时必须最大限度地模拟被测软件的实际运行环境,以保证测试的可靠性。底层程序和应用程序界限的不清晰增加了测试时的难度,测试时只有确认嵌入式系统平台及底层程序正确的情况下才能进行应用程序的测试,而且在系统测试时,错误的定位较为困难。软件的专用性也是嵌入式软件的一个重要特点。由于嵌入式软件设计是以一定的目标硬件平台为基础的、面向固定的任务进行的,因此,一旦被加载到目标系统上,功能必须完全确定。这个特点决定了嵌入式应用软件的继承性较差,延长的系统的测试时间,增加了测试费用。嵌入式软件的另外一个重要特点就是实时性。这是从软件的执行角度出发说明的,也就是说嵌入式软件的执行要满足一定的时间约束。嵌入式系统中,应用软件自身算法的复杂度和操作系统任务调度,决定了系统资源的分配和消耗,因此,对系统实时性进行测试时,要借助一定的测试工具对应用程序算法复杂度和操作系统任务调度进行分析测试。可见嵌入式软件与传统的面向对象和面向过程的软件相比有其自身的特点。针对这些特点对嵌入式软件的测试进行研究是必要的,有意义的。

1.3 嵌入式软件测试

软件测试是从经济、效率的角度出发,对软件代码进行质量、正确性保证的一个过程。软件测试是软件开发中的一个重要环节,也是软件从开发过程到应用过程的关键一环。嵌入式软件也不例外,图3给出了嵌入式软件测试的统一测试模型。软件测试逐渐成为一门成熟的学科,前人针对面向对象和面向过程的非实时软件的测试作了大量的研究,其中大部分方法可以用到嵌入式软件的测试。

根据不同的指标,软件测试方法有不同的划分方法。从软件开发过程中测试所处的不同阶段可分为模块测试、集成测试和系统测试。根据是否需要运行目标代码分为动态测试和静态测试;根据目标代码的可见性可分为白盒测试(结构测试)和黑盒测试(功能测试)。在软件的.测试中,每种测试方法都不是孤立的。为了最经济最有效地达到测试的目的,各种测试方法往往是互相嵌套的。例如,在软件的单元测试

阶段,可以用黑盒测试和白盒测试的方法分别进行动态测试。

嵌入式软件测试环境研究 第6篇

嵌入式系统一般是指以应用为中心, 以计算机技术为基础, 软件硬件可裁剪, 满足于系统对功能、可靠性、成本、体积、功耗等要求的专用计算机系统。嵌入式系统因其体积小、可靠性高、功能强、灵活方便等许多优点, 广泛应用到日常生活的各个领域。尤其在大型设备中, 嵌入式系统属意于核心部件, 起着主要逻辑控制和大规模数据计算的作用。随着硬件的可靠性逐步提高, 大型设备的质量问题多数是嵌入式软件的质量问题, 其风险指数也比较高。因此嵌入式软件的质量问题是关系到大型设备可靠性的重要一环。

1 嵌入式软件的特点

嵌入式系统的应用软件是实现嵌入式系统功能的关键, 其主要特点如下:

1.1 软件开发环境和运行环境不同

嵌入式系统软件的开发通常采用交叉编译方式, 即软件的开发在通用计算机上进行, 而软件的运行环境却是在嵌入式专用设备上。开发环境被认为是主机平台, 运行环境为目标平台, 相应的测试被称为主机测试和交叉测试。

1.2 缺乏可视性

嵌入式软件缺乏可视性主要表现在两个方面: (1) 数据的可视性方面:嵌入式系统通常没有显示设备和存储设备, 只有在线实时观测或是将数据传输到主机上才能进行结果分析; (2) 编程的可视性方面:由于嵌入式软件的开发环境和运行环境不同, 在进行开发时, 一方面不能实时观察程序的运行效果, 另一方面程序在仿真环境和目标设备中的运行效果可能存在差异。

1.3 实时性要求较高

多任务嵌入式系统中, 对重要性各不相同的任务进行统筹兼顾的合理调度是保证每项任务及时执行的关键, 单纯通过提高处理器速度是无法完成和提高效率的, 这种任务调度只能由优化编写的系统软件来完成, 因此实时性是系统软件的基本要求。

1.4 软硬件紧密结合

在嵌入式系统软硬件体系结构内部, 各层次、模块之间的耦合度比通用计算机更强, 这是嵌入式系统要求高效的结果, 而通用计算机出于可扩展等要求更强调系统的模块化、层次化和标准化。

2 嵌入式软件仿真测试环境

嵌入式软件测试不同于传统的通用软件测试, 由于其嵌入性、实时性、反应性、专用性等特点, 它比一般的通用软件测试更加困难。因此, 根据不同测试阶段的需求, 建立恰当的测试环境是避免嵌入式软件测试瓶颈、提高测试效率、保证测试质量的唯一出路。

由于嵌入式系统通常采用软硬件并行开发的方式, 在进行软件设计与测试时, 真实目标设备常常不能及时提供, 而且对于单片机、DSP这些深嵌入式系统来说, 数据的显示采集、测试用例输入等都需要专门的软件来实现, 因此在进行嵌入式软件测试前, 必须首先建立嵌入式软件仿真测试环境。

嵌入式软件是软硬件耦合系统, 把软硬件分离开来, 建立嵌入式软件独立的运行环境是建立嵌入式软件仿真测试环境的关键。一个完整的嵌入式系统包括处理器、I/O接口以及各种外部设备, 在建立嵌入式软件仿真测试环境时, 需要考虑软硬件的分离原则, 即哪些采用真实硬件设备, 哪些需要用软件仿真实现, 哪些需要用硬件仿真实现, 不同的嵌入式系统以及软件测试阶段, 需要建立的仿真测试环境也不相同。

3 嵌入式软件仿真测试环境分类

根据运行环境和实际环境的差异, 嵌入式软件仿真测试环境可分为全数字仿真测试环境、半物理仿真测试环境和全物理仿真测试环境。

3.1 全数字仿真测试环境

全数字仿真测试环境是指仿真嵌入式系统硬件及外围环境的一套软件系统。全数字仿真环境是通过CPU、控制芯片、I/O、中断、时钟等仿真器的组合在宿主机上构造嵌入式软件运行所必需的硬件环境, 为嵌入式软件的运行提供一个精确的数字化硬件环境模型。

3.2 半实物仿真测试环境

半实物仿真测试环境是利用仿真模型来仿真被测系统的外围系统, 而被测系统采用真实的系统。测试环境模拟被测软件运行所需的真实环境的输入和输出, 并且能够组织被测软件的输入来驱动被测软件运行, 同时接收被测软件的输出结果。

外部仿真设备:为目标机提供激励信号输入, 接收并处理目标机输出数据, 保证软件的连续、不间断运行, 实现自动化测试;可以采用软件仿真或硬件仿真 (ADS2等) 。并不是所有的外设都采用仿真实现, 可以随着项目的进展以及根据外设的复杂性, 有选择性的加入真实外部设备。

3.3 全实物仿真测试环境

在全实物仿真测试环境中, 被测软件处在完全真实的运行环境中, 直接将整个系统和其外围的物理设备建立真实的连接, 形成闭环进行测试。全物理仿真测试环境是基于真实目标机的系统测试, 是对整个嵌入式系统软硬件的综合测试, 只有在系统研制的后期, 所有硬件研制工作都已完成后才能进行。

4 嵌入式软件仿真测试环境的构建方法

根据嵌入式软件及测试环境的特点, 不同测试阶段的测试环境搭建方法如下:

4.1 单元测试

单元测试是针对软件设计最小单位模块而进行的内部测试。由于目标机环境资源少、实现难度大, 因此嵌入式软件的单元测试主要采用白盒测试的方法, 一般在宿主机上, 利用集成开发环境或测试工具 (Clockwork、Test Bed、Cantata++等) 的全数字仿真模拟器来进行, 找出单元编码时产生的错误以及与软件需求设计的偏差。在极特殊情况下, 也可以在目标机上进行, 利用单元测试中的驱动模块和桩模块进行。

4.2 集成测试

集成测试是把经过单元测试的模块按软件的结构组合在一起作为一个软件部件或部件集来进行的综合测试。嵌入式软件的集成测试可在宿主机环境上利用Clockwork、Test Bed、Cantata++等测试工具来完成, 也可在目标机上搭建仿真测试环境来完成, 具体依赖于软硬件耦合程度和集成级别。

4.3 软硬件集成测试

软硬件集成测试主要是在软件集成测试完成后, 形成独立的配置项, 加载到相应的硬件平台上测试其运行情况, 以确定软硬件能够正确协调工作, 实现软件需求规定的功能、性能等要求。软硬件集成测试必须在目标机环境下进行, 交联设备可以采用仿真模型替代。可以利用半实物仿真测试工具搭建测试环境来进行确认测试, 比如:ADS-2、d SPACE等。

4.4 系统测试

系统测试是将被测软件和硬件资源都综合起来构成完整的应用系统进行测试, 确保整个系统达到研制任务书的要求。嵌入式软件的系统测试对测试环境有严格的要求, 必须在真实目标机环境下进行, 包括运行平台、交联设备都要是真实的, 目的是要确保嵌入式软件能够在最终的真实硬件环境下正确运行。

5 结束语

嵌入式系统在人类生活中发挥着重要的作用, 软件所占的比重越来越大, 也越来越复杂, 保证嵌入式软件的可靠性正面临严峻的挑战。由于嵌入式系统的实时性和嵌入式特性, 使得嵌入式软件的测试也面临一些特殊的问题。根据嵌入式软件设计过程中不同阶段的测试需求, 建立合适的测试环境, 才能提高嵌入式软件的测试效率, 保证软件设计工作的顺利进行。另外, 虽然日前已经有一些针对嵌入式软件的测试和调试工具, 但是在有些方面仍存在不足, 需要进一步对嵌入式软件的测试环境和测试技术进行研究, 完善和研制更先进的测试工具。

参考文献

[1]康一梅, 等.嵌入式软件测试[M].机械工业出版社, 2008, 6.

嵌入式软件的测试方法与技术 第7篇

关键词:嵌入式软件,测试方法,技术

如今, 计算机技术被更多领域所应用, 针对软件质量人们有了更高要求。而测试技术对软件质量会起到一定的保证作用, 早已被一些软件用户所重视和研究。根据有关调查显示, 我国目前在软件开发中有30%~50%的资金都用在了软件测试上, 以下笔者详细的介绍了嵌入式软件的测试方法与技术。

1 嵌入式软件的测试作用

在设计嵌入式系统的过程中, 有些硬件所具有的功能逐渐被软件所取代, 系统的成本大大降低。而软件调试和设计与硬件相比显得较为复杂, 所以, 在应用嵌入式软件设备的同时, 应该考虑怎样应用嵌入式软件进行测试[1]。

2 嵌入式软件的测试方法

2.1 对各阶段测试进行简单介绍

(1) 阐述单元测试。只有验证完软件设计的最小单元后, 才可以顺利地进行下一步测试。单元测试主要对白盒测试技术进行有效应用, 使单元可以达到最大覆盖率, 同时还可以发现存在于编码中的错误。 (2) 阐述集成测试。主要是将那些由单元测试过的模块根据结构形式组合成一个系统进行综合测试。可以发现存在于设计体系结构与程序框架中的错误。 (3) 阐述确认测试。即将软件系统当作一个单独的实体按照需求进行测试。可以测试软件的功能是否能够达到要求, 主要应用黑盒测试此部分。 (4) 阐述系统测试。把系统中的所有测试软件与一些硬件、数据库等资源进行综合, 测试计算机的应用系统。可以保证系统功能和安全性与我们的要求相符合。

2.2 简述白盒与黑盒两种测试技术

黑盒测试也叫做功能测试, 同时也有人将其称作为数据驱动测试[2]。它首先要查看规格说明书, 然后再推断的测试结果以及用例是否正确。

白盒测试的别名又为机构测试或是逻辑驱动测试。对此种测试方法进行应用, 测试人员在对软件测试过程中, 能够对原始程序的代码进行观测, 进而对其内部形态进行探究, 然后再根据其内部形态的真实情况来设计相应的测试实例。 (1) 语句覆盖的概述。这种覆盖技术测试覆盖中是最基本要求, 应用此技术进行测试时, 应该将每条语句逐步执行。 (2) 判定覆盖的概述。这种覆盖技术需要有大量的应用实例作为支撑, 进而保证在此程序运行过程中所有判定都能获得相应的真假值, 简单来说, 就是程序中的每个分支, 都要进行一次或者多次的判定, 才能达到实际要求。 (3) 条件覆盖的概述。在测试设计中一定要有足够多的测试用例, 这样才会有众多的判定结果, 并且还要在出入口点处都应该被唤醒。

3 简述嵌入式软件的测试技术

3.1 预处理技术

此部分就是进行宏替换、汇编源代码、转变短跳转为长跳转。具体如图1。

3.2 分析词法和语法

此项分析关系着程序设计的语言。词法分析主要就是对存在于源程序中的字符进行划分, 将其变成众多记号, 而语言分析应该从众多记号中分析程序结构, 找出函数体、关键字、语句等。

3.3 插桩技术的叙述

通常情况下, 在动态测试程序的过程中, 通常会应用插桩技术, 以顺利完成覆盖测试。插桩技术会保持被试程序具有完整的逻辑性, 在此基础上将众多探针函数也就是插桩语句插入到程序当中, 这被称作为子过程调用, 有效利用子过程调用会记录插桩点处的动态状况[3]。 (1) 明确插桩位置。明确插桩位置即将在哪插桩的问题有效解决, 所以, 应该按块将程序划分, 将探针在路口位置插桩。在具体汇编时应该对以下位置进行考虑: (1) 开始程序的位置:START转为线性块; (2) 在转移指令发生前:JMP condition LABEL1…; (3) 在将要进行标号时:LABEL 1:…; (4) 在程序出口处:END。 (2) 插桩的方法。此方法主要就是怎样将探针在程序当中进行植入, 具体应该选择合适的植入位置和合理的植入方法, 充分分析块探针以及分支探针。块探针为众多语句的合成体, 在具体执行程序时通常会表现出先行特点。如果此线性块中已经将第一条语句执行完成, 这就代表整个线性块中的所有语句已经被执行完成。 (3) 插桩的具体过程。首先应该将探针函数桩植入到测试的源程序当中, 也就是声明函数。而插桩函数所具有的原型定义在插桩函数中。当目标文件转变成执行文件时, 一定要连接插桩函数库。

4 结语

本论文对嵌入式软件的测试作用进行了简单介绍, 并介绍了单元、集成、确认、系统、黑盒子和白盒子等几种嵌入式软件测试方法, 同时又对嵌入式的测试技术进行了简单探讨, 希望能够利用这些测试方法和技术来完善嵌入式软件的测试系统。

参考文献

[1]孙凯, 龚建军, 康佳, 等.反应堆控制和保护系统嵌入式软件的组合测试[J].核动力工程, 2012, 33 (1) :56-59, 77.

[2]王博, 白晓颖, 贺飞, 等.可组合嵌入式软件建模与验证技术研究综述[J].软件学报, 2014, 25 (2) :234-253.

嵌入式系统TEmb测试方法研究 第8篇

随着电子技术的不断进步, 嵌入式系统也发展到了一个崭新的阶段——智能化阶段。在这一阶段, 软件在系统中所占比重和重要性大大增加, 要担负比以往更多的功能实现任务。这种比重的变化使系统具有更好的灵活性、适应性和扩展性。同时, 系统又要求应用也要精简高效、稳定可靠, 这使软件的开发在整个系统开发中所占的时间也越来越长, 软件的质量对产品的最终质量起到了决定性的作用。随着嵌入式操作系统趋于多样和软件的日渐复杂, 研究如何进行系统测试和进行质量评估来保证嵌入式系统的产品质量具有重要意义。而由于嵌入式系统具有软硬件功能界限模糊, 实时性要求高, 内存不丰富, I/O通道少, CPU种类繁多等特点, 嵌入式系统的测试也就与一般的测试有很大的不同。

对嵌入式系统的测试, 是将开发的软件系统 (包括嵌入式操作系统和嵌入式应用软件) 、硬件系统和其它相关因素 (如人员的操作、数据的获取等) 综合起来, 对整个产品进行的全面测试。良好的测试用例是测试成功的关键, 而只有依据正确的系统测试方法, 才能设计出良好的测试用例。

测试方法不仅要保证测试用例具有发现缺陷的高可移植性, 而且还要保证测试用例设计的经济有效。因此, 在实际测试工作中, 将嵌入式系统的测试方法分类如下:根据测试是否动态运行被测程序分为静态测试方法和动态测试方法;根据测试阶段分为需求测试方法、设计测试方法、编码测试 (单元测试、集成测试) 方法及系统测试方法;根据测试目的分为功能测试、性能测试、可靠性测试 (容错性、可恢复性、成熟度测试, 及信息安全保护等测试。由于不同的嵌入式系统面向的应用不同, 测试方法的侧重也很不相同。

1 TEmb测试方法

TEmb方法是一种能够有效组合多种测试技术的结构化测试方法, 它能够提供一种机制, 从适用于任何测试项目的通用元素和一组相关的特定方法中组合出恰当的专用测试方法, 其工作的基本原理是:任何嵌入式软件系统都有着一些通用的组成因素, 例如, 系统都有自己的生命周期, 在整个周期中会不断的加入各种构建系统的基础设施, 采用各种各样的传统的和先进的技术, 而且在周期的每个阶段都离不开特定的管理和技术组织。有了这样一系列共同的特点之后, 我们就可以针对不同因素的不同要求来确定总体的软件测试计划。

TEmb方法主要考虑了4种通用要素:生命周期 (Lifetime) 、基础设施 (Infrasture) 、技术 (Technique) 和组织 (Organization) , 简称为LITO。TEmb方法中所涉及的生命周期 (L) 与一般意义上我们所定义的系统生命周期并不完全相同, 而是只限于产品开发和测试时期, 主要研究将这一期间划分成不同的阶段, 在不同阶段需要执行那些测试活动以及按照什么顺序来执行的。基础设施是指结构化测试所需要的全部工具, 包括执行测试所需的工具 (测试环境) 和支持有效而高效率地执行测试活动的工具 (自动化测试工具) 。TEmb中所提到的。技术 (T) 是指借助设备实现某种活动的方法。组织 (O) 指执行测试活动的人员以及为了有效进行测试而进行的管理活动。

TEmb方法的实质就是借助通用元素和特定方法通过相关机制组合而成专用的测试方法, 其中通用元素与特定方法与LITO四要素都是息息相关的, 相关机制主要是风险和系统特性分析。通过将TEmb方法所归纳出来的四种通用元素与特定系统的各种特殊性质要求组合可以得到一个二维矩阵, 称之为LITO矩阵, 矩阵中的各个组元就是进行测试过程中确认系统某种特性所需要的特定方法, 而整个矩阵所得出的就是整个测试方案的轮廓。TEmb方法的测试过程如图1所示。

2 结语

TEmb是一种全新的嵌入式软件的结构化测试思路, 还有需要进一步研究的地方。运用这种方法虽然无法对测试过程的细节进行跟踪, 但是却可以让测试者对整个测试轮廓有所了解, 因而可以做到有的放矢。TEmb对于特定的嵌入式系统而言就是组合合适的测试步骤集合的方法, 它通过一些基本的测试步骤提供几种特定的措施, 从而有效的处理特定测试系统中的具体问题。

摘要:应用在通信及军事电子等领域的嵌入式系统, 由于工作环境和产品的特殊性, 对系统的稳定性、可靠性等方面要求非常高, 所以需要进行科学、严谨的测试。而由于嵌入式系统的特殊性, 对它的测试, 尤其是软件测试具有很大难度。本文简要介绍了一种新的嵌入式系统测试方法, TEmb测试方法。通过对该方法的研究, 为嵌入式系统的测试工作起到指导和推动作用。

关键词:嵌入式系统,软件测试

参考文献

[1]Bart Broekman, 等[著].张君施, 等[译].嵌入式软件测试 (第2章) [M].电子工业出版社, 2004, 1.

[2]Angela Krstic Embedded software-basedself-test for programmable core-baseddesigns, Embeded System, July-August, 2002:18~27.

嵌入式软件覆盖测试的研究和应用 第9篇

在软件系统的测试中, 测试人员最关心的是测试的完整性问题, 即测试用的测试数据不仅符合软件的规范, 也要覆盖软件的所有的功能, 同时也必须涉及到整个软件代码的声明和所有的语句, 这就是所谓的软件覆盖测试。

嵌入式系统是一个集中的应用程序。它可以完成一个或多个特定的功能, 其硬件和软件紧密结合。根据不同的功能需求, 嵌入式系统的软件和硬件可以被裁剪和组合, 以满足应用系统功能;嵌入式的可靠性比较高, 而成本、尺寸和功率消耗较低, 还有以下两个特点:嵌入式软件与硬件联系紧密;嵌入式软件实时性要求强。

由于嵌入式软件系统的软件和硬件通常是紧密相连的, 这使得常规的检测方法和技术在嵌入式软件系统的覆盖测试中是无效的, 所以嵌入式软件的测试具有一定的难度。通过覆盖分析工具实现对嵌入式软件的覆盖测试, 对于减少软件错误, 优化软件代码和结构, 降低测试难度, 提高测试效率, 都具有重要意义。

2 软件结构覆盖测试技术方法及工具

覆盖测试需要访问测试代码, 以内部结构的程序代码为基础, 来设计测试手段。覆盖测试要求检查软件的所有语句和逻辑关系, 努力发现所有的错误。覆盖测试常用的方法是:语句覆盖, 分支覆盖, 条件覆盖。语句覆盖是从基本的程序语句角度而言的, 是最基本的测试方法, 但是也有很大的缺陷, 即使语句覆盖率达到了100%, 也无法保证程序逻辑上是正确的。分支覆盖是从程序流程角度而言的, 程序一般包含分支语句 (if, switch) 、循环语句 (while, for) 、跳转语句 (goto) , 通过这些语句会产生大量的分支, 分支覆盖就是尽量使得所有的分支都运行一次。分支覆盖是逻辑性比较强的测试方法, 是覆盖测试中功能最强大的一种。条件覆盖是分支覆盖的一种特殊情况, 只针对if, while, switch等布尔判断语句, 由于布尔判断语句是程序结构中关键部分, 因此将其单独列出以保证程序的逻辑正确。

为了实现覆盖测试, 通常需要根据程序流程结构插入一定的语句。比如函数人口、出口和程序分支处加入代码, 将执行程序时获取的历史数据写入到本地文件。通过对获取的历史文件进行分析, 从而得到代码覆盖率。这种方法对于运行在主机平台上的通用软件 (如Windows, Unix) 等可以满足需求, 而对于嵌入式软件由于和它的硬件平台紧密相关, 必须考虑它的特殊性, 主要体现在:嵌入式系统硬件资源紧张, 代码的存储空间有限, 而插入测试代码后会大大增加代码的数量, 导致程序存储空间不足;大量的测试代码的插入会对嵌入式系统的实时性产生影响, 导致实时性下降;由于一般的嵌入式系统中没有文件系统, 因此也就无法生成历史文件。为了解决上述问题, 必须寻找一种比较合适的测试工具。覆盖测试工具一般具有如下的功能: (1) 对该软件结构进行分析, 保存分析结果, 根据分析结果制定测试策略和测试用例 (2) 根据具体的编译器来自动插入代码, 自动插入代码有汇编级和源代码级。在嵌入式软件系统中插入测试代码后, 在系统操作过程中测试代码就会根据设计的需求, 收集信息。 (3) 将获取的分析数据以文件或窗口的形式提供给用户进行分析, 用户可以根据所获取的分析数据修改插入代码, 以提高测试覆盖率。

Testbed是一款应用广泛的专门软件测试工具, 在软件编程、测试和维护阶段均有使用。下面以一实时嵌入式系统为被测对象, 说明该软件的使用流程。该嵌入式系统采用Intel8031微处理器 (12MHz) , EPROM和RAM均为8KBytes, 采用汇编语言编程。仿真器型号为AEDK51S, 集成调试环境为LCA。该系统用于某设备的速度控制, 将速度指令发给装置, 根据反馈的速度信号与期望速度进行闭环的PID控制。

在这个软件系统测试, 采用功能测试和结构覆盖测试相结合的方法。按照需求规格说明书, 设计测试用例, 测试软件插装于运行的真实环境中, 而用Testbed的代码覆盖率分析功能进行测试。具体的流程如下: (1) 测试平台的配置。用Testbed对嵌入式软件系统进行代码插装, 将插装后的软件运行于硬件平台上;利用Rmonitor数据监控仪器进行数据的监控, 将Rmonitor与嵌入式硬件平台通过适配板相连, Rmonitor的数据传送端借助于以太网将搜集到的数据传送到主机上, 供用户观测和判断。 (2) 初期测试。对嵌入式软件进行静态测试, 获取软件结构流程信息;对嵌入式代码进行插装;利用LCA集成调试环境对插装后的软件进行编译链接, 生成可执行文件;将可执行文件烧到嵌入式硬件平台上。 (3) 测试。运行烧入到硬件平台上的可执行文件, 通过Rmonitor数据监控仪实时监控数据, 并将数据传送到上位机中。用户根据监控数据判断软件的测试覆盖率和软件的缺陷。 (4) 修改软件缺陷, 并利用Testbed再次进行代码插装, 重复上述过程。

3 总结

在嵌入式软件测试中, 借助于覆盖测试工具软件Testbed, 可以自动完成代码的插装, 并准确获取代码的覆盖率, 获知未执行到的代码和语句, 发现软件的缺陷, 这有利于测试人员既可以以测试任务书为依据设计测试实例, 也可以根据Testbed获取的信息作为修改测试实例的依据, 能够更好地解决测试的完备性和准确性问题。

摘要:覆盖测试对于提高嵌入式软件测试的有效性有重要意义。本文分析了嵌入式软件系统测试的特点, 并介绍了测试工具Testbed的应用方法。

关键词:覆盖测试,嵌入式软件系统,Testbed

参考文献

[1]杜延, 刘从越.Du, Yan.Liu, Congyue嵌入式实时系统软件测试实践[J].微计算机信息, 2006 (26) .

[2]尤艺.基于LDRA TESTBED的汇编语言软件测试方法研究[J].航天控制2004 (5) .

嵌入式软件测试系统的设计与实现 第10篇

随着计算机应用领域的迅速扩大, 人们对软件质量提出了新的更高的要求。而作为保证软件质量最有效手段的测试技术, 己经越来越引起软件用户及开发人员的关注。至今, 有关软件测试方法的研究已有许多重要成果, 最典型的就有黑盒、白盒和灰盒测试方法[1]。其中白盒方法 (代码性能测试) 是一种非常有效的测试手段, 典型的白盒测试, 如语句覆盖测试、分支覆盖测试和路径测试等[2], 主要针对程序内部的控制流结构来制定测试的标准和测试策略。本文采用自动插桩的方法对嵌入式软件系统进行代码性能测试, 并实现了系统的内存分析和时间性能分析, 有效的解决了传统手工测试程序运行效率低、繁琐等一些问题, 保证了嵌入式软件系统的高效稳定的运行。

2. 嵌入式软件测试系统的结构框图

嵌入式软件测试原型系统的组成结构见图一, 该系统由四部分组成:词法语法分析、程序的静态结构分析、程序的插桩、测试信息的分析。

被测试程序, 首先经过语法词法分析, 对待测源程序进行扫描后, 生成一些相互之间有关联的链表 (主要是用来确定插桩的位置) , 然后在确定下来的插桩点插入桩, 最后汇编链接生成可执行文件。插桩语句在执行过程中或者执行完毕后, 就将测试结果记录到事先确定的文件中[3]。然后根据动态测试跟踪信息编码规则, 进行相应的分析, 最后将覆盖测试结果、时间性能分析以及内存分析以GUI的形式显示。

3、嵌入式软件测试系统的设计

3.1 覆盖测试系统设计

1.预处理:

预处设计理部分主要是完成宏替换和将相应的短跳转转换成长跳转[4]。

汇编程序中大量采用短跳转, 即仅用一个8位BYTE表示相对的偏移地址。优点是降低了程序运行的时间和空间消耗, 局限是相对偏移的地址只能在较小的区间内, 为进行软件覆盖测试时的探针插桩增添了障碍。所以在进行汇编程序的探针插桩前, 必须进行预处理。这是因为探测程序的加入使得原来目标程序的相对地址发生改变, 可能超出区间限制, 若不进行目标程序的预处理, 必然导致源被测程序的逻辑混乱。目标程序预处理的方法是将所有的短跳转改为相应的长跳转。

在汇编程序中, 宏调用因其执行速度快而常被采用。宏调用在编译时, 被完整地嵌入调用位置。若在宏里插入探针, 将导致程序规模的迅速膨胀。对于有时空约束的嵌入式软件将无法运行。预处理采用的方法是将宏调用改为等价的过程。

2.词法语法分析:

词法语法分析通常跟程序设计语言有关。词法分析负责将源程序中的若干字符划分为若干记号, 语法分析负责从若干记号中完成程序结构分析, 识别出函数体、语句、表达式、关键字、程序分支等。一般使用unix下的lex/yacc工具进行语法和词法分析。主要是建立一系列表格, 方便确定自动插桩的位置。

3.插桩技术:

一般来说, 对程序进行动态测试的时候, 基本上要使用程序插桩来进行覆盖测试。程序插桩使被测试程序在保持原有逻辑完整性基础上在程序中插入一些探针函数即插桩语句, 它是一个子过程调用, 调用的子过程能在运行到插桩点时记录下有关的运行情况。基于这些运行情况的分析, 可以获得程序执行过程中变量值的变化情况, 也可以用来检测程序的分支覆盖和语句覆盖等覆盖信息。

程序插桩的关键技术包括要探测哪些信息、在程序中什么部位设置探针、如何设计探针、以及探针函数捕获数据的编码和解码。

(1) 插桩位置:

插桩位置主要解决的是在哪儿插, 为此将程序按"块"划分, 探针主要插桩在其"路口"的位置[5]。在汇编中主要考虑四种位置:

插装定位示例于右.

(2) 插桩策略:

插桩策略主要解决的如何在程序中植入探针, 包括植入的位置和方法[4]。我们主要考虑块探针和分支探针。

块探针设计策略: (linear block) 又称"顺序块", 它是若干个相连顺序语句的序列集合。在程序的执行过程中, 它具有线性特征。若该线性块的第一条语句被执行, 则整个线性块都语句都执行了。这样我们仅在线性块的开始或末尾处插入一个探针即可这就避免了对每条语句都进行的冗余插装操作。

分支探针策略:所有进行TURE或FAULSE判断的语句。它是统计分支覆盖率的探针测试点。

(3) 插桩的过程:

首先在被测试的源程序中植入探针函数的桩, 即函数的声明。而插桩函数的原型在插桩函数库中定义。在目标文件连接成可执行文件时, 则必须连入插桩函数库。探针函数是否被触发就要依据插桩选择记录文件了, 要求不同的覆盖率测试会激活不同的插桩函数。

4.动态测试结果存储和分析

将测试结果进行存储和分析, 计算出本次程序运行时所得到的语句覆盖率和分支覆盖率。程序运行后, 将运行的动态信息写到缓冲区中。执行的相应的顺序块、分支和子程序设为1, 未执行的为0。这样通过对动态测试信息的分析和计算, 就可以将缓冲区中的内容翻译成我们所需的动态测试所需的覆盖信息。

将上面测试后得到的结果放到Tresult:={Tbcov, Tccov, Tlcov, Toutput}。其中Tbcov表示语句覆盖率, Tccov表示分支覆盖率Tlcov表示子程序覆盖率;Toutput表示程序运行的结果。期望值定义为:Aresult:={Abcov, Accov, Alcov, Aoutput}。其中, Abcov表示期望达到的语句覆盖率, Accov表示期望达到的分支覆盖率Alcov表示期望达到的子程序覆盖率;Aoutput表示程序运行的期望结果。

3.2 外部存储器访问记录

51单片机本身没有内存管理单元 (NIIVIU, memory management unit) 等硬件支持的内存管理, 同时因为片上资源紧张, 不可能提供内存管理的软件模拟。因此, 内存的使用依赖程序员的经验和恰当的系统分析保证安全性。系统对外部存储器的访问信息记录为开发人员进行内存使用诊断提供了方便。

51单片机对外部存储器的访问定制了指令MOVX, 因此, 在仿真器上对MOVX指令进行模拟的函数movx_xmem_c2s6p2 (.…) 的内部记录下该指令操作的片外RAM地址即可。如有需要还可以记录每一个内存单元被访问的次数以及访存操作是读操作还是写操作等细节。

3.3 时间性能分析

系统提供程序运行期的时间使用细节, 开发人员可以根据程序段之间的时间分配情况, 确定程序是否有错误或者是否需要优化。系统提供的时间分析结果为:模拟运行的时钟周期总数、每一个语句块总共执行的时钟周期数、每个块占用的时钟周期换算比例、直观的图表表示。

4. 实验结果

在实验中采用一个已投入使用的实用串口通信控制系统作为实验对象。在该系统中提取出64个可独立运行的子过程模块, 根据覆盖测试的需要, 为每个模块设计出多个测试用例对其进行覆盖测试 (由于每个模块的逻辑复杂程度以及输入参数的个数不一样, 因此设计的每个模块的测试用例数为18个至52个不等) 。对于每一个模块, 首先采用手工运行程序的方式计算出两种覆盖率指标, 再与本文实现的仿真测试平台上所得的两种覆盖率指标相比较, 从而验证本原型系统自动测试结果的正确性。

为该模块设计的其中一个测试用例为0、0、2、3、5, 在此测试用例下, 用手工运行程序的方式所推算得出的语句覆盖率和分支覆盖率指标分别为76.92%和58.33%, 在本文实现的测试平台上运行后, 其结果和手工运行结果一致, 如图二所示, 从而验证了本原型系统自动测试结果的正确性。但单个测试用例仍没有达到覆盖测试的最低标准。采用本文提出的融合多测试用例信息的方法对该模块做实验后, 得到的综合语句和分支覆盖率分别为94.08%, 和79.17%, 如图三所示。该指标均达到了覆盖测试的最低标准。

图四为进行该实验时, 我们的仿真测试平台原型系统运行时的时间性能信息查看窗口界面;图五为内存使用信息查看窗口界面:

5. 结束语

文中在基于汇编语言的流程图自动生成的基础上, 利用虚拟插桩的方法实现了系统的动态测试, 能够有效的计算出嵌入式软件测试系统的覆盖率, 同时给出了测试中的时间性能和内存使用情况, 基本上满足了国内基于汇编的嵌入式软件测试的要求。对一步研究多语言的嵌入式软件测试平台具有一定的积极意义。

摘要:随着嵌入式软件技术的发展, 如何对它进行快速有效的测试已经成为现在的一大热点。本文利用软件虚拟插桩的方法主要完成了嵌入式软件的语句和分支覆盖率的计算, 同时实现了内存分析和时间性能分析功能, 有效的解决了传统手工测试程序带来的一些问题, 基本满足了国内用户对嵌入式汇编进行测试的需求。

关键词:嵌入式系统,虚拟插桩,覆盖测试

参考文献

[1].郑人杰.计算机软件测试技术.清华大学出版社, 1990

[2].X.Wu, J.Jenny Li, D.Weiss.Coverage-based Testing on Embedded System[C].Proceedings of the Second International Workshop on Automation of Software Test, 2007:7-16.

[3].刘利枚, 周鲜成, 石彪.嵌入式软件测试系统的设计与实现[J].国外电子测量技术, 2008, 27 (1) :59-61.

[4].孙昌爱, 金茂忠.基于程序插装的动态测试技术实现.小型微型计算机系统, 2002, (12)

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【嵌入式测试】相关文章:

嵌入式测试平台08-05

嵌入式系统TEmb测试方法研究10-09

嵌入式ABS性能测试仪的研制09-13

嵌入式构建06-02

嵌入式网络06-25

嵌入式教育06-27

非嵌入式07-18

嵌入式程序09-01

嵌入式监测论文05-24

嵌入式生成代码05-31

上一篇:冲击转型发展下一篇:庄园经济