已阅读5页,还剩58页未读, 继续免费阅读
(通信与信息系统专业论文)嵌入式软件测试技术的研究及其在闪存文件系统测试中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
随着科技的发展,嵌入式系统在家电、互连网、航天航空等各个领域的应 用日益广泛。嵌入式软件作为嵌入式系统的核心,其质量保证对整个系统至关 重要。然而嵌入式软件作为一种特殊的软件产品,其质量保证不同于普通软件, 如何建立一套简单高效的测试系统,一直是嵌入式软件开发的难点。 嵌入式文件系统是嵌入式操作系统的重要组成部分。n a n df l a s h 以其大 容量低价格等优势迅速成为嵌入式系统存储的新宠,因此其上的文件系统研究 也日益广泛。 本文从软件产品测试的基本知识、理论入手,分析研究了针对于嵌入式软 件的测试系统配置、测试方法和测试策略,提出了嵌入式软件测试解决方案。 以专门针对n a n df l a s h 设计韵闪存文件系统y a f f s ( y e ta n o t h e rf l a s hf i l e s y s t e m ) 为实例,使用白盒测试策略及仿真技术对y a f f s 文件系统在均匀损耗、 掉电恢复和动态内存占用三个主要方面的性能进行在线测试。 本文给出测试结果的同时,着重研究嵌入式软件测试方案和方法,对其他 嵌入式软件测试具有一般借鉴意义。同时文章还对测试结果进行分析,并提出 了改进意见、方案和适用环境。 关键词:软件测试,嵌入式系统,嵌入式软件测试,y a f f s 文件系统,仿真 a b s t r a c t w j t l lt h ed e v e l o p m e n to fs c i e n c ea n dt e c h n o l o g y , t h ea p p l i c a t i o no fe m b e d d e d s y s t e mi nm a n yf i e l d s ,s u c ha si n t e m e ta n da e r o s p a c ee t c ,h a sb e c o m em o r ea n dm o p o p u l a r a st h ek e r n e lo f t h ew h o l es y s t e m ,t h eq u a l i t ya s s u r a n c eo f t h ee m b e d d e d s o f t w a r ei sv e r yc r i t i c a l b u t 船as p e c i a ls o t t w a r ep r o d u c t , t h eq u a l i t ya s s n l r a n c eo f e m b e d d e ds o f t w a r ei sd i f f e r e n tf r o mg e n e r a ls o f t w a r e i ti sd i f f i c u l tt oc o n s t r u c ta h i g hp e r f o r m a n c et e s t i n gs y s t e mi ne m b e d d e ds o f t w a r ed e v e l o p i n gp r o c e s s e m b e d d e df i l cs y s t e mi so n eo ft h ei m p o r t a n tp a r t so fe m b e d d e do p e r a t i n g s y s t e m a si t sl a r g ec a p a c i t ya n dl o wp r i c e n a n df l a s hq u i c k l ya c c e p t e db y t h em a r k e t ,s ot h er e s e a r c ho ni t sf i l es y s t e mb e c a m ei n c r e a s i n g l yp o p u l a r b a s e do nt h ek n o w l e d g ea n d t h e o r yo fs o f t w a r et e s t i n g , t h i st h e s i sp u t sf o r w a r d as o l u t i o nf o rt h es o f t w a r ep r o d u c tt e s t i n ga f t e ra n a l y z i n ga n d i n v e s t i g a t i n gt h et e s t i n g c o n f i g u r a t i o n ,m e t h o da n ds t r a t e g yo ft h ee m b e d d e ds y s t e m s w h i t eb o xt e s t i n g s t r a t e g ya n ds i m u l a t i o nt e c h n i q u ei su s e dt ot e s tt h ew e a r - l e v e l i n g ,d r o p - r e s u m ea n d d y n a m i cm e m o r yd i s t r i b u t i o no fy a f f sf i l es y s t e m ,w h i c hi ss p e c i a l l yd e s i g n e df o r n a n df l a s h n i st h e s i sn o to n l yg i v e st h et e s t i n gr e s u l t s b u ta l s oi n v e s t i g a t e st h et e s t i n g s c h e m ea n dm e t h o do fe m b e d d e ds o f t w a r e ,s oi tc a nb eu s e df o rr e f e r e n c ei nt h e t e s t i n go fo t h e re m b e d d e ds o f t w a r e a ni m p r o v e ds c h e m ei sa l s oa d v a n c e di nt h e e n do f t h et h e s i s k e yw o r d s :s o f t w a r et e s t ,e m b e d d e ds y s t e m ,e m b e d d e ds o f t w a r et c s t y a f f s , e m u l a t i o n i i 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:稍红 词年阳咖 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 年月日年月日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 签名:捌,位 年f , e l 万e l 第1 章绪论 第1 章绪论 1 1 弓i 言 软件质量问题由来已久。早在6 0 年代,人们就发现由于软件质量低下、可 靠性差所带来的不仅是维护费用高昂,而且还会造成严重的后果。随着计算机 技术的发展,软件的规模正变得越来越大、复杂性越来越高,而软件的开发能 力以及质量保证能力却远远跟不上应用需求的迅速扩展,出现了所谓的“软件 危机”。 时至今日,计算机在工业控制、医疗、通信、交通、航天、航空、经济、 金融等领域的应用,对软件的质量提出了前所未有的挑战。计算机科学家们认 为人类目前所掌握的软件开发技术尚不能满足在这些应用领域所提出的极高的 质量要求。软件失效逐渐成为系统瘫痪的主要原因。根据美国国防部和宇航局 的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量 级。软件质量已经成为制约计算机应用与发展的瓶颈。 当前嵌入式系统被越来越广泛地被采用,它被称为是渗透( p e r v a s i v e ) 的和 无所不在( u b i q u i t o u s ) 的,一个夸张的说法是靠电力运行的任何设备已经或即 将嵌入计算机系统。嵌入式系统中的硬件和软件的发展也需要齐头并进,但实 际情况是软件的发展始终落后于硬件,软件的可靠度和健壮性与硬件相比也始 终处于下风。嵌入式软件的质量问题成为了当前一个大类的计算机应用和发展 所必需解决的一个急迫的问题。 1 2 嵌入式软件及其主要技术要求 嵌入式系统( e m b c d d e ds y s t e m s ) 就是设计完成复杂功能的硬件和软件,并 使它们紧密地耦合在一起的计算机系统,可专用于实时控制、监视、管理或辅 助其他设备设施运行。嵌入式系统的“嵌入”反映了该计算机系统通常使更大 系统中的一部分,这个更大的部分称为( 被) 嵌入的系统。“嵌入”这个词意味 着这些系统本身与其所控制和管理的( 被) 嵌入的系统是融为一体的,是其中 的一个有机组成部分。若( 被) 嵌入的系统是一个过程控制系统,则嵌入式系 统可作为控制系统的基本构造单元。嵌入式系统可以由硬件或软件实现,硬件 l 第l 章绪论 形式的嵌入系统多为专用的或可编程控制的芯片,而软件形式的嵌入式系统则 主要是各种专门用途的控制软件系统。 嵌入式软件定义为,针对特定的实际专业领域的,基于相应的嵌入式硬件 平台的,并能完成用户预期任务的计算机软件。它的主要特点是:首先以应用 为中心,功能单一,嵌入式系统不会同时载入执行多个程序,一般情况下只执 行固定的程序,例外的情况下或者是程序被新的版本刷新,或者是几个程序轮 流进入内存,其次是严格的约束,系统对功能、可靠性、成本、体积、功耗等 有综合性的严格要求,因而一般嵌入式软件可裁减,以适应应用;最后的但却 经常是最重要的是反应性和实时性,嵌入式系统需要不断地对所处的环境的变 化做出反应,软件要在规定的时间内得出计算结果。 嵌入式软件的主要质量度量包括正确性、可靠性、健壮性和安全性等。其 中正确性是指软件的计算能够得到预期的结果,它限定于软件在正常外界环境 下的行为特征。可靠性是软件系统正常运行时间或者可用性的度量,特别地,器 它指的是一次计算在系统失效之前能成功完成的概率,强调连续服务。可靠性 可以定量度量,通常采用可靠度、平均无故障时间等指标。健壮性是衡量软件 在异常输入和应力环境条件下保持正常工作能力的一种度量。一些嵌入式软件 具有安全性要求,它表示软件在给定的时问内不发生灾难性事故的能力,强调 的是防止危险发生,必要时可停止系统服务。 嵌入式软件由于系统自身的特点,如实时性,内存不丰富,输入,输出通道 少,并且与硬件紧密相关,c p u 种类繁多并且进行速度慢等原因,嵌入式软件 的技术要求相比普通软件,有很多特殊的地方。比如,程序流程尽量简单以不 影响系统反应速度;数据结构尽量合理并且紧凑,以增加内存的使用效率;资 源的占用尽量合理等等。 1 3 嵌入式软件的仿真测试方法 测试是保障和提高软件质量的途径之一( 当前也许是最有效的) 。软件测试 的理论和方法,尤其是方法,近年来鲜有突破性的进展。嵌入式软件测试技术 的研究为软件测试技术带来了新的生命力。其中仿真测试方法是研究和实践的 一个热点,它是在嵌入式软件的系统测试阶段经常使用的一种方法,通过对目 标硬件环境或目标数据环境在宿主机上的模拟完成对被测软件的测试,常见的 2 第l 章绪论 有全数字仿真、全实物仿真和半实物仿真三种。国内外的研究机构在此领域已 进行了大量的研究工作,一些专业公司推出了各类用于嵌入式软件测试的软件 包。 英国i p l 公司提供的一种强大的测试工具c a n t a t a ,主要针对c ,c + 斗和j a v a 语言的测试。它的静态分析部分s t a t i ca n a l y s i s 可完成一般的静态测试。c a n t a t a 检查代码标准,测量并检查代码复杂性,确定软件的可维护性和标准,执行集 成覆盖率分析,打桩和封装等功能。使用c a n t a t a 进行的是全实物的仿真测试, 被测对象需要在目标机器上运行。 t e l e l o g i e 公司的l o g i s e o p e 是一组嵌入式软件测试工具集。它贯穿于软件开 发、代码评审、单元集成测试、系统测试、以及软件维护阶段。它面向源代码 进行工作。l o g i s c o p e 针对编码、测试和维护。因此,l o g i s c o p e 的重点是 帮助代码评审( r e v i e w ) 和动态覆盖测试( t e s t i n g ) 。同样,l o g i s e o p e 也是需要 实物系统承载测试。 f r e e s e a l e 公司的c o d e t e s t ( c o d e w a r r i o r 系列工具之一) 。c o d e t e s t 包括 三个产品,分别用于嵌入式软件系统开发的不同阶段的测试。c o d e t e s tn a t i v e 在主机上完成软件开发后的测试;c o d e t e s ts o f t w a r e i n - c i r c u i t 将软件植入目标 系统通过以太网连接进行软件测试;c o d e t e s th a r d w a r e i n c i r c u i t 系统测试, 如系统性能、产品质量等,需要软硬件配合测试。c o d e t e s t 是一个半实物仿真 的测试工具,由专有硬件辅助软件的测试与分析,通过监视系统总线,当程序 运行到插入的特殊点的时候才会主动到数据总线上把数据捕获回来。使用以上 测试工具和方法,需要有实际目标系统支持才能开展。 v i r t i o 公司的v p a i 是全数字的仿真测试方法,在测试暂时不能提供其使用 的目标系统或者测试需求本身会对目标系统造成损坏时,它显示了出独特的优 势。在v p a i 构建的仿真环境下,支持包括f r e e s e a l e 和t i 等多种嵌入式硬件平 台。v p a i 提供了一套完整的仿真测试工具链,并对外部接口进行仿真和控制, 在它上面可以进行独立的指令级别的性能测试和覆盖率测试。 国内目前尚无成熟的商业化的嵌入式系统测试平台,但有部分基于研究目 的开发的测试系统,较有代表性的是南京大学开发的e a s t t 。和l o g i s e o p e 类 似,它主要用于代码评审和动态履盖测试,动态调用关系分析等。还有北航软 件所的s a f e p r o c 软件套件,主要用于对c 语言程序软件进行测试,提供语句覆 盖、分支覆盖、插桩策略和轨迹文件界面。 3 第l 章绪论 1 4 课题背景和本文的组织 “实时嵌入式软件系统测试技术及平台的研究与应用”( 0 3 5 1 1 5 0 2 3 ) 是上海 市科学技术委员会的科技攻关课题,由上海市科学技术委员会与同济大学合作 完成。与同济大学有关的课题任务包括:完成嵌入式软件可靠性测试用例的收 集整理,结合实际项目给出若干具体应用案例的测试方案,逐步将测试方案中 的嵌入式软件测试的工具包通用化并按照一定的框架构建一类嵌入式软件通用 的测试平台,以及在测试的基础上研究嵌入式软件系统的可靠性的评估方法; 研究和建立嵌入式软件的可靠性评估系统。本文在对上海全球卫星导航有限公 司的g p s 接收机嵌入式系统的y a f f s - n a n d 文件子系统的测试的基础上,研 究了基于仿真测试的嵌入式软件测试技术,并开发了相应的仿真包,为通用化 的测试工具包的开发做了一些积累。 论文的内容及组织如下: 第二章在回顾了软件工程和软件测试的基本概念以及软件测试的策略等问 题的基础上,研究了嵌入式软件测试技术中的相关问题,并对测试自动化技术 作了初步探讨。 第三章介绍了被测实例“嵌入式系统的y a f f s - n a n d 文件子系统”的软件 组成和各部分的主要功能,并从整体上进行需求分析。 第四章详细介绍了对被测实例“嵌入式系统的y a f f s n a n d 文件子系统 的测试工作,包括总体的测试设计和各个测试项目的具体过程。 第五章对文中测试工作和研究进行总结,并对下一步研究工作作出展望。 1 5 本章小节 本章首先介绍了嵌入式软件的质量问题的紧迫性和重要性,并给出了嵌入 式软件及其度量的相关概念的定义;随后对本文的主要技术路线“仿真测试” 进行了综述;然后嬲课题的背景及论文的组织结构。 4 第2 章软件测试及其自动化技术 2 1 软件工程和软件测试 计算机的出现和应用是2 0 世纪的一项杰出的科学成就。现在,计算机技术 已渗透到人类社会的各个领域,并正在推动人类向信息时代迈进。自从世界上 第一台电子计算机诞生以来,计算机硬件经过了从第一代至第四代的发展。在 硬件制造技术方面,人类已经获得了巨大的进展。为了更多、更快、更好地开 发计算机软件,在1 9 6 8 年前后产生了一种工程的方法软件工程方法。1 9 6 8 年北大西洋公约组织( n a t o ) 的计算机科学家在联邦德国召开国际会议,讨论 软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词。 2 1 。1 软件工程 软件工程强调使用生命周期方法学和各种结构分析及结构设计技术。从软 件项目需求定义开始到它退役的整个生命周期中,通常用著名的瀑布模型 ( w a t e r f a l lm o d e l ) 加以形象化描述。图2 1 是带反馈的瀑布模型。 图2 1 带反馈的瀑布模型 软件生存周期的8 个阶段的主要任务是: 5 第2 章软件测试及其自动化技术 1 、问题定义:确立问题性质、工程目标和规模。确定软件开发的总目标; 给出软件的功能、性能、可靠性以及接口等方面的设想。 2 、可行性研究:研究完成该项软件任务的可行性,探讨解决问题的方案: 对可供开发使用的资源( 如计算机硬、软件、人力等) 、成本、可取得的效益和 开发的进度做出估计;制定完成开发任务的实施计划( i m p l e m e n t a t i o np l a n ) 。 3 、需求分析:对开发的软件进行详细的定义,由软件人员和用户共同讨论 决定哪些需求满足,并且给予确切的描述;写出软件需求规格说明书( s o f t w a r e r e q u i r e m e n ts p e c i f i c a t i o n s ) 或称软件规格说明书,以及用户手册( s y s t e mu s e r s m a n u a l ) ,提交管理机构审查。 4 、总体设计:设计是软件工程的技术核心。在设计阶段应把已确定的各项 需求转换成相应的体系结构,在结构中是功能明确的模块。每个模块都应体现 相应的需求。 5 、详细设计:对每个模块要完成的工作进行具体的插述,以便为程序编写 打下基础。上述两步设计工作均应写出设计说明书,供后继工作使用并提交审 查。 6 、编码和单元测试:把软件设计转换成计算机可以接受的程序,即选取j 种适当的程序设计语言,写出正确的容易理解、容易维护的程序模块,并且仔 细测试编写出的每一个模块。 7 、综合测试:通过各种类型的测试使软件达到预定的要求。最基本的测试 是集成测试和验收测试: 集成测试将已测试的模块组装起来进行检验。 验收测试按照需求规格说明书地规定,由用户( 或在用户的参与下) 对目标系统进行验收。 8 、软件运行维护:已交付用户的软件投入使用后便进入运行维护阶段。该 阶段可能持续若干年,甚至几十年。在运行中可能有多种原因需要对它进行维 护。其原因包括:运行中发现了软件中有错误,需要修正;为了适应变化了的 软件工作环境,需要作相应的变更;为进一步增强软件的功能,提高它的性能, 需要进一步完善和扩充。 以上8 个阶段可划分为3 个时期:软件定义时期、软件开发时期和软件运 行维护时期。在实际开发中,为了确保软件的质量,每一阶段完成后都要进行 检查修改工作( 图2 i 中向上的箭头) 。如果检查通不过,则必须进行必要的修 6 第2 章软件测试及其自动化技术 改,并且修改后还要再经过审查。审查的一条主要标准就是每个阶段都应该交 出和所开发的软件完全一致的高质量的文档资料,从而保证在软件开发工程结 束时有一个完整准确的软件交付使用。 在生命周期每个阶段,应该采用适合该阶段任务的特点的系统化的技术, 即结构分析或结构设计技术。这种技术主要解决每个阶段的关键问题和结束标 准。如综合测试阶段的关键任务是通过各种类型的测试及相应的调试使软件达 到预定的要求,综合测试的结束标准为:方案、结果和完整的软件配置。 w i l l i a mp e r r y 将软件开发过程简单地描述为p d c a 四阶段。p l a n 为计划阶 段。d o 为执行阶段。c h e e k 为结果检查。a c t i o n 则为对检查结果所作的修改阶 段,四个阶段两两之间存在反馈。p d c a 四个阶段流程如图2 2 。其中p 、d 、a 是由开发者实施的,c 是由测试者实施的,即由测试者来检查软件是否满足用户 需求,同时提交软件缺陷报告。在这种描述方法中,测试作为一个独立的实施 阶段,其目的在于查找软件中存在的缺陷,包括与需求说明不符或相违背的属 性。 图2 2p d c a 阶段 2 1 2 软件湃斌的概念及意义 经过多年的软件开发实践,积累了许多成功的开发经验,同时也总结了不 少失败的教训。在此过程中,软件测试的重要意义逐渐被人们认识。 软件测试这一基本概念很长时间以来存在着不同的观点。如1 9 7 3 年, w h c t z e i 曾经指出,测试是对程序或系统能否完成特定任务建立信心的过程。 g j m y e r s 则持另外的观点,他认为程序测试是为了发现错误而执行程序的过程, 明确指出“寻找错误”是测试的目的。“程序测试是证明程序中不存在错误的过 程”的观点是显然不对的。因为把程序无错作为测试的目的是难于达到的。1 9 8 3 7 第2 章软件测试及其自动化技术 年,i e e e 提出的软件工程标准术语中给软件测试下的定义是“使用人工或自动 手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需 求或是弄清预期结果与实际结果之间的差别”,这就非常明确的提出了软件测试 以检验是否满足需求为目标。 软件测试在软件生存周期中占有非常重要的位置,原因为:在整个软件开 发成本中,用在测试上的开销要占3 0 0 到5 0 0 , 6 。如果我们把维护阶段也考虑在 内,讨论整个生存期,开发测试的成本会有所降低,但是,许多维护工作相当 于二次开发,乃至多次开发,其中必定包含有许多测试工作。因此,软件有5 0 0 甚至更多的成本花在测试工作上,软件测试的重要性不言而喻。 从软件的生存期来看,软件测试不仅是对编制的程序进行测试,而且是贯 穿在软件的整个生存期内,其测试目的、方法和工具在不同的阶段是不同的。 软件测试着眼于软件整个生存期,特别着眼于编码以前各开发阶段的工作来保 证软件质量,也就是在开发过程中需要不断的检测与评估,不断的进行检验,。 以利于及时发现并排除错误,这种贯穿在整个开发阶段的复查评估与检测活动, 远远的超出了程序测试的范围,统称为确认、检验与测试活动( v v & t i v a l i d a t i o n ,v e r i f i c a t i o na n dt c s t i n g ) ,简称测试,这是广义的软件测试。 2 1 3 测试步骤 与软件产品生产过程类似,测试过程也必须分步进行,每个步骤在逻辑上。 是前一个步骤的继续。大型软件系统通常由若干个予系统组成,每个子系统又 由许多模块组成,因此,大型系统软件的测试基本上由以下几个步骤完成: 单元测试:是对软件中的基本组成单元进行测试,如一个模块、一个过 程,其目的是检验软件基本组成单元能否完成预定功能。 子系统测试:将单元集成为软件系统的一个部分进行测试,其主要目的 是检查软件单元之间的接口是否正确。 系统钡9 试:是对已经集成好的整个软件系统进行测试,以验证软件系统 的正确性和性能等能否满足需求规格说明所指定的要求。 验收测试:测试内容与系统测试基本类似,但是它是在用户积极参与下 进行的,旨在验证软件是否能满足用户的需要。 软件开发是一个自上向下逐步细化的过程,而软件测试过程则是依相反的 顺序自下向上的过程。图2 3 表示了软件测试与开发过程的关系,从较高层次 8 兰! 兰竺壁型苎墨墨璺垫些苎查: 来考察,软件测试又可以看作是不断地进行测试、调试、修改程序、再测试的 过程,直到软件质量达到需求的一个循环往复的过程。 图2 3 软件测试与软件开发过程的关系 2 2 软件测试策略 为了检验开发的软件是否满足规格说明书的要求,测试活动可以采用不同 的策略。常用的软件测试策略包括:静态方法和动态方法;黑盒方法和白盒方 法;随机测试和穷举测试;自顶向下测试和自底向上测试;人工测试和自动测 试等。 在此我们主要对于黑盒测试、白盒测试和灰盒测试做详细的介绍。 2 2 1 黑盒测试 黑盒测试( b l a c k - b o xt e s t i n g ) 着眼于程序的外部特征,而不考虑程序的内 部结构。测试时,测试者把被测软件看作是一个黑盒,仅以软件的功能为依据, 看其是否满足功能要求。因为黑盒测试着重于检查程序的功能,所以又叫功能 测试。黑盒测试的内容包括:是否符合功能要求;输入数据是否能被正确的接 收;输出结果是否正确等。目前常用的黑盒测试方法有:等价类划分,因果图, 正交实验设计法,边值分析,判定表驱动测试等。 9 第2 章软件测试及其自动化技术 2 2 1 1 等价类划分法。 等价类划分是一种典型的黑盒测试方法,用这一方法设计测试用例完全不 考虑程序的内部结构,而是只根据对程序的要求和说明,即平时我们常说的需 求规格说明书( r e q u i r e m e n ts p e c i f i c a t i o n s ) 。我们必须仔细分析和推敲说明书的 各项需求,特别是功能需求。既然穷举测试的办法由于数量太大,以至于无法 完成,自然促使我们在大量的可能数据中选取其中的一部分作为测试用例。等 价类划分是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表 性数据当作测试用例。所谓等价类是指某个输入域的集合。它表示,如果用集 合中的一个输入条件作为测试数据进行测试不能发现程序中的错误,那么使用 集合中的其他输入条件进行测试也不可能发现错误。也就是说,对揭露程序中 的错误来说,集合中的每个输入条件是等效的。如果我们的测试数据全都从同 一个等价类中选取,除去其中的一个测试数据对发现程序错误有意义外,使用 其余的测试数据进行测试都是徒劳的。 2 2 1 - 2 因果图 等价类划分方法并没有考虑到输入情况的各种组合,也没考虑到各个输入 情况之问的相互制约关系。尽管等价类划分方法考虑到各个输入条件可能出错 的多种情况,但多个输入条件组合起来出错的情况却被忽略了。采用因果图方 法( c a u s e e f f e c tg r a p h i n g ) 能够帮助我们按一定步骤,高效率的选择测试用例, 同时还能为我们指出程序规格说明描述中存在什么问题。 利用因果图导出测试用例需要经过一下几个步骤: 1 、分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输 入条件或是输入条件的等价类。而结果是输出条件。 2 、分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与 各个结果的因果图。 3 、由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。 为表明这些特定的情况,在因果图上使用若干个特殊的符号标明约束条件。 4 、把因果图转换成判定表,再把判定表中每一列表示的情况写成测试用例 ( 判定表的知识在此不作详细介绍) 。 1 0 第2 章软件测试及其自动化技术 2 2 1 3 正交实验设计法 利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因 果关系,有时很难从软件需求规格说明书得出,而且即使是对于一般中小规模 的软件,画出的因果图也可能非常庞大,给测试工作带来沉重负担。 所谓正交实验设计法,是从大量的实验点中挑选出适量的有代表性的点, 应用伽罗瓦理论导出的“正交表”,合理的安排实验的一种科学的实验设计方法。 利用这种方法来设计测试用例时,首先要根据被测软件的规格说明书找出影响 其功能实现的操作对象和外部因素,把他们当作因子,而把各个因子的取值当 作状态,构造出二元的因素分析表。然后利用正交表进行各因子的状态的组合, 构造有效的测试输入数据集,并由此建立因果图。这样得出的测试用例集中, 测试用例的数目将大大减少。 2 2 1 4 边值分析 在程序设计和程序编写中,常常对于规格说明中的输入域边界或输出域的 边界不够注意,以致形成一些差错。实践表明,在设计测试用例时,对边界附 近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常 常取得良好的测试效果。 针对边界值设计测试用例时,应遵循以下几条原则: l 、如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的 边界内及刚刚超出范围的边界外的值,作为测试用例。 2 、针对规格说明的每个输出条件使用规则l 。 3 、如果程序规格说明中提到的输入或输出域是个有序的集合,就应注意选 取有序集的第一个和最后一个元素作为测试用例。 4 、分析规格说明,找出其他的可能边界条件。 2 2 2 白盒测试 白盒测试( w h i t e b o xt e s t i n g ) 又称结构测试逻辑驱动测试或基于程序的测 试( p r o g r a m - b a s e d t e s t i n g ) 。白盒测试法是通过分析程序的内部结构和内部特性 来设计测试用例的方法,它也用于设计阶段对软件详细设计的测试。白盒测试 检查软件内部的逻辑结构,它是以仔细检查过程的细节为基础,通过提供一组 指定条件的循环的测试数据,对穿过软件的逻辑路径进行测试,可以不通电检 第2 章软件测试及其自动化技术 查程序的状态,以确定实际状态与预期状态是否一致。最彻底的白盒法是覆盖 程序中的每一条路径,但由于程序中有循环,要执行每一条路径是不可能的, 所以我们只希望覆盖程度尽可能高一些。目前常用一些比较成熟也有较高实用 价值的白盒测试方法有:程序控制流分析、数据流分析、逻辑覆盖、域测试、 符号测试、路径分析、程序插装及程序变异等。 2 2 3 灰盒测试 灰盒测试把软件看成是一个介于白盒和黑盒之间的灰盒子。也就是说,测 试人员仅仅能够了解被认为是关键性的、需要作深入详细测试的部分软件模块 的内部结构和处理过程,但又不能完全像白盒测试那样了解所有软件模块的内 部结构和处理过程。这种测试方法将被测软件分成两部分,一部分按照白盒测 试方法进行测试,而另一部分则按黑盒测试方法进行测试。 软件作为测试对象,对其测试时由于测试背景不同将采用不同的方法。这 里所说的测试背景主要指被测软件的结构、参数、关系和运行信息的明确程度, 即所谓“白盒”、“黑盒”和“灰盒”测试。作为软件的开发者,他们所进行的 测试一般是把软件作为“白盒”来进行,软件对他们来说是信息完全明确的系 统,即软件开发者手中掌握软件开发的一切技术资料,直至源程序清单和有关 的接口信息。而作为与开发者和用户相独立的第三方测试人员来说,由于专利 保护等原因,除了知道软件系统的输入输出关系外,有可能要在对程序内部结 构一无所知的情况下进行测试,面对的是一个信息完全不明确的系统,即进行 所谓的“黑盒”测试。 2 3 嵌入式软件测试 2 3 1 嵌入式系统概述 后p c 时代的到来,使得人们开始越来越多地接触到一个新的概念嵌入 式系统( e m b e d d e ds y s t e m s ) 。嵌入式系统是以应用为中心、以计算机技术为基 础、软件硬件可裁剪,适应于对功能、可靠性、成本、体积、功耗严格要求的 计算机系统。计算机技术和相关电子技术的快速发展,嵌入式系统深入应用到 社会中的各个领域,如信息电器、通信、航空、航天、医疗、工业控制和军事 等。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来越和人 第2 章软件测试及其自动化技术 们的生活紧密结合。目前,嵌入式系统带来的工业产值已超过一万亿美元,它 正在成为i t 产业争夺的重点之一,针对如此巨大的市场,围绕嵌入式系统开发 展开研究也就成为计算机软硬件技术发展最活跃的方向之一。嵌入式系统是将 先进的计算机技术、半导体技术和电子技术与各行业中具体应用相结合。 嵌入式系统就是设计完成复杂功能的硬件和软件,并使它们紧密地耦合在 一起的计算机系统,可专用于实时控制、监视、管理或辅助其他设备设施运行。 嵌入式系统的“嵌入”反映了该计算机系统通常是更大系统中的一部分,这个 更大的部分称为( 被) 嵌入的系统。“嵌入”这个词意味着这些系统本身与其所 控制和管理的( 被) 嵌入的系统是融为一体的,是其中的一个有机组成部分。 若( 被) 嵌入的系统是一个过程控制系统,则嵌入式系统可作为控制系统的基 本构造单元。嵌入式系统可以由硬件或软件实现,硬件形式的嵌入系统多为专 用的或可编程控制的芯片,而软件形式的嵌入式系统则主要是各种专门用途的 控制软件系统。 一个典型的嵌入式系统的组成结构如图2 4 ,所示 图2 4 嵌入式系统的组成结构图 2 3 2 嵌入式软件测试特点 由于嵌入式系统自身的特点,如实时性,内存不丰富,输入,输出通道少, 开发工具昂贵,并且与硬件紧密相关,c p u 种类繁多等原因,嵌入式软件的测 试比一般商用软件的测试更为复杂,可以说嵌入式软件是最难测试的一种软件。 嵌入式系统主要特点有【l 】:首先以应用为中心,功能单一,嵌入式系统不 会同时载入执行多个程序,一般情况下只执行固定的程序,例外的情况下或者 1 3 第2 章软件测试及其自动化技术 是程序被新的版本刷新,或者是几个程序轮流进入内存,其次是严格的约束, 系统对功能、可靠性、成本、体积、功耗等有综合性的严格要求,因而一般嵌 入式系统的软硬件可裁减,以适应应用;最后的但却经常是最重要的是反应性 和实时性,嵌入式系统需要不断地对所处的环境的变化做出反应,要在规定的 时间内得出计算结果。 对于有实时要求的嵌入式系统,它的安全性需要满足:系统须产生正确的 结果,称为逻辑或功能正确;计算须在预定的周期内完成,称为时间正确。嵌 入式系统的实时性对系统安全性有重要影响。实时系统属于确定性系统,响应 时间决定事件是有界的,这意味着系统的每个部分也必须具备确定的行为。确 定性使得系统很难适应变换的环境,缺少适应性意味着系统不够鲁棒。因而尽 管一些有实时要求的嵌入式系统在正常环境条件下可以安全运行,但当环境变 化时就有意外产生。 嵌入式系统的实时要求分为硬实时和软实时。硬实时系统是对超越最终期 限的情况的容忍程度极低的或零容忍( z e r ot o l e r a n c e ) 的实时系统。最终期限必 须满足,否则发牛灾难。这种灾难后果很恶劣,甚至会导致人员伤亡。最终期 限之后得到的计算结果或者是无用、或者是高度贬值。软实时系统也必须满足 最终期限要求的,但它是有一定灵活性的实时系统。最终期限可以包含可变的 容忍等级、可以是平均的最终期限,甚至是带不同程度的可接受的响应时间的 统计分布。软实时系统中,超过期限不会导致系统的失败,但根据应用的性质, 代价会随延迟时间成比例增加【2 】。所以,对嵌入式系统的安全性的关注,应着 重放在硬实时的需求上。 根据上述分析,总结嵌入式系统主要有以下5 个特点: l 、实时性约束 与通用软件不同,嵌入式软件多有实时性约束,即软件运行的正确性不仅 由系统的功能和行为决定,而且还依赖于系统的时间特性【1 5 】:另外,软件执行 处理的速度不仅由目标处理器的速度来决定,而且还取决于在系统上施加的对 外界事件处理的时间性约束。 2 、嵌入在目标环境中运行 嵌入式软件多是运行在用户定制的硬件目标板上,与用户特定的应用环境 相关,有很多用于控制外部设备的软硬件接口,这就给嵌入式软件的测试带来 了困难,例如软件硬件错误的区分、测试时需要考虑硬件特性以及测试时硬件 1 4 第2 章软件测试及其自动化技术 激励信号的产生和结果的响应等问题。 3 、并发多任务 嵌入式程序多采用并发多任务的结构来开发,多任务的实现靠c p u 在很多 任务之间转换、调度实现。多任务运行使得c p u 的利用率得到最大的发挥,并 使嵌入式软件变得模块化。在实时应用中,多任务化的最大特点是开发人员可 以将很复杂的应用程序层次化,程序更容易设计和维护。 4 、行为不确定性 实时嵌入式软件把从外界接收的输入作为一个异步中断进行处理,因为外 界的输入事件随时都可能发生,所以对于一个给定时刻,我们很难准确预测程 序的执行点,程序在重复执行的过程中可能产生不同的行为。这样,由于被测 软件运行行为的不确定性,导致测试过程中要使得错误再次出现非常困难。 5 、可测性差 嵌入式软件的上述特性严重限制了软件执行的可控性和可视性,导致嵌入 式软件的可测性差,给测试工作带来了很大的难度。 2 3 3 嵌入式系统软件测试 目前,通过软件测试来发现和定位嵌入式软件中错误的方法效率很低,而 且嵌入式软件中的错误很难定位和修改,需要耗费很多的资金和代价来完成嵌 入式软件质量的保证。通常嵌入式软件的可靠性要求都很高,特别在通讯、工 控、航天、军事等领域;另外,随着嵌入式系统的不断发展和普及,嵌入式软 件的规模和复杂度不断增加,嵌入式软件的质量也变得难以控制,因此如何在 嵌入式软件投入使用之前进行严格和充分的测试以保重其可靠性是至关重要 的,使嵌入式软件测试技术成为软件工程领域中研究的热点。 正如在2 3 2 中分析的,嵌入式软件的诸多特性给嵌入式软件的开发带来 了新的挑战,增加了嵌入式软件的测试的难度。嵌入式软件的测试人员,不仅 要设计白盒测试和黑盒测试的测试用例,而且还要对被测软件进行实时性、多 任务并发性、中断处理以及软硬件接口等方面的测试。 嵌入式软件测试过程可以分为四个阶段【3 】 单元测试 集成测试 系统测试 1 5 第2 章软件测试及其自动化技术 硬件软件集成测试 前三个阶段的测试是任何软件测试过程中共同具有的部分,第四个阶段是 嵌入式软件测试过程中特有的,嵌入式软件不仅要求软件行为的正确性,而且 它要与其被控制的硬件设备实现正确的交互。在具体测试过程中可包含以下几 个方面的测试工作: 任务测试:首先独立测试测试系统中的每个任务,对每个任务设计白盒 测试和黑盒测试用例。任务测试可以发现任务中的逻辑错误和功能错 误,不能发现实时性错误和行为错误: 行为测试:通过使用c a s e 工具创建的软件模型来仿真实时系统,按照 外部事件( 如中断、控制信号和数据) 的序列检查其行为的正确性,可 以先对每个事件进行独立测试,然后随机的把事件输入给系统来检查系 统行为的正确性: 任务间测试:独立的任务测试完成后,就可以多个任务一起来测试时间 相关的错误,错误用不同的数据率和处理负载来测试任务间的通信,来 确定任务间的同步是否会产生;另外,测试通过消息队列和数据存储进 行通信的任务以发现这些数据存储区域大小方面的错误。 集成测试:集成软件和硬件一起测试,来发现软硬件之间接口错误,同 时测试是否存在中断处理方面的错误,包括中断优先级的分配是否正 确、中断的处理是否正确、中断处理是否满足时问要求、多个中断出现 的情况下系统的功能和性能是否存在问题。 对于实时嵌入式系统的测试,前人在实践工作的基础上经过总结提出了以 下测试的原理【4 】: 设计某种方法,以在实时或参数模拟实时的情况下测试每个系统的状 态; 设计某种方法,模拟在当前阶段测试中缺少的任何模块,以便实时测试 能够执行; 评价在特定条件下系统可能的死锁、失效和灵敏度; 使用模拟软件错误或特殊系统条件的测试; 使用硬件模拟对软件设计进行压力测试。 目前的嵌入式软件的测试技术和方法还不够完善和成熟( 详细内容参见2 3 5 ) ,有待于以后开展更多的研究工作来有效保证嵌入式软件的质量。 1 6 第2 章软件测试及其自动化技术 2 3 4 嵌入式软件测试策略 嵌入式软件与一般软件最大的不同是:嵌入式软件的最终运行环境是在资 源相对稀少的嵌入式平台上,而一般软件可能运行在高性能的p c 机或超级计算 机之上。尽管存在着这样的不同点,但并不妨碍一般软件测试策略在嵌入式软 件测试上的应用。一般软件的单元测试、集成测试、系统测试和确认测试策略, 在适当条件下,同样适用于嵌入式软件的测试。这种适当的条件,我们也可以 看成是嵌入式软件测试的独特策略。为了知道这种适当的条件到底是什么,首 先应关注目前嵌入式软件开发的主要方式。 在嵌入式系统中,开发环境称为主机( h o s t ) 平台;最终运行环境称为目标 ( t a r g e t ) 平台。嵌入式软件开发有两种典型的开发方式:一种是在实际目标平 台上开发源代码,包括编辑、编译和调试:另一种是使用主机平台编辑和编译 源代码,之后将可执行代码移到目标机上调试。后一种方法也称之为交叉开发。 目标机和主机的运行速度差别使得交叉开发方法成为最好的选择。你有 5 0 0 m h z + p e n t i u m 处理器,为什么还要选择在5 0 m h z 的p o w e r p c 目标板上编译 昵? 这样的交叉开发环境,同时也提供了交叉测试的环境。交叉开发的有利因 素同样在交叉测试过程中得到体现。这就是我们一再提到的适当条件,即嵌入 式软件测试的交叉测试策略。嵌入式软件的单元测试、集成测试都可以放在主 机环境下完成;最终
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SSBME 2-2025家用LED紫外治疗设备
- T/SATA 081-2024食品中二氧化硫残留量的测定 间断化学分析法
- T/CSWSL 044-2025猪舍吊装轨道巡检机器人
- T/CI 080-2023富有机硒脐橙生产技术规程
- T/CSPSTC 185-2025深埋地下管道数字化综合探测技术规程
- T/SSX 012-2024发酵人参粉
- 2025-2026学年辽宁省营口市初中数学九年级期末上册高分快速提分卷详细参考解析
- Photoshop CS2 试题及详细参考答案
- 2025-2026学年四川省广元市初中数学八年级期末下册点睛提升黑金试题(附答案)
- 废旧电缆回收拆解操作规程
- 2026年学校德育体系实施方案-五维融通,三阶递进
- 山东省菏泽市菏泽经济技术开发区2026-2027学年七年级上学期10月阶段检测语文试题(含答案)
- 2026年广东省公需课《加快培育发展新质生产力》考试答案
- 2026年农田废弃物的资源化利用路径
- 2026年公路水运工程助理试验检测师练习题附答案
- 2026年成人高考专升本政治真题试卷及完整答案解析(官方标准)
- 检验检测机构法律法规政策培训测试题及答案
- 中远海运集团招聘笔试题目及答案
- 2026中国电信历年考试笔试题库及答案
- 护理副高职称评审答辩自我介绍模板
- 中国糖尿病周围神经病变诊疗指南2025版
评论
0/150
提交评论