基于仿真的嵌入式软件白盒覆盖测试系统设计

发布者:legend8最新更新时间:2010-08-09 来源: 单片机与嵌入式系统应用关键字:嵌入式系统  软件插装  覆盖测试  软件仿真 手机看文章 扫描二维码
随时随地手机看文章

引言

    随着嵌入式系统的广泛应用,人们对嵌入式系统软件的质量提出了更高的要求,而作为保证软件质量最有效手段的测试技术,也越来越受到关注。目前嵌入式软件的开发语言以C等高级语言为卞,因此,对这些高级语言的测试显得尤为重要,”。

    目前实用的嵌入式系统测试平台卞要由国外厂商开发,比较具有代表性的测试平台有T eleloglc公司的Logi-scope .M etrow erk、公司的CodeTest, Windriver公司的CoverageScope和IPL公司的C ant at a等。国外厂商的嵌入式系统测试平台功能较强,技术较先进,但一套测试系统价格往往高达数万到十多万美元,极大增加了嵌入式系统的开发成木,无法得到普遍的应用,影响了国内嵌入式系统的开发质量,2’。

    国内的嵌入式系统测试平台有基于目标开发的测试系统。电子科技大学研究了基于目标的嵌入式软件测试系统,实现了对汇编语言进行自动插装,并实现基木的覆盖测试功能。但由于嵌入式软件需要基于硬件电路进行调试,当软件程序写入硬件电路后,如果电路工作不正常甚至无法工作,则难以断定问题所在,这就限制了嵌入式软件测试必须按照先硬件后软件的模式进行,3’。

    木系统实现了基于仿真的嵌入式C语言软件覆盖测试分析。通过有效的词法语法分析、自动插装、测试用例的生成和加入、动态仿真运行及覆盖报告分析等模块对源代码进行覆盖分析,缩短了嵌入式系统开发周期,有效地解决了传统手工测试程序运行效率低、繁琐等问题,保证了嵌入式软件系统高效稳定的运行。

1嵌入式软件测试系统框图

    嵌入式软件测试系统的结构框图如图1所示。它卞要由5部分组成:程序的预处理过程(包括词法语法分析)程序的自动插装过程、测试用例的加入、动态仿真运行及覆盖报告分析,4,。

    被测试程序首先经过预处理。由于源程序中存在宏定义次件包含和条件编译等预处理命令,因此在进行词法分析前必须进行预处理,将宏展开,以利于查找变量词法分析是将预处理阶段产生的中间代码分解成单独的词的表示,语法分析是将输入字符串识别为单词符号流,卞要用来确定插装的位置,在一些关键的字段和函数处插

2功能模块设计

2. 1词法语法分析模块

    (1)预处理

    在源程序中,空白符测匕格符、回车符和换行符等编辑性字符除了出现在文字常数中之外,在别处任何地方出现都没意义,而注释部分出现在程序中的任何地方。对于这些不是程序必要组成的部分,预处理时可以将其剔掉,5’。

    ( 2)词法分析

    将预处理阶段产生的中间代码分解成单独词的表示,并将词的基木信息表,如词的行号、词的列号及词的类型等信息,为语法分析做准备。词的类型有:普通变量标识符擞字表、关键字表运算符表,6’。

    ( 3)语法分析

    语法分析的卞要任务是在词法分析识别出的单词符号串的基础上,分析并判断程序的语法结构是否符合语法规则。由于木系统分析的程序是经过嵌入式软件编译器编译的,因此认为不存在语法上的错误,只是通过语法分析得到程序结构及函数信息,为插装做准备。

2. 2插装模块

    程序插装概念由J.  G.  H uang教授首次提出,简单地说就是借助向被测程序中插入操作来实现测试目的。在调试程序时,常常要在程序中插入一些打印语句,希望执行程序时打印出所关心的信息。通过这些信息进一步了解执行过程中程序的一些动态特性。比如,程序的实际执行路径,或是特定变量在特定时刻的取值。从这一思想发展出的程序插装技术能够按用户的要求,获取程序的各种


