(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(计算机应用技术专业论文)一种嵌入式软件自动化测试系统的设计与实现.pdf.pdf 免费下载

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

文档简介

! ! 薹 摘要 随着计算机硬件和软件技术的飞速发展,嵌入式系统的硬件规模和性能得到 了极大的提高,相应的,嵌入式系统软件和应用软件的复杂性和规模也日益提高, 同时嵌入式系统的特殊性决定了运行在其上的系统和应用软件必须精简高效,稳 定可靠,使得软件的开发在整个嵌入式系统开发的中的比重越来越高,软件的质 量对整个产品的质量起到了决定性的作用。因此我们迫切需要一种针对嵌入式领 域的测试工具来提高软件的质量和可靠性,缩短软件的开发周期。 当今软件的自动化测试技术是软件测试技术研究的热点之一。随着软件技术 的发展,程序的规模逐渐增大,复杂度也逐渐提高。在软件的开发过程中,完全 依靠人力进行分析测试效率太低,而且不能保证软件质量。在我国,软件测试及 其自动化技术的研究尚处于初级阶段。 本课题的目标就是设计并实现一种嵌入式软件自动化测试系统。本课题在对 当今嵌入式软件测试现状进行了细致分析的基础上,对嵌入式软件的自动化测试 作了深入研究,结合实际情况,提出了种针对c 语言的嵌入式软件自动化测试 系统的解决方案,突破了源码分析、测试用例自动生成和执行、覆盖测试、测试 报告自动生成等多项关键技术,设计实现了这种在功能、性能上都能满足当今大 多数需求的嵌入式软件自动化测试系统。 关键词:嵌入式软件、自动化测试、测试用例、覆盖测试 鲤! 堡垒堕 a bs | 玎r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rh a r d w a r et e c h n o l o g y , t h es c a l ea n d c a p a b i l i t yo f h a r d w a r eo f e m b e d d e ds y s t e mh a sb e e ng r e a t l yi m p r o v e d a c c o r d i n g l y , t h e c o m p l e x i t ya n ds c a l eo fs y s t e ms o f t w a r ea n da p p l i c a t i o ns o f t - w a r eo fe m b e d d e ds y s t e m a l s og r o wi n c r e a s i n g l y s i m u l t a n e o u s l yt h es p e c i a l i t yo fe m b e d d e ds y s t e ma s k sf o r e m b e d d e ds o f t w a r eb e i n gm 0 1 1s m a r ta n dr e l i a b l e t h e r ei sn od o u b tt h a tt h er & do f s o f t w a r ep l a y sam o r ea n dm o l li m p o r t a n tr o l ei nr & do ft h ew h o l ee m b e d d e ds y s t e m t h eq u a l i t yo fs o t t w a r ep l a y sad e c i s i v er o l e s ow en e e dat e s tt o o ld e s i g n e df o r e m b e d d e dd o m a i nt oi m p r o v et h eq u a l i t ya n dr e l i a b i l i t yo fs o f t w a r ea n ds h o r t e nt h e d e v e l o p m e n tc y c l e n o w a d a y s ,t h et e c h n o l o g yo fs o f t w a r ea u t ot e s t i n gh a sb e c o m eo n eo ft h eh o t s p o t s o fs o f t w a r et e s t i n gt e c h n o l o g yr e s e a r c h i n g t h es c a l eo fs o f t w a r ei sg e t t i n gl a r g e ra n d l a r g e r 、i t l lt h ed e v e l o p m e n to fs o f t w a r et e c h n o l o g y , a n dt h ec o m p l e x i t yo fs o f t w a r ei s i n c r e a s i n ga c c o r d i n g l y i nt h ep r o c e s so fs o t t w a r ed e v e l o p m e m ,i fp e o p l et e s ts o f t w a r e b yh a n d ,t h ee f t i c i e n c yi sv e r yl o w , a n dc a n tf u l l yg u a r a n t e ei t sq u a l i t y i nc h i n a ,t h e r e s e a r c h i n go fs o f t w a r ea u t ot e s t i n gt e c h n o l o g yi si np r i m a r yp h a s ec u r r e n t l y t h et a r g e to ft h i ss u b j e c ti st od e s i g na n da c c o m p l i s ha na u t o m a t e dt e s t i n gs y s t e m f o re m b e d d e ds o f t w a r e b a s e do i lt h ea n a l y s i so fs t a t u sq u oo fe m b e d d e ds o f t w a r e t e s t i n ga n di n - d e p t hr e s e a r c ho fa u t o t e s t i n go fe m b e d d e ds o f t w a r e ,w eb r i n gf o r w a r da s o l u t i o na b o u ta u t o m a t e dt e s t i n gs y s t e mf o re m b e d d e ds o f t w a r eo fc - l a n g u a g e t h e nw e h a v eb r o k e nt h r o r 【曲s e v e r a lk e yt e c h n o l o g i e sa n da c c o m p l i s h e da na u t o m a t e dt e s t i n g s y s t e mf o re m b e d d e ds o f t w a r e ,w h o s ef u n c t i o na n dp e r f o r m a n c ec a ns a r i s 母o u rm o s t r e q u i r e m e n t k e yw o r d s :e m b e d d e ds o f t w a r e 、a u t o t e s t 、t e s tc a s e 、c o v e r a g et e s t i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:皇孽查日期:z 。6 年f 月( 1 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:速查导师签名:缪 日期:zo 。6 年f 月9 日 第一章引言 1 1 课题背景 第一章引言 嵌入式软件作为计算机软件的重要分支,已经在消费电子产品、交通系统、工 业控制、医疗设备和军事领域等应用越来越广泛。随着嵌入式技术的发展,嵌入 式应用的不断增长以及嵌入式系统复杂性的不断提高,要求嵌入式软件的规模和 复杂性也不断提高,嵌入式软件的质量和开发周期对产品的最终质量和上市时间 起到决定性的影响,嵌入式软件的开发、分析与测试成为了当今研究的热点。 随着计算机硬件技术的进步,硬件的集成度越来越高,从而使嵌入式设备的硬 件性能得到了极大的提高;与此同时,通过采用成熟的商用操作系统,使系统运 行在一个高性能的、可靠的软件平台上,为实现各种大型的复杂的应用打下了良 好的基础。面对系统复杂性的增加,自然需要功能强大、性能稳定的应用软件与 之相适应。所以,在嵌入系统开发中软件的规模也越来越大。同时,系统又要求 应用也要精简高效、稳定可靠,使软件的开发在整个系统开发中所占的时间也越 来越长,软件的质量对产品的最终质量起到了决定性的作用。但是事实上由于软 件的开发缺乏科学的管理手段,开发的软件得不到很好的测试与分析,所编写的 程序没有得到有效的测试就交付给用户使用。那些没有运行过的代码带着潜在的 危险交付到客户手中,经常会给用户带来巨大的经济损失,为产品供应商带来信 誉上的损失,在一些特殊的领域甚至会危及人的生命安全。 综上所述,随着嵌入式系统的发展,我们迫切需要一种测试系统能够在软件开 发的单元阶段、集成阶段、系统阶段等各阶段对嵌入式系统的软件进行实时在线 的测试与分析,以保证软件的质量和可靠性。 1 2 课题综述 本课题来源于某研究所和北京科银京成技术有限公司合作开发的有关嵌入式 软件洳试方面的项目。 本课题主要研究对嵌入式软件进行分析测试的先进技术和质量评价的科学方 电子科技大学硕士学位论文 法,结合北京科银京成技术有限公司的嵌入式集成开发工具l a m b d a 以及覆盖测试 工具g a m m a c p ,设计并实现了一种针对c 语言的嵌入式软件自动化测试系统。该 系统打破了传统的嵌入式软件测试方法,提供一个方便的自动化测试过程,支持 团队测试,并最终给用户直观的测试结果。国内在这方面的研究不多,目前尚无 同类型同级别的专业级嵌入式软件自动化测试系统面世。 本课题从原型研制到正式立项,再到正式发布共历时将近一年,本人参与了该 课题研发的全过程。开发过程严格按照软件开发标准组织和实施,包括原型研制、 申请立项、需求分析、概要设计和详细设计、单元实现和测试、集成实现和测试 以及系统测试等主要过程。 作为本课题组的主要成员之一,本人在课题中主要的工作是: 阅读并分析了大量有关嵌入式测试方面的技术资料和相关论文,对测试采 用的通用方法进行详细的讨论和分析; 参与设计了该系统的整体框架和模块划分: 设计并实现了源码自动分析模块,完成对被测软件源码的信息提取; 设计并实现了测试用例自动执行和数据采集模块,收集测试结果; 在该系统上集成覆盖测试工具g a m m a c p ,支持覆盖测试; 1 _ 3 章节安排 第一章介绍了本课题的背景和作者的主要工作; 第二章介绍了本课题所涉及的一些基本概念、国内外最新动态以及一些主流产 品的分析,以便研究能够深入进行; 第三章详细介绍了本课题技术路线、功能需求与总体框架; 第四章详细阐述了源码自动分析的设计和实现,并对源码自动分析的结果作了 说明; 第五章细致描述了测试用例自动执行和数据采集的设计思路和实现方法; 第六章介绍了g a m m a c p 在本系统上集成,实现覆盖测试的实施过程和方法; 第七章介绍了本系统的测试过程,并总结课题,对下一步工作进行了展望; 最后是参考文献和致谢。 第二章嵌入式软件测试研究综述 第二章嵌入式软件测试研究综述 2 1 嵌入式软件测试概述 软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计一批 测试用例( t e s tc a s e ,即输入数据和预期的输出结果) ,并利用这些测试用例去运 行程序,以发现错误的过程。软件测试是软件质量保证的关键步骤,是软件工程 研究领域的重要内容。 随着嵌入式系统复杂程度越来越高,嵌入式软件的测试正面临前所未有的挑 战。大多数软件测试方法和工具都可以直接或间接地用于嵌入式软件的测试,但 是由于嵌入式系统的自身特点,如实时性、内存不丰富、i o 通道少、开发工具昂 贵、与硬件紧密相关、c p u 种类繁多等等,嵌入式软件的开发和测试策略也就与 一般商用软件的开发和测试策略有了很大的不同。 2 1 1 嵌入式软件测试的环境 嵌入式软件与其他软件相比,它具有专用性,它只能在需求所指定的硬件平台 上运行。并且嵌入式软件的开发环境和运行环境是不一致的,因此即使宿主机环 境下测试再充分,也不能说明在目标机环境下运行该软件就不出问题。因而,嵌 入式软件还面临着目标环境的测试。这不仅增加了测试的代价,而且还带来了嵌 入式软件的测试策略问题,即哪些测试分配到宿主机环境进行,哪些测试分配到 目标机环境下进行。 嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大 化,避免目标系统的瓶颈,使用在线仿真器节省昂贵的日标资源。嵌入式系统开 发环境被认为是主机平台,软件运行环境为目标平台。相应的测试为h o s t t a r g e t 测试或c r o s s t e s t i n g 。 通常在主机环境执行多数的测试( 即h o s t h o s t ) ,只是在最终确定测试结果和 最后的系统测试才移植到目标环境,这样可以避免发生访问目标系统资源上的瓶 颈,也可以减少在昂贵资源如在线仿真器上的费用。另外,若目标系统的硬件由 电子科技大学硕士学位论文 于某种原因而不能使用时,最后的确认测试可以推迟直到目标硬件可用,这为嵌 入式软件的开发测试提供了弹性。设计软件的可移植性是成功进行h o s t t a r g e t 的 先决条件,它通常可以提高软件的质量,并且对软件的维护大有益处。有效采用 h o s t t a r g e t 测试策略可极大地提高嵌入式软件开发测试的水平和效率,提高嵌入 式软件的质量。 2 1 2 嵌入式软件测试的分类 依照通用软件测试的分类标准,嵌入式软件测试也可以分为多种不同的类型。 2 1 2 1 按阶段分类 按测试阶段可以把嵌入式软件测试分为单元测试、集成测试、确认测试和系统 测试。 单元测试( u n i tt e s t i n g ) :完成对最小的软件设计单元的验证工作,只有在完 成该部分工作的基础之上才能保证后续的测试工作的顺利进行。单元测试主要 是用来保证单元的最大覆盖率以及发现编码和详细设计中的错误; 集成测试( i n t e g r a t i o nt e s t i n g ) :是把经过单元测试的模块按软件的结构组合在 一起作为一个系统或一个子系统来综合测试。集成测试的主要任务是用来发现 程序的架构和体系结构设计方面的错误: 确认测试( v a l i d a t i o n t e s t i n g ) :是把软件系统作为一个单一的执行实体而进行 的需求有效性测试。其目的是验证我们的软件是否满足所有的功能、行为和执 行要求; 系统测试( s y s t e mt e s t i n g ) :将系统的测试软件系统和其它资源( 硬件、人机 交互信息资源和数据库等) 都综合起来构成完整的计算机应用系统进行测试, 是用来确保整个系统的性能、执行强度、安全性和功能都达到了我们的要求。 按阶段划分的各个测试阶段之间的关系如图2 - 1 所示 第二章嵌入式软件测试研究综述 轼件 筒求 托他系 统元索 基苌:! 二燃:独状:二! : 一嘣黼u 斛l 幔心硎一 图2 - 1 软件测试各个阶段之间的关系 在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带 来问题。软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成 或维护阶段加入了新的模块。当软件中所含错误被发现时,如果错误跟踪与管理 系统不够完善,就可能会遗漏对这些错误的修改:而开发者对错误理解的不够透 彻,也可能导致所做的修改只修正了错误的外在表现,而没有修复错误本身,从 而造成修改失败;修改还有可能产生副作用从而导致软件未被修改的部分产生新 的问题,使本来工作正常的功能产生错误。同样,在有新代码加入软件的时候, 除了新加入的代码中有可能含有错误外,新代码还有可能对原有的代码带来影响。 因此,每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是 否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充 新的测试用例来测试新的或被修改了的功能。这就是软件的回归测试f r e g r e s s i o n t e s n 。 回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大 的工作量比重,软件开发的各个阶段都会进行多次回归测试。 2 1 2 2 根据测试时是否运行被测程序分类 根据测试时是否运行被测试的程序,软件测试技术还可分为静态测试方法和动 态测试方法。 静态测试方法:它的主要特征就是不运行被测试的程序,主要采用检查、技 术复审和代码静态分析来检查被测软件的错误,对于嵌入式软件来说该测试只需 裂 电子科技大学硕士学位论文 在主机上进行就可以了; 动态测试方法:使被测代码在相对真实环境下运行,从多角度观察程序运行 时能体现的功能、行为和结构等,并从中发现错误。对于嵌入式软件来说,为了 保证测试的真实性,一般要求在目标机环境中进行。 2 1 2 3 从测试是否针对系统的内部结构和逻辑处理过程分类 从测试是否针对系统的内部结构和逻辑处理过程,通常可分为:黑盒测试与白 盒测试。 黑盒测试 黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试。它必须依靠 能够反映这一关系和程序功能的需求规格说明书来考虑测试用例和推断测试结果 的正确性,即所依据的只能是程序的外部特性。因此黑盒测试是从用户观点出发 的测试。黑盒测试方法包括等价类划分、边值分析、因果图和正交设计等基于软 件功能的测试技术。黑盒测试示意如图2 - 2 所示。 ;髂水 输入 二j u 蚌f t = j 输f 图2 2 黑盒测试示意图 在进行嵌入式软件黑盒测试时,要把系统的预期用途作为重要依据,根据需 求中对负载、定时和性能的要求,判断软件是否满足这些需求规范。为了保证测 试正确进行,需要特别检验与硬件之间的接口。嵌入式软件黑盒测试的一个重要 方面是极限测试。在使用环境中,通常要求嵌入式软件的失效过程要平稳,所以, 黑盒测试不仅要检查软件工作过程,也要检查软件失效过程。 白盒测试 白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试。采用这- - n 试 方法,测试者可以看到被测的源程序,可用以分析程序的内部构造,并且根据其 6 第二章嵌入式软件测试研究综述 内部构造设计测试用例,这时测试者可以完全不顾程序的功能。白盒测试方法又 包括逻辑覆盖、符号测试、路径分析、程序插桩和程序变异等基于软件内部结构 的测试技术。白盒测试示意图如图2 3 所示。 图2 - 3 白盒测试示意图 白盒测试与代码覆盖率密切相关,可以在白盒测试的同时计算出测试的代码 覆盖率,保证测试的充分性。由于严格的安全性和可靠性的要求,嵌入式软件测 试同非嵌入式软件测试相比,通常要求有更高的代码覆盖率。在软件工程的测试 中有一颇为实用的覆盖准则,即当语句覆盖率1 0 0 ,分支覆盖率 8 5 时,认为 测试是理想的,软件错误可查出近9 0 ,且允许时间和空间的消耗。日本日立公 司和美国空军均采用此标准。 2 1 3 嵌入式软件测试的主要评测方法 测试的主要评测方法包括质量和覆盖。质量是对测试对象的可靠性、稳定性以 及性能的评测。质量评测是建立在对测试结果的评估和对测试过程中确定的变更 请求( 缺陷) 分析的基础上。测试覆盖是对测试完全程度的评测,它建立在测试 覆盖基础上,测试覆盖是由测试需求和测试用例的覆盖或已执行代码的覆盖表示 的。 2 1 t 3 1 质量评测 在硬件的可靠性设计中,有一条基本原则“简单就是可靠”。这个原则同样也 适合软件,与功能的增多或增强相伴的是不断升级与补丁。软件质量是多种因素 电子科技大学硕士学位论文 的混合体,或者说是多种因素的综合体。这些因素可能因不同的应用方面和不同 的用户观点而有所变化。影响软件质量的因素可以分为两大类:一类是可直接度 量的因素,例如,单位时间内每千行源代码所发现的错误个数;另一类则是只能 间接度量的因素,例如,可复用性、可维护性等。不论哪一类,都必须能够度量, 都应能以具体数据表达软件质量的不同方面。 2 1 3 2 覆盖评测 覆盖测试是软件白盒测试的主要方法。众所周知,在一个软件产品中,如果存 在某些从来没有被执行过的代码,那么这个软件的质量是不可靠的,在那些从来 没有被执行过的代码中很可能存在着足以使整个软件崩溃的b u g ,而没有被发现。 覆盖测试的目的就是让软件的所有代码都被执行过至少一次,力争在测试过程 中发现那些隐藏的非常隐秘的b u g ,从一定程度上确保软件的可靠性。 衡量覆盖测试好坏的标准就是覆盖率,覆盖率越高,则我们认为测试所达到的 效果越好。足够高的覆盖率可以增强我们对被测软件的信心。覆盖率代表测试过 程中被执行的程序对象的百分比。覆盖率是按照下面的公式计算的: 程序中的基本对象有三种 语句s t a t e m e n t 分支b r a n c h 决策d e c i s i o n 对于每一种被测对象的覆盖率可以从程序、文件、函数和对象四个级别进行 衡量,由此,有如下四种覆盖率: 对象覆盖隋况 程序覆盖率 文件覆盖率 函数覆盖率 程序覆盖率是指测试所达到的程序一级的覆盖率,例如:“x x x 测试对x x x 8 第二章嵌入式软件测试研究综述 程序的语句覆盖率达到了9 0 ”。该指标是测试过程中测试人员最关心的一个指 标。 文件覆盖率是指测试对程序中的单个文件的覆盖率,同一个测试下,不同的文 件将会有不同的覆盖率,例如:“x x x 测试对x x x 文件的分支覆盖率达到了8 0 ”。 函数覆盖率是指测试对单个函数的覆盖率,同一个测试下,不同的函数将会有 不同的覆盖率,例如:“x x x 测试对x x x 函数的决策覆盖率达到了6 0 ”。 2 2 嵌入式测试工具 目前市面上主流的嵌入式测试工具从实现形态上可分为纯软件、纯硬件和软硬 结合三种类型。下面我们对这三种测试工具的原理和优缺点进行简要的描述。、 2 2 1 纯软件测试工具 目前市面大多数测试工具都采用了纯软件的实现方式,其中常见的包括 t e l e l o g i c 公司的l o g i s c o p e 、w i n d r i v e r 公司的c o v e r a g e s c o p e 和i p l 公 司的c a n t a t a 等等。 纯软件的测试工具采用的是软件插桩技术,在被测代码中插入一些函数,用这 些函数来完成数据的生成,并上送数据到目标系统的共享内存中。同时在目标系 统中运行一个预处理任务,完成这些数据的预处理,将处理后的数据通过目标机 的网口或串口上送到主机平台。这一切都需借助于目标处理器完成。通过以上过 程,测试者得以知道程序当前的运行状态。纯软件的测试方式有两个必然存在的 特点插桩函数和预处理任务。 由于插桩函数和预处理任务的存在,使系统的代码增大,对系统的运行效率也 有一定的影响。函数本身要有它的实现过程,它要完成数据的生成和暂存,而且 这些函数在它的实现过程中还可能被其它优先级更高的中断程序所中断,预处理 任务需要占用目标系统c p u 处理时间、共享内存和通信通道完成数据的处理、 数据的上送。由于这些弊端的存在,当采用纯软件测试工具对目标系统进行测试 时,用户目标系统是在一种不真实的环境下运行的,它不能对目标系统进行精确 的性能分析。做覆盖率分析的时候,大量的插桩会影响系统的运行, 所以用它做覆盖率分析时应尽量控制桩点的数量和执行次数。 9 电子科技大学硕士学位论文 2 2 2 纯硬件测试工具 最常用的纯硬件测试工具是逻辑分析仪。逻辑分析仪通过监控系统在运行时总 线上的指令周期,并以一定的频率捕获这些信号,通过对这些数据分析,了解用 户系统的工作状态,判断程序当前运行的状况。由于它使用的是采样的方式,难 免会遗失一些重要的信号,同时,分析的范围也极其有限。以性能分柝为例,当 使用某种逻辑分析仪进行性能分析时,只能以抽样的方式,对有限的函数做性能 分析,很难得出满意的结果。 当对程序做覆盖率分析时,因为硬件工具是从系统总线捕获数据的,如当 c a c h e 打开我们会采用指令预取技术,从外存中读一段代码到一级c a c h e 中, 这时逻辑分析仪在总线上监视到这些代码被读取的信号,就会报告这些代码已经 被执行了,但实际上被送到c a c h e 中的代码可能根本没有被命中。为了避免这 种误差必须把c a c h e 关闭掉,而c a c h e 关掉就不是系统真实的运行环境了,有 时甚至会由于c a c h e 关闭而导致系统无法正常运行。 2 2 3 软硬结合测试工具 软硬结合测试工具能够充分利用纯软件测试工具和纯硬件测试工具的优点,同 时摒弃它们的缺点,是理想的嵌入式测试工具。 c o d e t e s t 是一个硬件辅助软件的测试与分析工具,c o d e t e s t 一方面吸取软件 插桩技术,并对这种技术进行了改善,纯软件工具插入的是一个函数,而c o d e t e s t 插入的是一条赋值语句,它执行的时间非常短,同时避免了被其它的中断所中断, 所以它对目标系统的影响非常小。另一方面,c o d e t e s t 从纯硬件的测试工具那里 吸取了从总线捕获数据的技术并且对它进行了改善,c o d e t e s t 不再是采样的方式, 它是通过监视系统总线,当程序运行到插入的特殊点的时候才会主动的到数据总 线上把数据捕获回来,因此,c o d e t e s t 可以做到精确的数据观察。 具体实现上,程序员编写的源代码首先会通过c o d e t e s t 的编译驱动器调用原 编译器对其进行预编译,然后c o d e t e s t 的插桩器对预编译好的源代码进行自动的 插桩,即在需要插桩的关键位置写入一条赋值语句( 如c t r t = o x 7 4 1 0 0 0 0 9 ) ,并把插 入的标记送入一个数据库文件中生成一个符号数据库暂存起来,以备以后分析时 调用。当程序在目标系统运行到桩点位置时,目标板的控制总线和地址总线上会 出现相应的控制信号和地址信号。当辅助硬件信号捕获探头从控制总线和地址总 第二章嵌入式软件测试研究综述 线上监视到符合以上条件的信号时,c o d e t e s t 会主动地从数据总线上把数据捕获 回来送到c o d e t e s t 的内存中暂存并对这些数据进行预处理,然后将预处理后的数 据通过局域网送到工作平台上。通过与前面生成的符号数据库中的数据进行比较, 就此得知当前程序的运行状态,执行对嵌入式软件的性能分析,高级覆盖率分析, 内存分析和大容量的代码跟踪。 c o d e t e s t 对软件插桩技术和总线数据捕获技术进行了改善和提升,这种优势 使c o d e t e s t 具有强大的性能分析、内存分析、高级覆盖率分析和代码跟踪功能。 但同时这也导致了c o d e t e s t 最大的缺点对硬件的依赖性。对不同的硬件平台 c o d e t e s t 必须定制不同的信号捕获探头和相关的数据采集机制。这使得c o d e t e s t 的灵活性、移植性都较差。同时随着嵌入式硬件技术的快速发展和更新换代,这 种机制也大大限制了产品本身适应市场的能力,增加了新产品的研制成本和开发 周期。 2 3 嵌入式软件测试研究现状 在嵌入式软件测试领域,目前国内尚无产品化的同类工具,在国际市场上主要 有五个: c o d e t e s t ; l o g i s c o p e ; c o v e r a g e s c o p e ; a t t o lt e s t w a r e ; v e e t o r c a s t : 下面逐一介绍。 表2 - 1c o d e t e s t 简介 产品名称 c o d d t e s t 中文名称万用型嵌入式软件在线测试系统 生产厂商 a p p l i e dm i c m s y s t e m sc o r p o r a t i o n ( a m c ) 产地 美国 类别 嵌入式软件实时测试工具 主要功能 1 性能分析:最大执行时间、最小执行时间、平均执行时间、 执行次数、占总执行时间百分比、函数调用次数; 电子科技大学硕士学位论文 2 覆盖测试:语句覆盖、决策覆盖和可变条件的决策覆盖,趋 势图,自动生成分析报告 3 动态存储器分配分析:动态显示空闲内存总量、动态显示分 配内存的函数和分配的大小,自动生成内存错误分析报告; 4 追踪分析:可以分三级显示追踪情况:函数级控制块级源码 级,此外追踪过程中详细显示内存的分配情况:调用内存分 配释放函数的文件、函数和代码行、被分配释放的内存大小 和指针。 突出特点性能分析、内存泄漏分析功能强 适用阶段主要是单元、集成、系统测试 实现方式软硬件结合方式。通过p c i v m e c p c i 总线、m i c t o r 插头、专 用适配器或探针连接到被测试系统以及软件插桩,对嵌入式系统 进行在线测试 支持c p u支持所有6 4 3 2 1 6 位c p u 和m c u ,总线频率 1 0 0 m h z 市场情况国外应用非常广泛,h p 还有贝尔、北电网络都用c o d e t e s t ,国 内用户有华为公司等。 表2 - 2l o g i s c o p e 简介 产品名称 l o g i s e o p e 一 生产厂商 t e l e l o g i c 产地瑞典 类别代码分析、软件测试、覆盖测试工具 主要功能1 静态检查:根据编程规则检奄程序源代码,自动生成测试报 告: 2 覆盖分析:语句覆盖、决策覆盖和可变条件的决策覆盖,显 示测试进度 3 系统综合测试: 突出特点代码静态检查、覆盖测试 适用阶段软件开发的各个阶段 实现方式纯软件方式 。一 支持c p u任何c c + + 编译器支持的处理器 茎三里壁茎鏊堡型堕堕塞堡堕 产品名称 c o v e r a g e s c o p e 生产厂商w i n d l 毡v e r 产地美国 类别覆盖测试工具 主要功能1 覆盖测试:以项目的形式组织覆盖测试数据,趋势图,自动 产生分析报告。 突出特点使用方便 适用阶段不祥 实现方式纯软件,通过编译器进行源代码插装。 支持c p ua r m ,c o l d f i l e 、6 8 i c p u 3 2 、m i p s ,p e n t i u m ,p o w e r p c ? s t r o n g a r m x s c a l e 、s u p e r h 市场情况 表2 - 4a t t o lt e s t w e e 简介 产品名称 a t t o lt 髓t w a r e 中文名称 生产厂商 n n r o l1 e s t w a r e 。 厂商简称 a t t o l 产地法国 类别自动生成测试代码的软件测试工具 主要功能 单元测试:通过对源码的分析自动生成测试脚本框架,通过测试 脚本自动生成测试程序、自动测试、自动生成测试报告: 覆盖测试: 系统综合测试: 突出特点自动生成测试代码 适用阶段主要是单元测试 实现方式不祥 支持c p u 支持h p 6 4 7 0 0 、l a u t e r b a c h 、a s h l i n g 、a m c 、m i c r o t e c 、 电子科技大学硕士学位论文 c o s m i c ,b s o ,t e x a s 、k e i l 、w i n d r i v e r 、a l s y s 、t l d ,t a r t a n , n e c 、d i a b d a t a 、l y n x o s 等交叉环境。 1 市场情况在法国市场居领先位置 表2 - 5v e c t o 蛇a s t 简介 产品名称 v c e t o r c a s t 生产厂商v e c t o rs o f t w a r el n c 中文名称v e c t o r 软件公司 产地美国 类别单元测试工具 主要功能1 构造测试环境:扫描程序源代码,生成一个可执行的程序: 2 生成测试用例:按照用户的设定自动生成多种测试用例; 3 自动测试,生成测试报告: 4 覆盖分析:语句覆盖、决策覆盖和可变条件的决策覆盖; 5 ,静态分析:提供复杂度分析和基本路径分析; 突出特点全自动的单元测试 适用阶段单元测试 实现方式不祥 支持c p u不祥 上述五个产品中,前三种算的上是专业的覆盖测试工具,后两种主要功能是自 动生成测试代码的单元测试工具。 2 4 小结 本章对论文中所涉及到的基本概念进行了详细解释,以便于讨论和研究能够更 加深入的进行。主要介绍了软件测试的定义、嵌入式软件测试的环境和分类,重 点介绍了嵌入式软件测试的主要的评测方法。然后对当前主流的嵌入式软件测试 工具进行归纳和总结,最后就是对现在国外嵌入式测试软件的研究和比较。 1 4 第三章系统的技术路线、功能需求与总体框架 第三章系统的技术路线、功能需求与总体框架 本课题在深入分析和研究国内外嵌入式软件测试工具的基础上,针对国内客户 的需求,研究和确定了本系统的技术路线和功能需求,设计了嵌入式软件自动化 测试系统的总体框架。该总体框架不仅适用于c 语言的嵌入式软件测试,对于其 他高级语言的嵌入式软件测试也具有一定的指导意义。 3 1 测试系统的技术路线 本测试系统整体架构设计为c l i e n t s e r v e r 结构,在测试模式上结合了北京科银 京成技术有限公司的嵌入式集成开发工具l a m b d a 以及覆盖测试工具g a m m a c p , 采用h o s t t a r g e t 模式。 3 1 1h o s t t a r g e t 测试模式 h o s t t a r g e t 方式是指编译链接和测试分析都运行在宿主机机器上,而被测试 程序运行在目标机机器上,目标机与宿主机之间的通信通过串口或者网络。它的 示意图如下图所示: 测试用例l n j 歌八 测 一慧 试 代 噬 通信 理 结果收集和1 高分析显示r l i 堡! 宿主机 目标机 图3 - 1h o s t t a r g e t 测试模式组成图 图中用户首先通过选择合适的测试用例,将测试用例通过通信接1 3 ( 串口或者 网络) 下载到目标机运行,程序运行后产生的信息通过通信接口上传到宿主机, 电子科技大学硕士学位论文 再将收到的信息进行分析和处理,最后将测试的结果信息( 如运行结果和覆盖信 息等) 以图形用户界面方式反馈给测试用户。 3 1 2 串口通信技术 串口通信是计算机上一种非常通用的通信协议,它是按位发送和接收字节。在 h o s t t a r g e t 测试模式中,从目标机上收集数据主要有串口和网络两种方式。在本 系统中,我们采用了串口收集数据。 由于宿主机是w i n d o w s3 2 位平台,我们利用w i n d o w s a p i 函数实现与目标机 的串口通信,其主要步骤如下: 1 创建串口内核对象,获得该对象的句柄。 2 设置串口缓冲区大小、通信超时时间、各种参数配置及待监听事件,等待 设置的通信事件发生。 3 当有字符到达时读取串口数据并判断是否收到结束标记,如果没有收到结 束标记继续监听。 4 结束后释放资源。 3 1 3 服务器,客户端与远程处理 为了支持团队测试,我们把测试系统设计为传统的c l i e n t s e r v e r 结构,服务器 与客户端之间的交互采用的是n e t 远程处理思想。 n e t 远程处理为进程间通信提供了一种抽象的方法,它将可远程处理的对象 与特定客户端或服务器应用程序域以及特定的通信机制隔离开来。此外,远程处 理系统假定没有特别的应用程序模型,可以从w e b 应用程序、控制台应用程序、 w i n d o w s 服务,即差不多可以从希望使用的任何程序中进行通信。远程处理服务 器也可以是任何类型的应用程序域。任何应用程序都可以承载远程处理对象并向 其计算机或网络上的任何客户端提供服务。 使用对象引用在服务器对象和客户端之间进行通信是远程处理的核心。客户端 仅创建一个服务器类的新实例,远程处理系统创建一个表示该类的代理对象,并 向客户端对象返回一个对该代理的引用。当客户端调用方法时,远程处理基础结 构将处理调用,检查类型信息,并通过信道将该调用发送到服务器进程。接着侦 听信道获得该请求并将其转发给服务器远程处理系统,服务器远程处理系统查找 1 6 第三章系统的技术路线、功能需求与总体框架 ( 或在必要时创建) 并调用被请求的对象。然后,此过程将反向进行,服务器远 程处理系统将响应捆绑成消息并由服务器信道发送到客户端信道。最后,客户端 远程处理系统通过代理将调用的结果返回给客户端对象。远程处理的结构如图3 2 所示。 l 远程处躲兢l rl l 勰处彩獭il r 信道 a 厘d r j 舞j 撼务薯对量。:】【客户潮对象】 3 1 4 命名管道技术 图3 - 2 远程处理结构 管道是用于进程问通信的一段共享的内存。创建管道的进程称为管道服务器 ( p i p es e r v e r ) ,连接到管道的进程称为管道客户端( p i p ec l i e n t ) ,一个进程向管道写 入数据,另一个等待读数据的进程就可以从中读出。 有两种类型的管道:匿名管道( a n o n y m o u sp i p e s ) 和命名管道州a m e dp i p e s ) 。匿 名管道开销少但所提供的服务有限,主要用在父进程和子进程之间传输数据,单 向的,并且是本地的,即不能通过网络通信。 命名管道可用于个管道服务器和多个管道客户端之间单向或者双向的通信, 每个客户端使用命名管道的个实例,而这些实例共用一个名字,但每个实例有 自己的缓冲区和旬柄。任何进程都可以访问命名管道,这使得命名管道成为关或 不相关的进程间通信的最简单的种形式。同时命名管道既可以用于单机上进程 间的通信也可以用于不同主机上进程间的通信。 3 2 测试系统的功能需求 根据国内外嵌入式软件测试的现状、趋势,以及客户需求等实际情况,本测试 电子科技大学硕士学位论文 系统的功能主要划分为测试管理、测试功能和自动化测试。 c l 凇r j 试管理 测试工程的层次管理结构:测试工程测试集专测试用例; 支持并行的团队测试,提高测试效率; 支持测试用例在多测试终端弗行执行,可通过添加硬件来提高测试用例的 批量执行速度: ( 2 ) 测试功能 支持单元测试和集成测试 这里的单元测试是指对以一个模块( 一个+ c 文件) 为测试对象进行的测试, 而集成测试是指对一个以上的模块组成的测试对象进行的测试。主要内容 包括:对模块或者模块集的接口功能进行测试,并能帮助使用者获知模块 或者模块集合内的程序覆盖情况; 支持白盒测试和黑盒测试 白盒测试主要包括:被测软件系统覆盖情况的统计和显示、被测软件系统 函数静态调用关系的图形化显示; 黑盒测试主要包括:对被测软件系统的接口进行测试、对被测软件系统的 功能进行测试; 支持回归测试 当被测源码发生改变时,能对源码进行重分析,以确定软件被修改的部分, 并维护测试用例库; ( 3 ) 自动化测试 自动从c v $ 源码库下载被测源码,完成对源代码的分析; 自动生成测试用例,包括测试驱动和测试桩程序,并自动完成用例源码的 编译和链接; 自动执行测试用例,并自动采集测试结果信息; 自动统计测试覆盖率; 自动生成测试报告i 第三章系统的技术路线、功能需求与总体框架 3 3 测试系统的总体框架 3 3 1 测试系统硬件组成结构 本文实现的嵌入式软件自动化测试系统采用c l i e n t s e r v e r 结构,在硬件上主要 由测试服务器、工作终端、测试终端、目标机等几部分组成,如下图所示: 图3 - 3 系统硬件组成结构图 测试服务器硬件要求: 可运行w i n d o w ss e r v e r 操作系统的高性能服务器 至少具备一个1 0 0 m 网络接口 - 工作终端硬件要求: 可运行w i n d o w s 操作系统的p c 机 至少具备一个1 0 0 m 网络接口 - 测试终端硬件要求: 可运行w i n d o w s 操作系统的p c 机 至少具备两个1 0 0 m 网络接口 电子科技大学硕士学位论文 至少具备两个串型通信口 - 目标机硬件要求: 嵌入式的x 8 6 体系结构硬件平台,可直接启动t r a ( 不通过b i o s ) 至少具备两个串型通信口 至少具有一个1 0 m 1 0 0 m 网口 具有可进行硬复位操作的w a t c h d o g 3 3 2 测试系统软件组成结构 工作终蠕 c v s 客户瑚 舅试系统客户 靖 g c p ( 数据显 不j 测试服务器 二丑拍 测试系统服务 罂 嗣试终 滔试用倒运行与

温馨提示

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

评论

0/150

提交评论