嵌入式软件测试系统的设计与实现_图文_第1页
嵌入式软件测试系统的设计与实现_图文_第2页
嵌入式软件测试系统的设计与实现_图文_第3页
嵌入式软件测试系统的设计与实现_图文_第4页
嵌入式软件测试系统的设计与实现_图文_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2008年 1月 271应用天地 中国科技核心期刊嵌入式软件测试系统的设计与实现3刘利枚 周鲜成 石 彪(湖南商学院计算机与电子工程系 长沙 410205摘 要 :随着嵌入式技术的发展 , 如何对它进行快速有效的测试已经成为现在的一大热点 。 本文提出了一种通用的嵌入 式软件测试系统的基本框架图 , 该测试系统分为五个功能模块 :功能测试模块 , 代码性能测试模块 , 数据分析和文档报告 模块和通信接口转换模块 。 并且使用程序插桩的方法 , 设计并实现了基于汇编的嵌入式自动测试系统 。有效的解决了传 统手工测试程序带来的一些问题 , 满足了国内用户对嵌入式汇编进行测试的需求 。 关键词 :嵌

2、入式系统 ; 程序插桩 ; 软件测试 中图分类号 :TP311. 5 文献标识码 :ADesign and implementation of system Shi Biao(Department of , Hunan Business College , Changsha 410205Abstract :With the embedded technology , how to test it quickly and effectively has become a hot problem. This paper introduces a basic f rame of the embedd

3、ed system which consists of five f unction module :f unction testing mod 2ule , code performance testing module , data analysis and document report module , and communication conversion module. Using the method of program instrumentation , this paper has designed and implemented the embedded softwar

4、e testing sys 2tem in assemble language . This method has solve the problem of traditional test based on handwork , and matched the user s demand for embedded testing system based on assemble language. K eyw ords :embedded system ;program instrument ;software testing3基金项目 :湖南省教育厅项目 (07C402 、 湖南省自然科学

5、基金项目 (06JJ50110 作者简介 :刘利枚 (19752 , 女 , 讲师 , 主要研究方向为软件测试 、 人工智能 。0 引 言随着越来越多的领域使用软件和微处理器控制各种 嵌入式设备 , 对日益复杂的嵌入式软件如何进行快速有效 的测试成了目前的一大关注的热点 。而传统的测试一般 采用手工的方式进行 , 效率低 、 效果差 , 存在漏洞和隐患 。本文提出了一种通用的嵌入式软件测试系统 , 并设计 和实现了汇编的嵌入式测试系统 , 该测试系统主要针对代 码进行性能测试 , 有效地解决了手工测试程序带来的一些 问题 。1 嵌入式软件测试的总体框架结构本文提出了一种通用的嵌入式软件测试系统

6、 , 它的总 体框架结构如图 1所示。图 1 嵌入式软件测试系统总体框架图 该测试系统由 5大模块 (子系统 组成 , 即功能测试模 块 、 代码性能测试模块 、 数据分析模块 、 文档报告模块和通95应用天地2008年 1月 271中国科技核心期刊信接口转换模块 。其中功能测试系统主要通过产生目标系统需要的测 试信号并接收其输出来判断目标系统软硬件在功能上是 否达到设计要求 , 主要属于黑盒测试 。代码性能测试系统主要通过对嵌入式系统软件部分 进行代码级的测试 , 如覆盖测试 , 追踪测试以及其它一些 性能分析等来判断软件设计是否存在缺陷 , 主要属于白盒 测试 。该框图的测试流程如下 :步

7、骤 1:测试用户通过图形化用户界面选择要完成的 功能是进行代码测试还是功能测试 ;步骤 2:系统根据用户的选择 , 自动生成相应的测试用 例 , 如果用户选择的是代码性能测试 , 系统还需对源代码 进行自动插桩 , 然后通过通信接口转换模块将数据传输到 目标系统中 ;步骤 3:目标系统运行后 , 将得到的测试结果又通过通 信转换模块反馈到数据分析和文档报告模块 ;步骤 4:数据分析和文档报告模块将接收的数据进行 分析 , 生成通用格式的测试报告 , 并将图形化的测试结果 以图像对象的方式插入测试报告中 , 最后将结果返回给 用户 ;步骤 5:用户再根据测试是否满足要求 , 再调整测试参 数 。

8、 如果没有满足就进入步骤 1, 如果满足了则测试结束 。2 基于汇编的嵌入式软件测试系统本文还设计与实现了基于汇编的嵌入式软件测试系 统 , 它的结构框图如图 2所示 , 它主要由 4部分组成 :程序 的插桩过程 (包括预处理和词法语法分析 、 测试用例的生 成和加入 、 环境。图 2 基于汇编的嵌入式测试系统框图 被测试程序经过预处理后 , 进行语法词法分析 , 从而 确定插桩函数的位置 , 在一些关键的字段和函数处插入插 桩的桩 , 然后编译生成含有插桩函数的目标文件 。在动态 测试的集成环境中 , 用户选择需要测试类型 (分支覆盖还 是语句覆盖 , 相应的生成 1个插桩记录文件 , 里面

9、记录了 该测试类型中的所有函数的位置或者 ID 号 , 并且自动生 成相应的测试用例 。根据插桩选择记录文件激活相应的 插桩函数 。 系统运行后 , 将得到的信息返回给测试机 , 就 能将测试结果记录到事先确定的缓冲区或文件中 。测试 人员就能根据测试结果与期望值相比较来判定覆盖情况 是否满足要求了 。 若不能满足要求 , 就利用工具进行覆盖 情况分析 , 找出未覆盖目标 , 根据控制流图 , 找出到达此目 标的路径 , 依据此路径上各分支节点要到达此目标应满足 的条件 , 设计新的测试用例 (当然 , 有些目标很难覆盖或根 本不可能覆盖 , 以增加覆盖率 , 最后将结果以 GU I 的形式显

10、示 。211 预处理预处理部分主要是完成宏替换和将相应的短跳转转 换成长跳转 1。汇编程序中大量采用短跳转 , 即仅用 1个 8位 B YTE 表示相对的偏移地址 。 在进行汇编程序的探针插桩时 , 使 得原来目标程序的相对地址发生改变 , 可能超出区间限 制 , 因此在插桩前就需进行预处理 。目标程序预处理的方 法是将所有的短跳转改为相应的长跳转 。在汇编程序中 , 宏调用因其执行速度快而常被采用 。 若在宏里插入探针 , 将导致程序规模的迅速膨胀 。对于有 时空约束的嵌入式软件将无法运行 。预处理采用的方法 是将宏调用改为等价的过程 。2. 2 词法语法分析词法语法分析通常跟程序设计语言有

11、关 。词法分析062008年 1月 271应用天地中国科技核心期刊负责将源程序中的若干字符划分为若干记号 , 语法分析负 责从若干记号中完成程序结构分析 , 识别出函数体 、 语句 、 表达式 、 关键字 、 程序分支等 。 一般使用 unix 下的 lex/yacc 工具进行语法和词法分析 。主要是建立一系列表格 , 方便 确定自动插桩的位置 2。2. 3 插桩技术一般来说 , 对程序进行动态测试的时候 , 基本上是使 用程序插桩来进行覆盖测试 3。 程序插桩使被测试程序在 保持原有逻辑完整性基础上在程序中插入一些探针函数 即插桩语句 , 它是一个子过程调用 , 调用的子过程能在运 行到插桩

12、点时记录下有关的运行情况 。基于这些运行情 况的分析 , 可以获得程序执行过程中变量值的变化情况 , 也可以用来检测程序的分支覆盖和语句覆盖等覆盖信息 。程序插桩的关键技术包括要探测哪些信息 、 在程序中 什么部位设置探针 、 如何设计探针 、 以及探针函数捕获数 据的编码和解码 。(1 插桩位置 :插桩位置主要解决的是在哪儿插 , 划分 , 探针主要插桩在其 要考虑 4种位置 : 程序的开始 STAR T : :线性块 转移指令之前 ; J MP condition L AB EL1 . 标号之前 ; L AB EL 1: . 程序的出口 。 RETEND插装定位示例于右 。(2 插桩策略

13、:插桩策略主要解决的如何在程序中植入探针 , 包括植 入的位置和方法 5。 我们主要考虑块探针和分支探针 。块探针设计策略 :(linear block 又称 “ 顺序块” , 它是若 干个相连顺序语句的序列集合 。若该线性块的第一条语 句被执行 , 则整个线性块都语句都执行了 。这样我们仅在 线性块的开始或末尾处插入一个探针即可 , 这就避免了对 每条语句都进行的冗余插装操作 。分支探针策略 :所有进行 TURE 或 FAUL SE 判断的 语句 。 它是统计分支覆盖率的探针测试点 。(3 插桩的过程 :首先在被测试的源程序中植入探针函数的桩 , 即函数的声明 。 而插桩函数的原型在插桩函数

14、库中定义 。在目 标文件连接成可执行文件时 , 则必须连入插桩函数库 。探 针函数是否被触发就要依据插桩选择记录文件了 , 要求不 同的覆盖率测试会激活不同的插桩函数 。2. 4 动态测试结果存储和分析将测试结果进行存储和分析 , 计算出本次程序运行时 所得到的语句覆盖率和分支覆盖率 。程序运行后 , 将运行 的动态信息写到缓冲区中 。执行的相应的顺序块 、 分支和 子程序设为 1, 未执行的为 0。 这样通过对动态测试信息的 分析和计算 , 就可以将缓冲区中的内容翻译成我们所需的 动态测试所需的覆盖信息 。将上面测试后得到的结果放到 Tresult :=Tbcov , Tc 2cov , T

15、lcov , Toutput。 其中 表示语句覆盖率 , Tc 2cov 表示分支覆盖率 , Tlcov ; Toutput:=Abcov,表示期望达到的语, Alcov 表示 ; Aoutput 表示程序运行的期望 。3 结束语本文针对目前嵌入式系统测试这个热点问题 , 提出了 一种实用的嵌入式软件动态测试系统的结构框架 , 并且按 照这个思路实现了基于汇编的嵌入式软件的代码性能测 试系统 。 下一步工作就是开发一个嵌入式软件的通用测 试平台 , 能够同时对多种语言开发的嵌入式系统进行代码 和功能测试 。参 考 文 献1王璞 , 张臻鉴 , 王玉玺 . 基于覆盖的软件测试技术在实时嵌入式软件中的应用研究 J.计算机工程与设计 ,1998,19(6 :45249.2汪文勇 , 王学东 , 向渝 , 等 . 汇编嵌入式软件程序流程图自动 生 成 的 研 究 J .计 算 机 科 学 , 2005, 32(2 :1732175.3王学东 , 汪文勇 . 汇编程序覆盖测试中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论