2. 4覆盖率分析

    通过动态仿真运行模块,覆盖信息被写入文件中,读取存放记录文件,分别对语句块数和执行分支数进行计算。根据覆盖率公式,结合计算的结果,得到测试语句覆盖汾支覆盖与程序的有效代码率并GUI显示。将测试的结果与测试用例库生成的测试用例期望值作比较,得出测试结论,9’。

2. 4. 1语句覆盖率算法分析

    语句覆盖是软件测试中最基木的覆盖标准,因此在测试时应将每个语句至少执行1次。在 T estImp系统中得到语句覆盖率的算法流程如图3所示,通过词法分析后,读单独的词语,如遇到能产生分支的关键词(for .if .else .switch .goto .return .break .continue .do :`{”和“}’,)则继续往卜判断,否则返回继续读词语。如果是能产生分支的关键词,则将关键词对应的当前标号(flagif }flagelse .flagwhile,flagfor }flagswitch)推进栈中的account单元保存,并将当前标号加1。当读取到关键词之后第1个气”时,标志fflag加1,且判断是否大于1:如果大于1,则将此时的行号推入到栈当前位置中的mine单元中保存;否则直接返回读词。如果是+}”标号,则判断链表的节点是否大于。,如果是且为1,则用“}”当前行数减去保存栈中“{”的行数,然后减去最近嵌套内层的总行数即得到该层对应行数;如果链表节点大于1,则判断链表节点数与对应层数是否相等,如果相等则计算出该层的总行数,即用此时+}”行数减去栈中保存“{”的总行数,然后保存该层总行数,并用总行数减去最近嵌套内层行数之和,即得到该层行数对应记录。如果链表节点数与对应层数不相等,则将对应层数加1循环作判断。当所有的词语全部读取完毕后,读取动态执行时写入的插装文件,读取关键词标号,取对应关键词链表中的行数与总行数变量相加,直至插装文件读取完毕,此时可以输出被覆盖语句数。

2.4.2分支覆盖率算法分析

    分支覆盖率的计算一般也需要达到一定的指标。在T estImp系统中得到分支覆盖率的算法流程如图4


   该系统实现如卜几个模块:

    ①分析模块。用打开文件菜单选择要分析的源文件,并进行词法分析。在词法分析过程中,对关键词、符号擞字变量等用不同的标记,并去除源文件中的注释,给出每个词的行数和列数。语法分析并没有生成可见的语法树,只是形成提供插装的结构信息。

    ②插装模块。选择自动插装菜单,系统会读取词法语法分析的结果,根据图2算法流程实现对源程序的自动插装,插装点有for ,if ,else ,case ,goto ,return ,break ,con-tinue .do ,while语句后及程序开始与结束处插入记录函数指针,并在程序最后插入插装函数体。

    ③编译器配置模块。根据不同嵌入式软件选择不同的编译环境,该部分需在使用该系统之前对各种嵌入式编译软件进行配置,在木系统中有Visual C + + ,ARM编译器ADS ,Keil环境沛福环境,Borland C环境,DSP编译器CCS。

    ④覆盖率报告。木系统已实现的覆盖率报告有语句覆盖与分支覆盖,并将覆盖率通过二维图形形式体现。后续将实现条件覆盖、多条件判定覆盖、多条件覆盖,M C/DC潞径覆盖等覆盖率报告。

      C服告生成及帮助文档。将测试覆盖结果与测试前生成设定的覆盖率指标进行比较得到测试结果。如果覆盖率没有达到要求,则继续增加测试用例,以提高测试覆盖率。另外有帮助文档,提供使用说明、注意事项及应用范围等。

4实验结果

    在实验中,采用1个AT 89C51单片机键盘识别系统作为实验对象。在该系统中,通过AT 89C51的P1口连接1个4x4的知阵键盘,并通过P0. 4 } P0. 6所连接的74LS138扩展连接到型号位7SEG-MPXGCA的6位LED选通端上,可以显示所按卜键盘的编号,将RXD和T XD连接到串口。

    实验过程中,将测试源程序进行分析并自动插装,然后通过单片机的Keil编译器对插装后的源程序进行编译,得到.hex文件,添加到Proteus6. 9仿真软件原理图中的AT 89C51单片机中,点击运行按钮后可以执行程序。此时可以在Proteus6. 9界而中输入生成的测试用例,’。,,木实例中的测试用例是键盘按键的输入,只需点击Proteus6. 9原理图中的键盘。此时插装后的程序会将插装的信急通过串口传送到TestImp测试系统的联机串口传送界而中,并将其保存在指定文件中,为覆盖测试做准备。

    为该系统设计的基木测试用例是按卜单个1号键。在此测试用例卜,手工运行推算出语句覆盖率和分支覆盖率分别为55. 6%和42. 80}0 ,在测试系统运行后,得出的语句覆盖率和分支覆盖率分别为55. 6%和42. 8 0}o。测试结果如图5所示。

    实验结果表明:在特定的测试用例卜,对嵌入式系统应用木文设计的基于仿真嵌入式软件白盒覆盖测试系统与理论上推导出来的语句和分支覆盖率指标完全相同。

关键字:嵌入式系统  软件插装  覆盖测试  软件仿真 引用地址:基于仿真的嵌入式软件白盒覆盖测试系统设计

上一篇:建设电磁兼容实验室可量力而行
下一篇:智慧显示:触控技术的深度延伸

推荐阅读最新更新时间:2024-05-02 21:07

嵌入式系统面向低功耗的协同设计
摘要:在系统设计中,低功耗系统或低功耗协同设计系统并没作为一个整体在当前的研究中得到充分的重视。本文阐述在系统级设计中功耗的重要性,综述硬件低功耗、软件低功耗和通信低功耗的设计方法,并给出实现低功耗设计的一种可行方法。 关键词:协同设计 硬件低功耗 软件低功耗 功耗估计 1 概述 对于当今的各种电子设备尤其是嵌入式系统来说,功耗是一个非常重要的问题。系统部件产生的热量和功耗成比例,为解决散热问题而采取的冷却措施进一步增加了整个系统的功耗。为了得到最好的结果,在设计初级阶段就要尽可能地考虑低功耗问题。 由于现在大部分数字系统都利用CMOS电路,因此,本文提出的思路和探讨领域,主要指CMOS电路。在CMOS电路里,功耗由下式决定: Pt
[嵌入式]
基于Linux的Gameboy模拟器移植和优化研究
引言   面向A R M微处理器构架的嵌入式操作系统的使用量这些年持续增长,在各种嵌入式操作系统中, L inux是获得支持最多的第三大力量。   目前,ARM L inux支持包括ARM610、A RM710、ARM720T cores、ARM920T cores、StrongARM 110、StrongARM1100、XScale等系列的ARM处理器。   Gameboy是目前比较流行的8位掌上游戏机,通常被简称为GB,它的最终态Game Boy Color (GBC)是完全向后兼容的。Gnuboy是GB /GBC的软件模拟器,是一种自由软件,它是基于Qt系统的,能够运行几乎所有的黑白和彩色的GB /GBC游戏RO
[嵌入式]
基于嵌入式系统的SD卡接口设计
SD卡是一种基于半导体快闪记忆器开发的新一代记忆设备,目前 SD卡 被广泛应用于各种便携式装置上,一般重量约为2 g,拥有较好的安全性、移动灵活性、快速数据传输率和高记忆容量。许多嵌入式设备都选择使用SD卡以提高系统的稳定性、降低成本。   1 嵌入式系统的特点   因为嵌入式系统是一种特殊的计算机系统,所以它和计算机系统一样,由软件和硬件构成。以PC为代表的通用计算机系统和嵌入式系统相比,不同的嵌入式系统有不同的特点,但是其主要特点一样。   (1)嵌入式系统是一种专用计算机系统。嵌人式系统的软件和硬件是针对特定任务和应用对象进行设计的,具有较强的多样性和专用性。嵌入式系统所能够提供的功能,均可提前预知,相对较为固定。
[模拟电子]
基于<font color='red'>嵌入式系统</font>的SD卡接口设计
基于单片机的嵌入式系统网络接入方案
  引言   在网络技术应用日益广泛的今天,网络传输是最经济有效的 数据 传输方式。如何利用廉价的51 单片机 来控制网卡芯片进行数据传输,加载TCP/IP 协议 连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,采用发送小数据包的方式以避免分段,来简化TCP协议和UDP协议,实现互联接入。   硬件设计与实现    系统 的硬件结构框图如图1所示。本系统的微控制器是Winbond公司的78E58,网络接口芯片是与NE2000系列兼容的Realtek公司的RTL8019AS。RTL8019AS内置了10BASE-T收发器,外接一个隔
[网络通信]
Linux嵌入式系统设计的3个层次
  嵌入式系统设计有3个不同层次:    1. 第1层次:以PCB CAD软件和ICE为主要工具的设计方法。   这是过去直至现在我国单片机应用系统设计人员一直沿用的方法,其步骤是先抽象后具体。   抽象设计主要是根据嵌入式应用系统要实现的功能要求,对系统功能细化,分成若干功能模块,画出系统功能框图,再对功能模块进行硬件和软件功能实现的分配。   具体设计包括硬件设计和软件设计。硬件设计主要是根据性能参数要求对各功能模块所需要使用的元器件进行选择和组合,其选择的基本原则就是市场上可以购买到的性价比最高的通用元器件。必要时,须分别对各个没有把握的部分进行搭试、功能检验和性能测试,从模块到系统找到相对优化的方案,画出电
[嵌入式]
MP32处理器在定制嵌入式系统中实现MIPS辅助系统
MP32处理器是业界第一款100%兼容MIPS? 2.0体系结构的软核处理器,适用于我们的所有FPGA和HardCopy? ASIC。这一灵活的应用类处理器在您的定制嵌入式系统中实现了软件和工具MIPS辅助系统,您还可以使用ALTEra的嵌入式知识产权(IP)内核以及Qsys系统集成流程。通过这些设计资源,您可以加速开发高度集成的低成本、低功耗MIPS定制嵌入式系统。 特别是Qsys系统集成工具,利用它您能够集成单个或者多个内核MP32处理器和Altera的系列嵌入式视频和网络IP内核,以及您自己的定制IP,从而迅速方便的开发定制解决方案。 Altera一直与业界最好的供应商——Altera?嵌入式联盟合作,提供同
[单片机]
为何说电流分配对于整个嵌入式系统至关重要
的参考转换效率为80%。工程师可根据电源电流计算表的典型值进行电源系统的设计,并以最大值来进行校验。 再者,在设计电源系统时还得考虑模块的同步系数,即在同一时间内,参与消耗电流的器件的比例,一般为0.5~0.7,选取值根据实际的系统来决定。为保证电源系统的稳定性,我们可选取同步系数0.5,即同一时间内,系统中半数耗电模块的电流值取最大值,其它的取额定值来计算器功耗。 二、绘制电源树图 根据估计的电流,以及各电压等级电流的分配,绘制更加形象直观的树状图。 1、基本格式要求: 不同电压等级使用的线条颜色,若电压等级不在示例内,可以自定义线条颜色; 电源IC块中:第一行,电源芯片型号;第二行,输出电压,电流值;第三行
[电源管理]
嵌入式系统在大射电望远镜5米模型上悬索控制中的应用
摘要:介绍了ARM9和嵌入式实时操作系统μC/OS-II在大射电望远镜5米模型上悬索控制中的应用。介绍了基于ARM9处理器(Atmel公司的AT91RM9200)的触摸屏、LCD等电路的设计。分析了用AT91RM9200产生6路独立的PWM信号的方法。给出了在嵌入式实时操作系统μC/OS-II下的多任务应用软件的设计实例,并成功实现了六轴联动。   关键词:ARM9 μC/OS(MicroC/OS) RTOS 六轴联动 “大射电望远镜FAST(Five hundred meter Aperture Spherical Telescope)预研究”是中国科学院知识创新设计方案 。通过六根悬索驱动馈源舱完成馈源的大范围跟踪,保证馈
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

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