




已阅读5页,还剩85页未读, 继续免费阅读
(计算机系统结构专业论文)一种集成式的java+me软件自动测试系统.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 摘要 j a v a 平台分为j 2 s e 、j 2 e e 和j 2 m e 三大平台,分别对应于不同的应用。j a v a m e 是j a v am i c r oe d i t i o n 的简称。它定位在嵌入式系统的应用上,可以用于手机、p d a 等产品。因为j a v a 的跨平台性,一个j a v am e 程序不用做任何修改就可以在任意 支持j a v a 的设备上运行。因此,j a v am e 在软硬件环境非常复杂的嵌入式软件开 发中非常具有实用价值。 人们对软件测试的重要性已经达成了广泛的共识。j a v am e 技术被广泛应用的 同时,j a v am e 测试的重要性也越来越受到人们的关注。因此,有关j a v am e 程序 测试方面的相关研究也成为了当前嵌入式领域研究的一个热点。 本文首先分析了软件测试的相关理论和技术;接下来在研究和对比了当前流 行的j a v am e 测试框架的基础上,选择j th a m e s s m ef r m a e w o r k 作为本课题使用 的测试框架;并以该框架和n e t b e a n s 6 5 平台为基础,研究并实现了一种集成式的 j a v am e 软件自动测试系统。本文的一项主要工作是提出并实现了集成式测试套件 的设计与创建方法,通过插件模块的形式扩展n e t b e a n s 平台的功能,以此筛选出 n e t b e a n s 中的j a v am e 项目,自动生成一个与源j a v am e 项目相集成且又相对独 立的j th a r n e s s m ef r m a e w o r k 测试套件,并提供了自动编译和执行测试套件的功 能。本文的另一项主要工作是提出并实现了自动获取测试信息并根据源程序和 u m l 状态图生成测试数据的方法,据此生成j th a r n e s s 可以执行的测试类;在基 于源程序生成测试数据和生成测试类时引入了j d k l 6 和n e t b e a s 6 中最新的程序 解析技术,在基于u m l 状态图中生成测试数据时达到了迁移覆盖准则。 通过研究和试验,两项主要任务均已完成,基本上达到了预期的目标。相信 本文的研究和工作可以为以后的j a v am e 自动测试方面带来一定的参考价值。 关键词:j a v am e ;n e t b e a n s ;测试框架;自动测试;j th a r n e s s 英文摘要 a b s t r a c t j a v ap l a t f o r mi sd i v i d e di n t oj a v as e ,j a v ae ea n dj a v am e ,a n de a c hh a si t s d i s t i n c ta p p l i c a t i o ns c o p e j a v am ei st h ea b b r e v i a t i o no fj a v am i c r oe d i t i o n i ti s p o s i t i o n e di nt h em o b i l ea p p l i c a t i o ns y s t e ma n dc a l lb eu s e df o rm o b i l ep h o n e ,p d aa n d o t h e re m b e d d e dp r o d u c t s b e c a u s eo fj a v ac r o s s - p l a t f o r mn a t u r e , t h ej a v am es o f t w a r e c a l lr u no nt h ee q u i p m e n t ss u p p o r t i n gj a v a , w i t h o u ta n ym o d i f i c a t i o n s o ,j a v am eh a s p r a c t i c a lv a l u ei nt h ee m b e d d e ds o f t w a r ed e v e l o p m e n tt h a tt h es o f t w a r ea n dh a r d w a r e e n v i r o n m e n ti sv e r yc o m p l i c a t e d a tp r e s e n t ,p e o p l eh a v er e a l i z e dt h ei m p o r t a n c eo fs o f t w a r et e s t i n g j a v am e t e c h n o l o g yi sw i d e l yu s e da tt h es a l l l et i m e ;t h ei m p o r t a n c eo fj a v am et e s t i n gh a s a t t r a c t e dm o r ea n dm o r ea t t e n t i o n t h u s ,t h er e s e a r c hi nt e s t i n go f j a v am es o f t w a r eh a s b e c o m eah o ta r e ao f r e s e a r c hi ne m b e d d e df i e l d i nt h i sp a p e r , f i r s to fa l l ,w eh a v ea n a l y s e ds o f t w a r et e s t i n gt h e o r ya n dt e c h n o l o g y ; a n dt h e n ,o nt h eb a s i so fs t u d y i n ga n dc o m p a r i n g 晰t l lav a r i e t yo fp o p u l a rj a v am e t e s t i n gf r a m e w o r k s ,c h o o s ej th a m e s s m ef r m a e w o r ka st h et e s tf r a m e w o r kt h a tt h i s s u b j e c tu s e s ;t h e nb a s e do nt h i sf r a m e w o r ka n dn e t b e a n s 6 5 ,s t u d ya n dr e a l i z ea n i n t e g r a t e dj a v am es o f t w a r ea u t o m a t i ct e s t i n gs y s t e m am a j o rt a s ko ft h i sa r t i c l eh a s p r o p o s e da n dr e a l i z e dt h ed e s i g no fi n t e g r a t e dt e s ts u i t ea n dt h em e t h o do fe s t a b l i s h i n g t h et e s ts u i t e w ef i r s td e s i g nan e t b e a n sm o d u l ep r o j e c tt o e x p a n dt h ef u n c t i o n so f d e v e l o p m e n tp l a t f o r m t h ef u n c t i o n so ft h em o d u l ea r es e l e c t i n gj a v am ep r o j e c ti n n e t b e a n s ,c r e a t i n gaj th a r n e s s m ef r m a e w o r kt e s t s u i t ea u t o m a t i c a l l ya n d p r o v i d i n gac o m p i l e ra n di m p l e m e n t a t i o nf o rt h et e s ts u i t e t h eo t h e rm a j o rt a s ko ft h e a r t i c l eh a sp r o p o s e da n dr e a l i z e dt h em e t h o do f o b t a i n i gt e s ti n f o r m a t i o na n dp r o d u c i n g t e s td a t ab a s e do i lt h es o u r c ec o d e sa n du m ls t a t e c h a r t s i ta l s oh a sp r o d u e d et h e c l a s s e si m p l e m e n t e db yj th a m e s s m ef r a m e w o r kb a s e do nt h et e s td a t a w h e n g e n e r a t i n gt e s td a t ab a s e do ns o u s ec o d e sa n dp r o d u c i n gt e s tc l a s s e s ,t h ea r t i c l eh a s u s e dt h en e wp r o c e d u r ea n a l y s et e c h n o l o g yo f f e r e db yj d k l 6a n dn e t b e a s 6 w h e n g e n e r a t i n gt e s td a t ab a s e do nu m ls t a t e c h a r t s ,t h ea r t i c l eh a sa c h i e v e dt h et r a n s i t i o n c o v e r a g ec r i t e r i a 英文摘要 - _ _ _ - 一_ 一 t h r o u g hr e s e a r c ha n dt e s t i n g , t h et w om a i nt a s k sh a v ea l r e a d yb e e nf i n i s h e d ;t h e p a p e rf i n a l l ya c h i e v e st h es c h e d u l e dg o a l s t h ea u t h o rb e l i e v e st h er e s e a r c hi nt h i s p a p e rh a sac e r t a i nr e f e r r i n gv a l u e so nj a v am ea u t o m a t i ct e s t i n g k e yw o r d s :j a v am e ;n e t b e a n s ;t e s t i n gf r a m e w o r k ;a u t o m a t i ct e s t ;j th a r n e s s 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成硕士学位论文:二独塞盛式的曼型垦m 垦筮往自动测达丕统:。除论文中 已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中 以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已经公开 发表或未公开发表的成果。本声明的法律责任由本人承担。 学位论文作者签名:王正磊 学位论文版权使用授权书 本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学 位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。同意将本学位论文收录到中国优秀博硕士 学位论文全文数据库( 中国学术期刊( 光盘版) 电子杂志社) 、中国学位论 文全文数据库( 中国科学技术信息研究所) 等数据库中,并以电子出版物形式 出版发行和提供信息服务。保密的论文在解密后遵守此规定。 本学位论文属于:保密口在年解密后适用本授权书。 不保密口( 请在以上方框内打“) 论文作者躲王正磊导师张栅罕 日期:妒7 年7 月垆日 一种集成式的j a v am e 软件自动测试系统 第1 章绪论 1 1 研究背景及意义 j a v a 的历史最早可追溯到1 9 9 1 年s u n 公司内部一个名为g r e e n ,以为家用消 费电子产品开发分布式代码系统为目的的项目。项目最开始将目标定在数字电视 市场,由于市场不成熟,并没有引起大的反响。后来,项目组将目标定位在互联 网上,于1 9 9 5 年5 月2 3 同正式向全世界推出了j a v a 语言。j a v a 的推出迅速引起 了轰动,“一次编写,到处运行的特性使人耳目一新。短短数年,j a v a 已经造 成了深远的影响,获得了市场的广泛认可【7 ,9 1 。 s u n 公司于1 9 9 8 年推出了j a v a 2 ,将j a v a 平台分为j 2 s e 、j 2 e e 和j 2 m e 三 大平台,分别对应于不同的应用。在2 0 0 5 年的j a v ao n e 大会上,s u n 公司宣 布将j a v a 2 中的2 去掉,三大平台分别更名为j a v as e 、j a v ae e 和j a v am e t 8 1 。 j a v am e 是j a v am i c r oe d i t i o n 的简称,它是为机顶盒、移动电话和p d a 之类 嵌入式消费电子设备提供的高度优化的j a v a 语言平台。它只支持j a v as e 标准核 心类库的一个子集,还增加了一些支持嵌入式系统的扩充类库,定位在嵌入式系 统的应用上,可以用于手机、p d a 等产品上。它借用了j a v as e 类库的一部分, 使用了更少的a p i ,而且其采用的j a v a 虚拟机比j a v as e 的j v m 也要小得多【7 】。 回顾j a v a 的历史,可以看出:j a v a 天生就是非常适合嵌入式开发的; “一次 编写,到处运行的特性在软硬件环境纷繁复杂的嵌入式设备开发环境下非常具 有实用价值。 通信技术、网络技术正在飞速发展,我们能够使用任何设备( p d a 、计算机、 手机等) 、在任何时间、任何地点获得所需要的任何服务( 接收邮件、购物、股 票查询、玩游戏等) 的理想正在逐步实现。当然,这些服务中的一部分可能在一 定的范围内已经得到了实现,但是,随着3 g 网络的实施,这些嵌入式设备所提供 的服务还有更加广泛的市场。由于j a v am e 先天的优良特性,使得它成为了实现 这些服务时,在软件层面上最好的实现技术和语言【l o 】。 第1 章绪论 软件开发的各个阶段都需要人的参与。因为人的工作和通信都不可能完美无 缺,出现错误是难免的。与此同时,随着计算机所控制的对象的复杂程度不断提 高和软件功能的不断增强,软件的规模也在不断增大。软件测试是保证软件质量 和可靠性的重要手段”j 。 j a v am e 是应用于嵌入系统的j a v a 版本,研究j a v am e 软件的自动测试,除 了要研究软件测试的相关知识和技术外,还需要根据其特性了解面向对象的软件 测试、软件自动化测试和嵌入式软件测试等方面的知识和技术。 1 2 软件测试技术现状分析 目前,人们对软件测试的重要性已经达成了广泛的共识。软件测试已从软件 工程中的一个阶段独立出来,成为了一个专门的研究方向。本节先介绍软件测试 的概念、基础理论和测试的分类等,然后阐述了面向对象的软件测试,自动化测 试和嵌入式软件测试。 1 2 1 软件测试概述 1 1 软件测试的定义、目标和重要性 软件测试就是发现系统需求定义、系统设计、程序代码和文档中的缺陷,这 样简单认识软件测试是不够的。g j m y e r s 给出的定义:“程序测试是为了发现错 误而执行程序的过程。这个定义被软件测试行业认可,并经常被引用。但实际 上,这样的定义还不能完全反映软件的内涵,它仍局限于“程序测试。随后, g j m y e r s 进一步提出了有关程序测试的3 个重要观点:【2 】 测试是一个为了发现错误而执行程序的过程。 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。 一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。 在i e e e1 9 8 3o fi e e es t a n d a r d7 2 9 中给软件测试下了一个标准的定义:“使 用人工或自动手段来运行或测定某个软件系统的过程,其目的的在于检验它是否 满足规定的需求或是弄清预期结果与实际结果之间的差别 。这里明确地提出软 件测试的目标是检验是否满足需求【3 1 。 一种集成式的j a v am e 软件自动测试系统 实践证明,尽管人们在开发软件的过程中使用了许多保证软件质量的方法和 技术,但开发出的软件中还会隐藏许多错误和缺附3 1 。这对于规模大、复杂性高的 软件更是如此。所以,严格的软件测试对于保证软件质量具有重要作用。而且, 软件测试在软件生存期中也占有重要的地位,这是因为测试阶段占用的时间、花 费的人力和成本占软件开发的很大比重。 因此,软件测试必须得到充分的重视,因为即使是经验丰富的程序员,也难 免在编码中发生错误,更何况在设计甚至分析阶段就可能存在对系统理解的偏差。 大量统计表明,软件测试的工作量往往占软件开发总工作量的4 0 以上,并且现 今有很多机构趋向于在测试中投入更多的精力【1 6 1 。但要指出的是测试并不能发现 所有的错误,它只能尽可能多的发现错误。e w d i j k s t r a 也说过:测试只能证明程 序有错,不能保证程序无错【2 1 。 2 ) 软件测试过程 软件测试是软件生命周期中一个阶段,这一阶段发生在软件实现完成之后和 交给用户使用之前,这是人们对软件测试较早的认识。于1 9 7 0 年前后出现的瀑布 开发模型反映了人们在较早时期对测试工作的认识。图1 1 是瀑布开发模型【2 8 】: 圃 图1 1 瀑布开发模型 f i g 1 1w a t e r f a l ld e v e l o p m e n tm o d e l 瀑布模型的主要缺点之一就是:在软件生命周期中各阶段极少有反馈。在这 种开发模型中测试阶段与其它开发阶段被割裂开来。按照这种思路开发,等到软 第1 章绪论 件实现完成之后再测试,会掩盖一些在软件设计甚至更早的阶段所产生的一些错 误和缺陷,以至于使得许多工作都成了无用功,不得不返工重做。 软件测试模型研究随着软件工程的发展而越来越深入,在2 0 世纪8 0 年代后 期p a u lr o o k 提出了著名的软件测试的v 模型,旨在改进软件开发的效率和效果。 v 模型反映出了测试活动与分析设计活动的关系【2 8 】。在图1 2 中,从左到右描述了 基本的开发过程和测试行为,非常明确地标注了测试过程中存在的不同类型的测 试,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 图1 2v 模型 f i g 1 2 v m o d e l v 模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求; 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试 确定软件的实现是否满足用户需要或合同的要求。但v 模型存在一定的局限性, 它仅仅把测试作为在编码之后的一个阶段,是针对程序进行的寻找错误的活动, 而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。 e v o l u t i f 公司针对v 模型的缺陷,提出了w 模型。w 模型增加了软件各开发 阶段中应同步进行的验证和确认活动。如图1 3 所示,w 模型由两个v 字型模型 组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。w 模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、 设计等同样要测试,即测试与开发是同步进行的。它有利于尽早地、全面地发现 问题【2 4 1 。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活 一种集成式的j a v am e 软件自动测试系统 动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度 和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。 l用户需求l l 验收测试准备l l 需求分析与设计 系统测试准备 l 概疵计 验收测试准备 圆e 巫四 图1 3w 模型 f i g 1 3 w m o d e l 但w 模型也存在局限性。在w 模型中,需求、设计、编码等活动被视为串行 的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束, 才可正式开始下一个阶段工作。虽然w 模型有这些局限,但是w 模型所表达的以 下同几点是在软件测试界已达成广泛共识的:测试伴随着整个软件开发周期;测 试的对象不仅仅是程序,需求、设计等同样要测试;测试与开发是同步进行的; w 模型有利于尽早地全面的发现问题。 如前所述,v 模型和w 模型都把软件的开发视为需求、设计、编码等一系列 串行的活动,而事实上,这些活动在大部分时间内是可以交叉进行的。因此,相 应的开发与测试之间不再存在严格的次序关系。同时,单元测试、集成测试、系 统测试等也存在反复和交替,不一定始终保持前后顺序关系。为了解决这些问题, 有专家提出了h 模型,它将测试视为一个完全独立的活动,具有自己完全独立的 流程【2 4 1 。该流程主要包括测试准备活动和测试执行活动,如图1 4 所示: 第1 章绪论 测试就绪点 测试准备 ,、 测试执行 测试流程 ,一、 测试执仃 ”“ 一l 户 = 一一、t 、 :! 其他开发流程 :一j 一一一一一一一一一一一一一一一一一 图1 4h 模型 f i g 1 4 h m o d e l 上图表示了软件开发某个阶段所对应的测试活动。图中标的其他流程可以是 任意的开发流程,如设计流程或编码流程。也就是说,只要测试准备就绪了,就 可以开始测试执行活动。在整个软件生命周期内,存在多个这样独立的测试流程, 这个流程与其他流程并发地进行。h 模型也包含了软件测试要尽早准备、尽早执 行的思想,并且,不同的测试活动也以按照某个次序先后进行,也可以按照其他 的顺序展开,哪个阶段的测试活动达到测试就绪点,测试活动就可以开始。 所以说,软件测试是程序的一种执行过程,它是软件生命周期中一项非常重 要且非常复杂的工作,对软件可靠性保证具有极其重要的意义【l 】。一套完整的测试 应该由五个阶段组成【1 ,2 别: 测试计划:首先,根据用户需求报告中关于功能要求和性能指标的规格说 明书,定义相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的 测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的, 反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测 试时间及测试资源等。 测试设计:将测试计划阶段制订的测试需求分解、细化为若干个可执行的 测试过程,并为每个测试过程选择适当的测试用例。 测试开发:建立可重复使用的自动测试过程。 测试执行:执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进 行跟踪管理,测试执行一般由单元测试、集成测试、系统测试及回归测试等 步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。 一种集成式的j a v am e 软件自动测试系统 测试评估:结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量 和开发团队的工作进度及工作效率进行综合评价。 测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结 构,精心设计一组“高产的测试用例,利用这些用例执行程序,找出软件潜在 的缺陷。所以,我们才会说:一个好的测试用例很可能找到至今为止尚未发现的 缺陷;一个成功的测试则是指揭示了至今为止尚未发现的缺陷的测试【l 】。 3 ) 测试用例 在软件测试中,测试用例是一个十分重要的概念,它一定成度上决定了某个 测试是否成功。如何实现测试目标、完成任务,是借助测试用例来实现的。在进 行软件测试时,测试用例就类似“操作指导书 或“实验指导书,它告诉我们 如何操作,什么样的结果算是测试通过。测试用例是必不可少的、重要的测试件 ( t e s tw a r e ) 之一,测试用例是测试执行的基础,这是对测试用例的基本理解【2 】。 从组织管理等多方面考虑,测试用例还能使测试的成本降低,并可重复使用,而 且也是检测测试效果的重要因素【1 1 。设计良好的测试用例是测试的最重要的工作, 测试用例选择的好坏将直接影响测试结果的有效性。 测试用例就是一组输入数据和与之对应的预期的输出结果,这个说法有一定 道理,但不全面。测试用例是为某个特定测试目标而设计的,它是测试操作过程 序列、条件、期望结果及相关数据的一个特定集合。一个测试用例必须给出测试 目标、测试对象、测试环境要求、输入数据和操作步骤,概括为5 w 1 h 2 】: 测试目标:讹y 一一为什么而测? 功能、性能、可用性、容错性、兼容性、 安全性等。 测试对象:w h a t 一一测什么? 被测试的项目,如对象、函数、类、菜单、 按钮、表格、接口整个系统等。 测试环境:啪e r e 一一在哪里测? 测试用例运行时所处的环境,包括系统 的配置和设定等要求,也包括操作系统、浏览器、通讯协议等环境。 测试前提:w h e l l 一一什么时候开始测? 测试用例运行时所处的前提或条件 限制。 第1 章绪论 输入数据:w k c h 一一哪些数据? 在操作时,系统所接受的各种可变化的 数据,如数字、字符、文件等。 操作步骤:h o w 一一如何测? 执行软件和程序的先后次序步骤等。如打开 对话框、点击按钮等。 这还不够,因为缺少一个评判的依据。如果没有评判标准,在执行完测试用 例后,就不能根据测试结果来确定是否通过。所以,每个测试用例必须说明其输 出标准一一所期望的输出结果。所期望的输出结果,实际就是测试的验证点,每 个测试用例最好只有一个验证点【2 1 。当然,一个完整的测试用例还应该包括一些版 本信息等。在设计测试用例时,应包括合理的输入数据和不合理的输入数据。 1 2 2 软件测试分类 软件测试有多种不同的分类方法,下面是几种常用的分类: 从是否关心软件内部结构和具体实现的角度划分【2 】: 白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工 作过程和逻辑结构,针对程序语句、路径、变量状态等来进行测试。 黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在完全不考虑程 序内部结构的情况下考察数据的输入、条件限制和数据输出,进而完成测试。 灰盒测试:灰盒测试介于二者之间,是程序与规约相结合的方法,可理解 为,灰盒测试既关注输出对于输入的正确性,也关注内部表现,但不象白盒 那样详细,只是通过一些表征性的现象、标志来判断内部的运行状态。 从是否执行程序的角度划分【1 6 】: 静态测试:静态测试是不执行程序代码而寻找程序代码中可能存在的缺陷 或评估程序代码的过程。静态测试包括主要由人工进行的代码审查、代码走 查、桌面检查以及主要由软件工具自动进行的静态分析。如果广义地理解,静 态测试还包括软件需求分析和设计阶段的技术评审。 动态测试:动态测试通过在抽样测试数据上运行程序来检验程序的动态行 为和运行结果以发现缺陷。动态测试包括生成测试用例、运行程序和验证程 序的运行结果3 部分核心内容,以及文档编制、数据管理、操作规程及工具 一种集成式的j a v am e 软件自动测试系统 应用等辅助性工作。动态测试最重要的问题是生成测试用例的策略。它是动 态测试有效、高效的关键。测试用例包括输入数据和期望结果。 上面两种分法有一定的联系,即黑白灰这三种测试技术都是要运行程序的, 都是动态测试,它们的关系可通过图1 5 表裂16 】: 软件测试技术 i 广 静态测试技术 l - r 厂t _ t 毡毡蠢鬈某码码面态术 塞差馨菥琴查查查析审 动态测试技术 自盒测 程序与规约相结 黑盒测 试技术 合的测 厂t _ t _ 丌i 控域符程变数 制测号序异据 流试执插测流 测行装试测 试试 图1 5 软件测试技术的分类 f i g 1 5c l a s s i f i c a t i o no ft h es o f t w a r et e s t i n gt e c h n o l o g i e s 状 态 测 试 事 务 流 测 试 从软件开发的过程按阶段划分有【2 】: 单元测试:对软件基本组成单元进行测试,也是软件测试过程中最早期的 测试活动。测试对象是软件设计的最小单位,即模块或组件,也可以包括类 或函数,软件单元具有独立性,可以将它与系统其他部分隔离出来完成测试。 集成测试:将已分别通过测试的单元按要求组合起来再进行的测试,检验 这些单元之间的接口是否存在问题。集成测试一般是逐渐加入单元进行测试, 直至所有单元被组合在一起,成功地构成完整的软件系统。 系统测试:充分运行或模拟运行软件系统,以验证系统是否满足产品的质 量需求,特别是非功能性的质量需求。与功能测试的区别在于系统测试主要 指压力测试、容量测试、性能测试、安全性测试和可靠性测试等。系统测试 可以和功能测试并行进行,但基本功能已能正常运行后,才能进行系统测试。 验收测试:在软件产品完成了系统测试之后、产品发布之前所进行的软件 测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试严格 正交实验设计 边界值分析 判定表因果图 等价类划分 第1 章绪论 地对照说明书检查对软件产品做出的各方面要求,确保开发的软件符合用户 预期的各项要求,即验收测试是检验产品和产品规格说明书的一致性,同时 考虑用户的实际使用环境、数据和习惯等。它的重要特征就是用户参与。 回归测试:由于软件修改或变更,对修改后的版本所有可能影响的范围进 行测试。回归测试的目的是发现原来正常的功能特性出现新的问题一一回归 缺陷,从而确保原来正常或符合要求的特性不受其他区域修改的影响。回归 测试伴随着整个测试过程,在功能测试和系统测试、单元测试和集成测试中, 一旦有变更或修正,都要进行相应的回归测试。 1 2 3 面向对象的软件测试 j a v a 是一种面向对象的编程语言,要做j a v am e 程序测试的研究,还要先了解 一下有关面向对象的软件测试的一些情况。 随着面向对象分析和面向对象设计技术的同渐成熟,面向对象的软件开发技 术得到了软件界的普遍认可【5 1 。面向对象技术虽然使用了更先进的系统结构,更规 范的编程风格,极大的优化了数据使用的安全性,提高了程序代码的重用【2 5 1 。但 无论采用什么样先进的设计和编程技术,设计人员和编程人员的错误都是不可避 免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免 错误的繁衍。因此,软件测试并没有因为面向对象编程的兴起而丧失掉它的重要 性【2 5 】。 由于面向对象的程序设计语言提供了数据抽象、继承、多态和动态绑定等机 制,一度实践证明行之有效的软件测试对面向对象技术开发的软件多少显得有些 力不从心【2 0 1 。因此,面向对象软件测试技术的研究逐渐受到人们的重视。 面向对象的软件测试是面向对象软件工程的重要过程。它是指对于用面向对 象技术开发的软件,在测试过程中继续采用面向对象技术,进行以对象为中心的 软件测试。面向对象的软件测试以对象的类作为基本测试单位,查错范围主要是 类定义内的属性和服务,以及对外接v i 所涉及到的部分。运用面向对象的技术, 在测试中可以更准确地发现程序错误并提高测试效率。 1 ) 面向对象的软件测试分类 一种集成式的j a v am e 软件自动测试系统 从面向对象程序的结构出发,并对照传统软件中测试人员普遍接受四个级别 的测试,即单元测试、集成测试、系统测试和验收测试,可以把面向对象的程序 测试应当分为四个级别【2 5 】: ( 1 ) 行为级测试:测试类中的每一个方法的实现过程。 ( 2 ) 类级测试:测试同一类中不同方法之间的交互关系。 ( 3 ) 簇级测试:簇是一组相互协作的类,簇级测试是测试其协作类之间的交互 关系。 ( 4 ) 系统级测试:测试同一系统的不同簇之间的交互关系及系统功能的实现, 检验系统是否符合要求。 在上述四个级别中在方法级和系统级上与传统过程式软件测试是类似的,在 类级和簇级上则面临新的问题。因为簇级测试的是相互协作的类,因此主要矛盾 就集中在类级测试上了。 面向对象的程序中,对象封装了描述其属性的数据以及可以施加在这些数据 上的操作的封装体。属性表示对象的状态,操作表示对象的行为,消息则描述了 对象执行操作的规格说明。对象之间通过发送消息启动相应的操作,通过修改对 象的状态,实现系统状态间的相互转换。类是对具有相同属性和行为的一组相似 对象的描述,它描述了该类对象所具有的共同特征【5 1 。 在面向对象方法中,类是一个独立的程序单位。类级测试的重点是类的静态 结构和类对象运行时的动态行为。类级测试方法主要有以下五方面:基于状态的 测试、a s t o o t ( a s e to f t o o l sf o ro b j e c t - o r i e n t e dt e s t i n g ) 方法、基于方法序列的测 试、基于数据流的测试、变异测试。 类级测试的重点是类对象运行时的动态行为,状态机作为描述类的动态行为 的有效途径,在类级测试中越来越受到人们的重视。在上述的五个方法中基于状 态的测试以类的有限状态机模型( f s m ) 和其状态转换图为依据,这种模型可以由软 件的代码或规约生成,采用此方法进行测试时,主要检查由初态是否能正确地到 达图中的各个状态,以及各个状态之间的迁移是否能正确实现。u m l 状态图本质 上是一个扩展的有穷自动机,它通常用于类级测试【挣】。 第1 章绪论 2 ) 测试充分性准则 测试充分性准则是根据被测软件在有限测试数据上的行为判断它在所有输入 数据上的行为的逻辑基础,是决定被测软件的测试集是否充分的准则【1 6 1 。测试充 分性准则是整个软件测试的重要组成部分,它直接决定了测试用例的生成。在基 于程序代码的测试中,包括语句覆盖、分支覆盖、路径覆盖、多条件覆盖等覆盖 准则1 6 1 。基于u m l 状态图生成测试用例的充分性准则有状态覆盖准则、迁移覆盖 准则、全谓词公式覆盖准则和迁移对覆盖准则等【1 9 】。 在测试用例生成过程中,可以应用所有的测试准则,也可以根据需要选择其 中的某种,或某些准则。本文只使用迁移覆盖,其含义是:测试用例集应该使u m l 状态图中的每一个迁移都至少被激活一次。先使系统到达某一个状态( 当前状态) , 如果一个迁移的触发事件“e v e n t 被接受,并且这个迁移的监视条件“g u a r d s ”的 值为真,则这个迁移被激发,将执行迁移的动作“a c t i o n 【1 9 】。 u m l 状态图中的每一个状态是可达的,因而每一个状态被访问一次是很容易 做到的。状态覆盖准则是这些测试准则中最简单、最容易被满足的测试准则,需 要的测试用例也往往是最少的。迁移覆盖准则是这些测试准则中比较简单、比较 易被满足的测试准则,需要的测试用例也往往是比较少的。满足迁移覆盖准则的 测试用例集一定也满足状态覆盖准则【1 9 ,2 。 1 2 4 自动化测试 软件测试的工作量很大,但测试却是在整个软件过程中最有可能应用计算机 进行自动化工作的一部分,原因是测试的许多操作是重复性的、非智力创造性的、 需要集中注意力的工作。计算机就最适合代替人类去完成这些任务。软件测试自 动化,已经成为国内软件工程领域一个众所周知的课题【4 】。软件自动化测试的出现, 缩短了软件的开发周期,同时节约了人力物力,保证了软件的质量【1 6 1 。 软件测试实行自动化进程,不仅能减轻测试人员重复的测试过程,而且也是 测试工作的需要,尤其是回归测试和系统测试的需要。实行软件测试过程自动化 带来的好处具体有:缩短软件开发测试周期;测试效率高,充分利用硬件资源; 节省人力资源,降低测试成本;增强测试的稳定性和可靠性;提高软件测试的准 一种集成式的j a v am e 软件自动测试系统 确度和精确度;软件测试工具使测试工作相对比较容易,但能产生更高质量的测 试结果;手工不能做的事情,软件测试自动化能做,如负载、性能测试【2 2 1 。 设计良好的自动化测试,在很多情况下还可以实现“夜间测试 和“无人测 试 。在大多数情况下,软件测试自动化可以减少开支,增加有限时间内可执行 的测试,在执行相同数量测试时节约测试时间。 当然,自动化测试不能完全取代手工测试的工作,因为自动化测试也有其自 身的局限:手工测试比自动测试发现的缺陷更多;对测试质量的依赖性极大;测 试自动化不能提高有效性;测试自动化可能会制约软件开发,由于自动测试比手 动测试更脆弱,所以维护会受到限制,从而制约软件的开发;工具本身并无想象 力;人工测试比测试工具更优越的另一个方面是可以处理意外事件。 既要抓住自动化测试所带来的好处,同时也要认清其自身的不足,这样才有 助于我们更好地运用自动化技术来进行软件测试工作。自动化测试和手工测试的 结合,能大大提高软件测试的效率,减少开发的费用。对于软件测试自动化的工 作,大多数人都认为是一件非常容易的事。其实,软件测试自动化的工作量非常 大,而且也并不是在任何情况下都适用,同时软件测试自动化的设计并不比程序 设计简单。 1 2 5 嵌入式软件测试 嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适用 于应用系统,并且对功能、可靠性、成本、体积、功耗有严格要求的专用计算机 系统。嵌入式系统一般指非p c 系统,它一般由嵌入式微处理器、外围硬件设备、 嵌入式操作系统以及用户的应用程序等四个部分组成,用于某些特定的功能。“嵌 入性”、“专用性 与“计算机系统”是嵌入式系统的三个基本要素【8 , 1 0 】。 嵌入式系统已经在各个领域影响着人类的生活。目前,在嵌入式系统设计中, 软件正越来越多地取代硬件,以降低系统的成本,获得更大的灵活性【7 1 。因此,嵌 入式系统中软件的比重越来越大,也越来越复杂,保证嵌入式软件的可靠性正面 临严峻的挑战。 大多数软件测试方法都可以直接或间接地用于嵌入式软件的测试,如单元测 第1 章绪论 试、集成测试、系统测试等,但是由于操作系统的实时和嵌入式特性,嵌入式软 件测试也面临一些特殊的问题。比如:嵌入式软件的硬件环境往往是特定的,不 可能非常方便的随时在目标环境上测试,在软件开发过程中进行的单元测试往往 需要在主机上的模拟环境中执行。嵌入式软件的测试用例往往具有相当的针对性, 需要专业人员进行专门设计,测试用例设计的水平会对测试效率、测试结果的可 用性产生重大影响。测试工具应能够适应测试要求。针对嵌入式软件的测试,往 往需要开发专门的测试工具,完成特定的测试任务【2 3 1 。 j a v am e 包括虚拟机和一系列标准化的j a v aa p i 。j a v a 的跨平台是它在嵌入式 领域占有重要地位的重要原因。凡是支持j a v am e 虚拟机( j v m ) 的设备就可以 运行j a v am e 程序,“一次编写,到处运行 就得到了实现【7 1 。有关j a v am e 的测 试,在硬件上主要体现设备对j a v am e 虚拟机的支持情况的测试,在软件上主要 体现在对j a v am e 程序本身的测试。本文的研究对象是后者,不研究j a v am e 虚 拟机和支持它的设备,只研究如何对j a v am e 程序进行测试。 j u n i t 测试正在逐渐成为大多数j a v a 标准版( s e ) 和企业版( e e ) 应用程序开发中 的基本组成部分,对于那些积极拥护测试驱动开发的人尤其如此【3 0 3 。然而使用 j u n i t 或找到一种j u n i t 扩展用于j a v am i c r oe d i t i o n 开发一直以来却是很难的事情 【9 】。因为j u n i t 框架依靠于j a v a 反射a p i 。j a v am e 环境中还不支持反射a p i ,所 以,很大程度上依靠于反射的j u n i t 工具还不能帮助进行j a v am e 开发【9 】。尽管如 此,已经出现两个专门针对设备应用程序开发者构建的j a v am ej u n i t 扩展。它们 均利用了j u n i t 风格测试的优点。 这两个j a v am e 程序的测试框架是j m u n i t 和j 2 m e u n i t ,它们都是可自由下 载的开源框架,我们可以从s o u r c e f o r g e n e t 上下载一个打包文件【3 l 】。然而,这两 个开源工程的工程主管( e l m m s o n n e n s c h e i n 和b r u n n os i l v a ,分别维护j 2 m e u n i t 和j m u n i t ) 正在计划把这两个框架合并为一个。新的工程将在j 2 m e u n i t 工程基 础上得到进一步巩固。据s o n n c n s c h c i n 本人所说,因为更多的现有用户的工程都 是基于s o u r c e f o r g e 上的j 2 m e u n i t 框架,所以,他们计划基于b r u n n o 的j m u n i t 2 0 创建一个j 2 m e u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机务考试题目及答案
- 期末导游业务试题及答案解析(2025版)
- 2025年安全飞行驾驶员考试题库及答案
- 高空刷漆施工合同范本(3篇)
- 老龄事业创新养老院院长聘任与管理服务协议
- 专业瑜伽馆品牌店面转让及教练团队培训协议
- 互联网娱乐商标授权合同范本(含内容版权合作规定)
- 个人借款与股权质押合同样本
- 2025公务员试题面试题库及答案
- 2025年概率论期末考试题及答案
- 脑梗死恢复期护理查房范文讲课件
- 京东安全工程师笔试题库
- ISO 37001-2025 反贿赂管理体系要求及使用指南(中文版-雷泽佳译-2025)
- GB/T 3452.3-2005液压气动用O形橡胶密封圈沟槽尺寸
- 电阻应变式传感器及其应用传感器原理及其应用课件
- 项目代建大纲
- 民航安全安全检查员
- 中级职称专业技术人员考核登记表(最近三个年度)
- 部编版八年级语文上册定稿《一着惊海天》教案课堂实录(区级公开课)
- DL∕T 5597-2021 太阳能热发电工程经济评价导则
- 电大学前教育毕业论文
评论
0/150
提交评论