• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

嵌入式软件测试过程中的测试数据获取技术

发布: 2011-5-27 09:47 | 作者: 郭永振 周润松 翟艳芬 | 来源: 领测软件测试网采编 | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网

  1引言

  随着航空、航天、核电等领域嵌入式产品在信息化、体系化、自主化和智能化等方面的飞速发展,软件的规模越来越大、关键程度越来越高,软件的质量与可靠性已经成为影响产品质量与可靠性的重要因素。软件测试是目前普遍采用的提高软件质量的重要手段,是软件质量保证工作中的重要环节之一。测试数据获取是软件测试的首要前提,数据获取的准确性、实时性和可靠性对测试质量有决定性影响,是评估被测对象的稳定性、安全性以及技术指标满足用户需求的重要依据。

  2数据获取技术

  数据获取是通过软件、硬件等方式获取测试数据以评价软件质量的技术。根据测试数据的获取手段,可以将嵌入式软件测试的数据获取技术分为3种方式[1]:实际的物理通道;开发工具IDE的虚拟I/O功能;读取内存区数据。

  2.1 实际的物理通道

  若目标系统上含有可以外接的物理通道,如USB、I2C、I2S、SSI、SPI、UART、CAN、以太网、并口等接口,且使用这些物理通道对目标系统运行影响不大或者其影响可以接受时,可以将其作为测试通道使用。计算机含有USB、UART、以太网、并口等接口,在测试时可以直接使用这些物理通道与主机建立通信,实时获得目标系统产生的测试数据。其他的通道需要外配转换接口方能与计算机建立通信。当这些物理通道不能作为测试使用时,可以通过总线监听的方式直接从CPU的地址总线和数据总线上获取数据。

  实际的物理通道方式,数据获取真实准确,实时性好,较为有效,但需要测试人员深入了解目标系统。

  2.2 开发工具虚拟I/O

  嵌入式软件一般在交叉开发环境下开发,大多数嵌入式开发工具具备编译、链接、加载、调试等功能,有些高级的开发工具IDE具备虚拟I/O功能,给测试带来了很大的方便。比如: Tornado、TI CCS,在Tornado的shell中运行测试程序时,可以把printf的内容打印到消息窗口中;CCS可以支持fprintf,直接在主机上生成测试数据文件。

  开发工具虚拟I/O方式,数据获取简单容易,自动化程度较低,也有通过开发环境改造或者在开发环境上集成应用的途径,来提高测试数据获取的自动化程度。

  2.3 读取内存数据

  若目标系统没有可以供测试使用的物理通道,开发工具也不具备虚拟I/O功能,可以采用读取内存数据的方式。具体实现方法是开辟一块足够大的缓存区,测试时可以借助开发工具来加载含有测试脚本的程序,在目标系统运行的过程中把测试数据写入缓存区中,在测试过程中或者测试执行后,使用开发工具读取内存的功能把缓存区中的数据读取出来,在主机上保存成测试数据文件。

  读取内存数据方式,适用性广,但要求系统有足够的内存资源,当涉及到实时性测试时需要记录时间信息,对测试脚本的要求较高。

  3插桩技术

  插桩技术也叫软件打点技术,在保持被测试程序原有逻辑正确性的基础上,通过向程序中插入探测器,即信息采集的代码段(可以是赋值语句或采集程序运行信息的函数),来捕获测试数据,是一种侵入式的数据获取技术。依据插桩的阶段和对象不同,分为源代码插桩和目标代码插桩。源代码插桩会因编程语言或版本不同而有所差异,但语法、语义信息全面,利于进行准确的插桩分析;目标代码因代码语法和语义信息不完整,易造成对程序运行错误的定位、捕获和分析,插桩难度较大。

  程序插桩常用于实现覆盖测试,来检测程序的分支覆盖、条件覆盖、语句覆盖、修改的分支/条件覆盖(MC/DC);也可以用来捕获程序执行过程中变量的变化情况,得出程序的控制流信息、数据流信息以及效率特性等性能信息。进行插桩之前,需要明确要探测哪些信息,在程序的什么部位放置探测器,探测器的数量,探测器所带来的代码膨胀影响等。以利用脚本语言Fortran进行程序插桩为例,在一般情况下,探测器的位置放置于程序块的第一个可执行语句之前、有标号的可执行语句处、entry语句的前后、循环语句之后、条件语句之后、logical if语句之后、call语句之后、go to语句之后等。为方便测试的实现和管理,往往将探测器以函数调用的方式插入,并依据测试的目的不同将探测器分为不同类别,例如线性块探测器、分支探测器、模块探测器、时间探测器等。

  按照插桩实现的方式,主要有硬件采集方式的插桩、硬件收发方式的插桩以及纯软件方式的插桩。

  3.1 硬件采集方式

  硬件采集方式的插桩测试,需要在程序执行到插桩点时,通过外接的硬件采集器从目标板总线采集总线信号,并传输到测试用的计算机(以下称为宿主机),进而进行测试分析,是一种硬件与软件相结合的测试方法。其具体实现过程如图1所示。

  图1 硬件采集方式的插桩实现过程

  1) 预处理器对源代码进行预处理,如去掉注释行,将宏定义进行语义展开,生成中间代码;插桩器对中间代码进行插桩,生成插桩后的代码,并建立符号数据库以保存插桩标记等信息[4]。

  2) 插桩后的代码通过编译器翻译成汇编代码,汇编代码通过汇编器翻译成可重定位目标文件,可重定位目标文件再通过链接器进行链接,生成可执行目标文件。

  3) 可执行目标文件通过加载器加载到目标板中运行,当运行到探测点时,数据采集器读取目标板上控制总线的控制信号、地址总线的地址信号和数据总线的数据信号,并将原始的测试数据传送到宿主机,宿主机对原始测试数据进行处理生成初级测试数据。

  4) 测试数据管理器依照插桩标记等信息,对测试数据进行比较处理,得出最终的测试数据,如覆盖率信息、控制流信息、数据流信息以及效率特性等性能信息。

  3.2 硬件收发方式

  硬件收发方式的插桩是采用软硬件结合的方式,利用目标板上的通信资源,在软件源代码上插入包含程序运行状态的信息记录及其发送指令的探测器,在运行到插桩点时将测试数据传输到测试工具或宿主机上,进而进行测试分析的一种方法。硬件收发方式的插桩实现过程如图2所示,由于插入的探测器中含有发送程序运行状态的信息记录的指令,当运行到探测点时,可以直接通过物理通道将原始测试数据发送到测试工具或宿主机,不需要通过数据采集器来采集总线上的各种信号,大大降低了数据获取的难度和成本。

  图2 硬件收发方式的插桩实现过程

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 安全性 计算机 嵌入式 软件测试 技术指标

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网