(计算机软件与理论专业论文)基于j2ee架构软件测试的研究与应用.pdf_第1页
(计算机软件与理论专业论文)基于j2ee架构软件测试的研究与应用.pdf_第2页
(计算机软件与理论专业论文)基于j2ee架构软件测试的研究与应用.pdf_第3页
(计算机软件与理论专业论文)基于j2ee架构软件测试的研究与应用.pdf_第4页
(计算机软件与理论专业论文)基于j2ee架构软件测试的研究与应用.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

基于j 2 e e 架构软件测试的研究与应用 摘要 随着软件规模的不断扩大,软件的复杂性越来越高,对软件的测 试越发显得重要,软件测试成为软件质量控制中的关键过程。软件测 试的性质和要求使得测试的自动化和规范程度越来越高。在各个重视 软件质量的企业,软件测试工作的执行力度也逐渐增加,并从盲目无 序的自发行为转向受质量约束的规范化、标准化过程。 同时随着j 2 e e 技术的迅速普及,w e b w o r k + s p r i n g + h i b e m a t e ( 以 下简称w s h ) 开发框架,以其开发效率高,测试简单,易于系统重 构和代码重用且都是开源免费,而逐渐被应用于j 2 e e 项目的开发中。 和传统软件开发过程相比,基于w s h 框架开发的项目具有自己 的特点,其开发过程主要包括组件开发、组件组装和系统部署三个阶 段。业务组件的实现和运行有其自身的特点,对环境的依赖减弱。本 文通过分析基于w s h 框架的软件系统的开发过程,将传统的软件测 试策略应用到项目开发期间的各个阶段,提出一套完整的适用于 w s h 项目的测试策略,阐述在开发周期内如何有效地进行测试。 本文主要从三方面进行研究,分别对应w s h 项目开发周期内的 三个阶段:在开发阶段进行单元测试,在组装阶段进行集成测试,在 部署阶段进行性能测试。单元测试部分通过分析w s h 各层的实现原 理和各个组件与容器交互的特点,研究单元测试框架j u n i t 及其扩展 框架m o c ko b j e c t ,对j u n i t 进行扩展,使其更适合于对w s h 项目进 t 行单元测试,进而提出基于w s h 框架开发的软件系统的单元测试方 案,并进行实施。集成测试部分通过分析w s h 框架集成测试特点和 j u n i t 工具对其进行集成测试的不足,提出以s p r i n g m o c k 测试框架来 对w s h 项目进行集成测试的解决方案,并进行实施;性能测试部分 则通过研究传统性能测试的原理,提出适用于w s h 项目的性能测试 方案。最后将提出的测试策略应用于“新型农村合作医疗系统 ,对 项目进行系统的测试,通过分析测试结果,表明了测试策略的可行性 和优越性。 本文的内容将传统软件测试策略融合于w s h 项目测试中,并应 用于具体的项目实践,相信本论文的研究对于更快速有效地实施 w s h 项目测试具有一定的参考价值。 关键字:j 2 e e ,j u n i t ,m o c ko b j e c t ,s p r i n g m o c k ,j m e t e r i i r e s e a r c ha n da p p l i c a t i o no fs o f t 廖岫t e s t i n g b a s e do nj 2 e ef r a 匝w o r k a b s t r a c t w i t ht h e g r o w i n g s o f t w a r e s c a l e ,s o f t w a r e t a k e so nh i g h e r c o m p l i c a t i o n ,a n dm o r ei m p o r t a n c ei sa t t a c h e do nt h es o f t w a r et e s t i n g , w h i c hb e c o m e sak e y p r o c e s so fs o f t w a r eq u a l i t yc o n t r 0 1 t h en a t u r ea n d r e q u i r e m e n t so fs o f t w a r et e s t i n gl e a d t o h i g h e ra n dh i g h e rt e s t i n g a u t o m a t i o na n ds t a n d a r d i z a t i o n i nt h o s ee n t e r p r i s e st h a ta t t a c h i m p o r t a n c et os o f t w a r eq u a l i t y , t h ee x e c u t i o no fs o f t w a r et e s t i n g i s g r a d u a l l ye n h a n c e da n dc h a n g e df r o mt h eb l i n ds p o n t a n e o u sa c t i v i t yi n t o t h es t a n d a r d i z e dp r o c e s s i ti sk n o w nf r o mt h ep r a c t i c et h a tt h eh i g h e rt h e s t a n d a r d i z a t i o n ,t h eh i g h e rt h ee f f i c i e n c yo fs o f t w a r et e s t i n ga n dt h e g r e a t e ri m p a c to ni m p r o v i n gq u a l i t y w i t ht h e r a p i dp o p u l a r i z a t i o n o fj 2 e e t e c h n o l o g i e s , w e b w o r k + s p r i n g + h i b e m a t e ( f o rs h o r t :w s h ) ,a s t h e d e v e l o p m e n t f r a m e w o r k ,h a sg r a d u a l l yb e e nw i d e l ya p p l i e dt ot h ed e v e l o p m e n to f j 2 e ep r o j e c t s ,w h i c ht a k e sa d v a n t a g ei ne f f i c i e n td e v e l o p m e n t ,e a s i l y t e s t i n ga n dr e u s i n g c o m p a r e dw i t ht r a d i t i o n a ls o f t w a r ed e v e l o p m e n tp r o c e s s ,t h es y s t e m i i i b a s e do nw s hh a so w nc h a r a c t e r i s t i c s i t sd e v e l o p m e n tp r o c e s si n v o l v e s t h r e ep h a s e s :m o d u l ed e v e l o p m e n t ,a s s e m b l ya n dd e p l o y m e n t t h e i m p l e m e n t a t i o na n de x e c u t i o no fb u s i n e s sc o m p o n e n th a v et h e i ro w n c h a r a c t e r i s t i c s ,w i t hw e a kd e p e n d e n c yo nt h ee n v i r o n m e n t t h i sp a p e r a n a l y s e st h ep r o j e c t sd e v e l o p m e n tp r o c e s s ,a n da p p l i e st r a d i t i o n a lt e s t i n g s t r a t e g yt oe a c hp h a s eo ft h ep r o j e c t a n di tw i l ld i s c u s st e s t i n gu n d e rt h e w h o l ed e v e l o p m e n tc y c l eo faw s h ,a i m i n ga tg e n e r a t i n gas e to fe n t i r e t e s t i n gs t r a t e g i e s t h i sp a p e rs p r e a d so u tf r o mt h r e ea s p e c t sc o r r e s p o n d i n gt ot h r e e p h a s e so fw s hp r o j e c t t h e ya r e :u n i tt e s t i n gi nd e v e l o p m e n tp h a s e , i n t e g r a t e dt e s t i n gi na s s e m b l yp h a s e ,p e r f o r m a n c et e s t i n gi nd e p l o y m e n t p h a s e t h es e g m e n to f u n i tt e s t i n g ,w h i c hp o i n t st op r o b l e ma n dd if f i c u l t o ft h eu n i tt e s t i n gi nw s h p r o j e c t ,t h r o u g ha n a l y z i n gr e a l i z e dp r i n c i p l eo f e a c hl a y e ra n dc h a r a c t e r i s t i co f e a c hm o d u l e t h r o u g ht h ec a r e f u l a n a l y s i so fu n i t t e s tf r a m e w o r k s ,s u c ha sj u n i ta n di t se x t e n s i o n f r a m e w o r k ,m o c ko b j e c t ,a n de x p a n s i o no nj u n i tt ob ea p p l i e di nu n i t t e s to fw s h p r o je c t ,t h i sp a p e rp o i n t st os c h e m eo fw s h f r a m e w o r k t h e s e g m e n to fi n t e g r a t e dt e s t i n gp o i n t st ou s es p r i n g m o c kf r a m e w o r k t ot e s t aw s h p r o j e c ta c c o r d i n gt oa n a l y z et h ei n t e g r a t e dt e s t i n gc h a r a c t e r i s t i c o fw s ha n dd e f i c i e n c yo ft h ej u n i ti m p l e m e n tc a r r i e so u ti n t e g r a t e d t e s t i n g t h es e g m e n to fp e r f o r m a n c et e s t i n g ,w h i c hs u g g e s t sp e r f o r m a n c e t e s t i n gs t r a t e g yw h i c ha d a p t st oj 2 e ep r o j e c t ,t h r o u g hr e s e a r c h i n gt h e o r y i v o ft r a d i t i o n a lp e r f o r m a n c et e s t i n g f i n a l l y , t h i sp a p e rp u tt h es c h e m ei n t o t h ep r a c t i c a lp r o j e c t ,t h a tw a s n e wm e d i c a lc o o p e r a t i o ns y s t e mf o r m r a la r e a s ” c o m b i n i n gt h et h e o r i e so fs o f t w a r et e s t i n ga n dt h ea u t h o r sp r a c t i c e s i nw s h p r o g r a m m i n g ,t h ep a p e rw o u l db em e a n i n g f u la n dc o u l dp r o v i d e 一 一 一 。 au s e f u lr e f e r e n c ef o ri m p l e m e n t i n gw s hc o m b i n a t i o n sf r a m e w o r kt e s t m o r eq u i c k l ya n d e f f i c i e n t l y k e y w o r d s j 2 e e ,j u n i t ,m o c ko b j e c t ,s p r i n g m o c k ,j m e t e r v 东华大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位 论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除 文中已明确注明和引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,我对 所写的内容负责,并完全意识到本声明的法律结果由本人承担。 学位论文作者签名:7 辱牟 e t 期:抽眸;月2 - s - e i 东华大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允 许论文被查阅或借阅。本人授权东华大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复 制手段保存和汇编本学位论文。 保密口,在年解密后适用本版权书。 本学位论文属于 不保密口。 学位论文作者签名:7 寿- 咩 日期:。啪眸3 月3 ( 日 指导教师签名: o 了砰式 , 日期:口眸弓月扒e l 基于j 2 e e 架构软件测试的研究与应用 1 1 研究背景及意义 第一章绪论 企业应用【l 】越来越多的采用b s 架构,这代表了种趋势,即企业应用越来 越趋向大型、分布式、瘦客户端的发展方向。越来越复杂的业务需求,带来了越 来越复杂的设计需求,如企业实施o a ( o f f i c e a u t o ) 的需求。这种需求带来的 是规模越来越大的软件系统、越来越大型的网络和越来越高的设计标准。j 2 e e 标准就是面向这类需求的。对于一个大型的企业级应用,软件的测试已经成为一 项独立的技术与过程,与软件开发技术和过程一样的复杂和重要。在这种大环境 下,用合适的软件测试过程方法指导质量控制工作,用先进的软件测试技术提高 测试质量,已经成为影响软件系统性能、生命力的关键因素之一。 在经典j 2 e e 架构中,中间层的业务逻辑是通过e j b 组件实现的,但由于对 e j b 组件开发复杂,以及其高侵入性【2 】带来的测试困难等问题,越来越多的企业 采用s p n n g 轻量级框架来开发j 2 e e 项目。正是在这种技术发展背景下,w s h 开发框架被广泛地应用于j 2 e e 项目中。 鉴于目前关于w s h 项目的软件测试的资料大都是一些理论介绍和简单的实 现,没有形成完整的体系【4 】【5 1 ,对基于w s h 框架开发的软件系统实施测试缺乏 经验,所以迫切需要一套完整的行之有效的基于w s h 框架开发的软件系统的测 试策略。本文正是针对软件行业这一需求来展开研究的。 本文的研究是基于“新型农村合作医疗系统一项目进行的,该系统旨在解决 当前新型农村合作医疗的发展需求,配合农村合作医疗的管理工作,推进新型农 村合作医疗卫生网络建设进程。从技术上解决了合作医疗繁重的业务处理,实现 合作医疗人员登记、资金筹集、发票报销、结算报销、查询统计等诸多业务的信 息化管理;解决政府部门对重大急性传染病和突发疫情的实时监测、预防和控制, 增强了农村合作医疗的保障水平和大病抗风险能力,为全面建立农村合作医疗制 度的健康快速发展提供有利保障。新型农村合作医疗系统是基于w s h 框架开发 的软件系统。 基于j 2 e e 架构软件测试的研究与应用 1 2 国内外研究现状 软件测试作为软件工程学科的一个重要分支,随着软件的发展而发展。自从 2 0 世纪7 0 年代以来,国内外许多学者和组织在软件测试方面进行了大量的研究工 作,形成了许多经典的软件测试技术和软件测试流程管理规范。 美国的i e e e 、a c m 等组织制定了一系列软件测试规范,国外的许多大学( 如 c a r n e g i em e l l o n ,g e o r g em o s a n 等) 、研究机构( 如:n a t i o n a ls o f t w a r et e s t i n gl a b 简称为:n s t l 等) 和公司( 如:s o f t w a r er e s e a r c h ,r a t i o n a lc o r p o r a t i o n ,l d r a 以及a u t o t e s t e r 等) 进行了大量软件测试的研究和应用工作。其中,c a r n e g i em e l l o n 大学侧重于回归测试和c l i e n t s e r v e r 澳l j 试技术的研究,g e o r g em o s a n 侧重于基于 规范的测试自动生成和面向对象测试技术的研究,n s t l 主要从事测试规范和标 准的制定【7 】。比较流行的软件测试工具集有s o t l w a r e r e s e a r c h 的t e s t w o r k s , r a t i o n a l 的r a t i o n a l 系列工具包,m e r c u r y - i n t e r a c t i v e 的w i n r u n n e r x r u n n e r 和l d r a 的t e s t b e d 等【8 1 。 在国内,北京大学、北京航空航天大学进行了一系列的软件分析和测试工具 的研究和开发,研制了一系列的程序理解工具和测试工具,比较具有代表性的工 具有s a f e p r oc c + + ,s a f e p r o j a v a o 。航空计算机研究所、南京大学在嵌入式系统 测试方面做了较多的工作,开发了一些静态分析工具和测试用例自动生成工具。 西北工业大学在航空软件仿真测试、并行软件综合测试平台以及c s 系统的测试 方面进行了许多研究工作并取得了一些成果。 目前,国内外对j 2 e e 系统的测试进行了一系列的研究,主要是集中在对j 2 e e 组件测试的研究。组件的高可靠性是组件能被成功复用的前提。组件测试是保障 和提高组件可靠性的重要手段。组件的开发者和复用者必须对组件进行充分地测 试,以确保它在新的环境中工作正常。组件本身就是一个程序单元,与传统的软 件测试相比,组件测试有着自身固有的特剧9 】: 1 ) 不能对组件的执行环境( 即容器) 和用户的使用模式进行完全准确的预 测,故组件开发者不能完全、彻底地对组件进行测试,并且很难确定何 时结束测试。 2 ) 组件复用者和第三方测试人员通常无法得到组件的源代码及详细的设计 知识,通常只能对组件进行黑盒测试,即调用组件的方法后,只能通过 2 基于j 2 e e 架构软件测试的研究与应用 观察执行的结果判断组件的行为是否正确,无法检查执行过程中的组件 的内部状态,使得组件执行过程中的一些故障被隐藏。这些特点对组件 测试提出了严峻的挑战。 国际上于2 0 世纪9 0 年代后期对组件测试开展了研究。近年来,出现了大量的 文献报道,组件测试成为当前软件工程学术界和工业界的热点问题之一。大体上, 对组件的测试可以从以下几个方面来进行分类。从组件测试的内掣1 0 】可分为: 组件内部实现细节的测试,组件接口的测试,组件组装( 构架) 的测试。从测试 者与组件的关系可分为:组件开发者的测试( 拥有组件的源代码) 、组件复用者 和第三方的测试( 没有源代码) 。从测试过程中所采用的技术手段可分为:基于 变异测试的方法,基于组件状态机的方法,对组件的回归测试,以及组件的易测 试性设计等。国内外研究了很多开源测试工具来实现对组件的测试。 目前用于对w s h 项目进行单元测试的工具主要有j u n i t 和m o c ko b j e c t 两种。 虽然对其组件进行测试的开源工具很多,但是没有系统地归纳一套基于w s h 框 架开发的软件系统的测试工具 5 1 ,因此很有必要围绕实际项目中对基于该框架开 发的软件系统的测试所面临的问题进行研究和探讨。 1 3 本文的技术路线及论文结构 1 3 1 技术路线 本文主要是对基于w s h 框架开发的软件系统的测试进行研究与应用,本文的 技术路线如下: 根据w s h 项目的开发过程,将传统的软件测试策略进行裁减并应用到 w s h 项目开发的各个阶段,提出一套适用于w s h 项目的测试策略,阐述 在开发周期内如何有效地进行测试。 选择合适的软件测试工具来完成项目开发期间各个阶段的测试。 对测试工具进行扩展,使其更适合于对基于w s h 框架软件系统的测试。 进而完整地提出一套基于w s h 框架开发的软件系统的测试策略。 将提出的测试策略应用于“新型农村合作医疗系统的测试,给出测试 情况,并分析测试结果,从实践上验证提出的测试策略的可行性。 基于j 2 e e 架构软件测试的研究与应用 1 3 2 本文结构 本文共分八章,各章内容如下: 1 ) 第一章介绍了本文的研究背景及意义,分析了国内外的研究现状,同时 给出了本文的研究内容。 2 ) 第二章介绍了软件测试的基本概念和工作原理,传统的软件测试过程和 当前的软件测试过程。 3 ) 第三章简单介绍了s p r i n g 、h i b e r n a t e 、w e b w o r k 技术,并分析了各自的 测试特点。根据w s h 开发过程以及特点,提出一套适合基于w s h 框架 开发的j 2 e e 项目的测试策略。 4 ) 第四章分析w s h 项目的单元测试方案,将测试工具j u n i t 进行扩展,应 用到项目的测试。 5 ) 第五章分析w s h 项目集成测试方案,并应用于项目中。 6 ) 第六章提出j 2 e e 项目的性能测试策略。 7 ) 第七章将本文研究的测试策略应用于“新型农村合作医疗系统”中,并 对测试结果进行分析。 最后是本文的总结和展望。总结了本文的研究成果,并指出了下一步的研究 方向。 4 基于j 2 e e 架构软件测试的研究与应用 第二章软件测试 2 1 软件测试的基本概念 软件测试【1 3 】是根据软件开发阶段的规格说明和程序的内部结构而精心设计 一批测试用例( t e s t c a s e ,即输入数据和预期的输出结果) ,并利用这些测试用 例去运行程序,以发现错误的过程。 软件测试是软件质量保证的关键步骤,是软件工程研究领域的重要内容。 软件是由文档、数据以及程序组成的,那么软件测试就应该是对软件形成过 程的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。随着人们 对软件工程化的重视以及软件规模的日益扩大,软件分析、设计的作用越来越突 出,而且有资料表明,6 0 以上的软件错误并不是程序错误,而是分析和设计的 错误。因此做好软件需求和设计阶段的测试工作就显得非常重要。这就是软件测 试行业所提倡的测试概念扩大化,软件全生命周期测试的理念【1 4 1 。 2 1 1 其他相关概念 软件测试用例( t e s tc a s e ) :是为测试项目规定输入、预期结果和一组执行条 的文档。其中,测试用例的设计、测试方案的设计与实施成了测试工作的主要内 容。 测试环境( t e s te n v i r o n m e n t ) :执行测试程序所需要的硬件平台和软件资源 构成的环境。 问题报告( p r o b i e mr e p o r t ) :对软件测试过程中发现问题的描述。 2 2 测试的目的 基于不同的立场,存在着两种完全不同的测试目的: 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷, 以考虑是否可接受该产品。 从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过 程,验证该软件己正确地实现了用户的要求,确立人们对软件质量的信心【1 5 】。 5 基于j 2 e e 架构软件测试的研究与应用 g l e n f o r dm y e r s 描述的软件测试目的为i t 6 : 1 ) 测试是程序的执行过程,目的在于发现错误。 2 ) 一个好的测试用例在于能发现至今未发现的错误。 3 ) 一个成功的测试是发现了至今未发现的错误的测试。 换言之,测试的目的是以最少的时间和人力,系统地找出软件中潜在的各种 错误和缺陷。如果成功地实施了测试,就能够发现软件中的错误,测试的附带收 获是它能够证明软件的功能和性能与需求说明相符合,实施测试收集到的测试结 果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误,它只能说 明软件中存在的错误【1 7 1 。 2 3 软件测试的原则 1 ) 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 2 ) 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。 3 ) 程序员应避免检查自己的程序。 4 ) 在设计测试用例时,应包括合理的输入条件和不合理的输入条件。 5 ) 充分注意测试中的群集现象。 6 ) 经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目 成正比。 7 ) 严格执行测试计划,排除测试的随意性。 8 ) 应当对每一个测试结果做全面检查。 9 ) 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供 方便【嘲。 2 4 软件测试过程和步骤 软件测试过程是指在进行软件测试时一系列相关有序活动的集合【19 1 。传统 的软件测试是指继软件编码之后,对代码或软件执行的测试。如图2 1 所示,把 测试设计放在开发周期后期,使得没有时间有效地执行计划,而且也错过了发现 构架设计和业务逻辑设计中存在的严重问题的时机。由于缺陷己经扩散到系统 中,导致缺陷的定位和修复变得很困难。 6 基于j 2 e e 架构软件测试的研究与应用 图2 - 1 传统软件开发和测试过程 随着软件应用规模的扩大,对软件测试的需求和要求也逐渐提高,软件测试 已成为贯穿软件整个生命周期的一个系统的过程。软件测试伴随在软件开发过程 中的每个阶段,与软件开发过程相并行,如图2 2 所示。测试的对象不仅仅是程 序,需求、功能和设计同样要测试,因此,只要相应的对象开发完成,测试就可 以进行。 图2 2 现代软件开发与测试过程2 0 i 同软件开发过程一样,软件测试也具有自己的生命周期:测试计划、测试设 7 基于j 2 e e 架构软件测试的研究与应用 计、测试开发、测试执行、测试评估和缺陷跟踪,如图2 3 所示: 图2 3 软件测试的生命周期 1 ) 测试计划 测试计划是定义一个测试项目的过程,以便能够正确的度量和控制测试。即 从测试的角度对被测软件进行功能、特性的细化和展开。它不仅是软件开发后期 测试的依据,也是软件质量保证的重要文档。 测试计划的主要内容包括测试需求、测试策略、测试资源和测试进度等。一 般而言,测试计划又可分为3 个层次:概要测试计划、详细测试计划以及测试人 员的测试实施计划,分别对应于测试模型的不同阶段。 2 ) 测试设计 测试设计是设计测试用例及测试过程的阶段,它是验证测试需求被测试到的 最有效的方法。 软件测试阶段最关键的工作就是设计测试用例,它控制着软件测试的执行过 程,包括要测试的功能、准备输入的数据及其对应的预期输出结果。设计测试用 例的基本目标是确定一组最能发现某个错误或某类错误的测试数据,即选用高效 的测试数据,做到尽可能完备的测试。测试用例应具有代表性、可判定性和可再 现性,一般遵循以下原则进行选取: ( 1 ) 选择与测试需求的实质部分最相关的测试用例。 ( 2 ) 选择的测试用例应该不容易受应用程序改变的影响。 3 ) 测试开发 测试开发是对在测试设计阶段已被定义的测试进行创建或修正的阶段。主要 有: ( 1 ) 开发测试脚本( 可选) :根据测试过程创建测试脚本,并且调试测试脚 基于j 2 e e 架构软件测试的研究与应用 本。 ( 2 ) 编写驱动程序和稳定桩:根据设计编写测试需要的驱动程序和稳定桩。 4 ) 测试执行 测试执行是根据前面所设计的测试用例,利用人工测试和自动测试来对被测 软件进行一系列的测试,并记录日志结果的过程。测试执行通常分为:单元测试、 集成测试、系统测试、验收测试和回归测试。 单元测试( u n i tt e s t i n g ) 单元测试是对构成软件系统的最小模块进行的测试,以确认每个模块能否正 常工作。它以详细设计书为依据,对模块( 程序) 的功能、接口以及内部结构( 算 法) 进行测试。 集成测试( i n t e g r a t e dt e s t i n g ) 集成测试将经过测试的模块按一定的功能范围( 系统或子系统) 组装起来测 试其集成后的功能和接口,它是系统局部功能实现与否的验证。 系统测试( s y s t e mt e s t i n g ) 系统测试是把软件、硬件和环境连在一起进行的全面的测试,检测是否能协 调工作,是否与需求说明书相符。系统测试包含性能测试、压力测试、安全测试 和恢复测试等多种综合性测试。 验收测试( a c c e p t a n c et e s t i n g ) 验收测试是在用户现场,由客户执行或者参与执行的测试,检查产品是否符 合客户或最终用户的要求。 回归测试( r e g r e s s i o nt e s t i n g ) 回归测试是在软件修改和变更后进行的测试,用来确定修改和变更后的软件 是否仍然满足所有的要求,一般只是有选择地重复已有的确认测试,而不开发新 的测试。 测试评估 测试评估是分析测试结果并判断测试的标准是否被满足的阶段。其目的是量 化测试过程,并生成缺陷和测试覆盖率的总结报告。 缺陷跟踪 缺陷跟踪是记录测试事件或用户问题,进行调查研究,提出解决它们的方案 9 基于j 2 e e 架构软件测试的研究与应用 并进行修改的阶段。 2 5 本章小结 本章简单介绍了软件测试的基本概念,软件测试的过程和步骤。详细描述了 软件测试的生命周期以及测试执行中的单元测试、集成测试、系统测试、验收测 试。为第三章制定w s h 项目的测试策略奠定了基础。 1 0 基于j 2 e e 架构软件测试的研究与应用 第三章w s h 开发框架及其测试策略 在经典j 2 e e 架构中,运用j s p 、s e r v l e t 、e j b 以及j d b c 构建企业级应用程 序满足了当前的开发需求,但是e j b 有其不足之处: 1 )编写e j b 过于复杂,开发者必须至少接触4 个文件,b u s i n e s s 接口、h o m e 接口、b e a n 实现和部署描述符。类中使用的对象及其衍生对象的查找等, 都必须加载到e j b 容器服务中。 2 )e j b 的高侵入性,为了使用e j b 容器提供的服务,开发者必须使用 j a v a x e j b 接口,使得组件的代码和e j b 技术绑定在一起,以致于很难在 e j b 容器外使用该组件。 3 )实体e j b 的不足:实体( e n t i t y ) e j b 和其他o r mi 具相比灵活性和操 作性不够丰富。 而伴随着软件开发的发展,在基于企业级软件开发的项目中,可重用、易扩展的, 并且经过良好测试的软件组件,越来越为开发者所青睐。这意味着开发人员可以 将充裕的时间来分析、构建业务逻辑的应用上,而非复杂的代码工程。开发人员 将相同类型问题的解决途径进行抽象,抽取成一个应用开发框架。用这些框架构 建的分布式应用程序完美地实现了应用程序高内聚、低耦合、高弹性、易维护的 优点,w s h 应用开发框架应运而生。 3 1w s t t 技术简介 s p r i n g 框架集成了现有的其它优秀框架,如o rm a p p i n g 框架、w e b 框架, 大大提高了s p r i n g 的实用性,本文的背景项目是s p r i n g 集成w e b w o r k 框架和 h i b e r n a t e 框架开发完成的,它们的协作关系如图3 1 所示。 基于j 2 e e 架构软件测试的研究与应用 图3 - 1 w e b w o r k ,s p r i n g ,h i b e r n a t e 协作关系图 w e b 表示层:应用中w e b 表示层显示模型数据,并负责和提供用户界 面接口同用户交互。使用w e b w o r k 作为表示层框架:管理用户的请求 和响应,并通过f i l t e r d i s p a t c h e r 控制器委托业务逻辑层来处理,并根据 处理结果提取需要的模型数据,选择合适的视图表现,转移到用户设定 的页面。这其中还要进行必要的拦截和u i 验证。 业务逻辑层:典型的w e b 应用的中间组件一般是业务层或服务层。使用 s p r i n g 作为业务层框架,通过读取配置文件,s p r i n g 容器自动生成并管 理b e a n 实例,供业务逻辑使用;管理事务操作;提供与表现层交互的 接口:管理业务级对象之间的依赖性;隔离了表示层与持久层;调用持 久层接口方法,向供表示层使用的模型层填充数据。 持久层:持久层是w e b 应用中直接与数据库打交道的逻辑单元,实现了 o r 映射( 对象一关系映射) ,将面向对象的操作转化成面向关系数据 库的操作。h i b e r n a t e 是目前关系映射框架中使用最广泛的框架。使用 h i b e r n a t e 作为持久层架构能完全屏蔽具体的数据库实现;通过h i b e r n a t e 提供的a p i 和h q l 查询接口使操作数据更有效、便捷;向下屏蔽了不 同数据库的差异;向上为业务逻辑层提供需要的访问接口。 从图3 1 可以看出s p r i n g 很好地将数据层和w e b 层进行分离,使得各层分工 明确,各层之间采用接口进行通信。这样大大简化了对基于w s h 框架开发的项 目的单元测试。本文接下来简单介绍一下s p r i n g 、h i b e r n a t e 、w 曲w 6 r k 技术。 1 2 基于j 2 e e 架构软件测试的研究与应用 3 1 1s p rin g s p r i n g t 2 s 是种多层的j 2 e e 应用程序框架,它是以r o dj o h n s o n 编著的 e x p e r to n e - o n o n ej 2 e ed e s i g na n dd e v e l o p m e n t 一书的代码为基础发展而来。 s p r i n g 追求的就是一种轻量级的目标,旨在简化j 2 e e 的开发,降低j 2 e e 项目 的实施的难度。s p r i n g 框架是一个松耦合的框架,其耦合度被设计为最小,在各 个层次上具体选用那个框架取决于实际项目的需要和开发者的意愿【2 1 1 。s p r i n g 要提供的是一种管理开发人员的业务对象方法。同时它的设计从一开始就是要帮 助开发者编写易于测试的代码,是使用测试驱动开发工程的理想框架。它包括两 个核心机制: 1 ) a o p s p n n g 的一个核心机制是a o p 。a o p 2 6 】( a s p e c to r i e n t e dp r o g r a m m i n g ) 即 面向方面的编程,也称为面向切面的编程,它提供从另一角度来考虑程序结构以 完善面向对象编程( o o p ) 。当前主要的编程技术就是面向对象编程,它采用抽 象数据类型类对数据和行为进行抽象,但是,对于一些诸如安全验证、日志和 调试信息、授权、异常处理等全局性约束的实现往往要分散到系统的多个模块, 这不但造成了代码的分散以及模块内部代码的混乱,而且给测试也带来了很大的 难度。 在开发企业应用方面,开发者需要从更高的角度,整理出系统的关注点。大 体而言,所有的关注点可以分为两类:核心关注点和横切关注点。其中,核心关 注点主要是关注系统的业务逻辑;横切关注点主要关注系统级的服务,供业务逻 辑使用。对于业务逻辑关注点,使用o o 技术能很好的实现。对于横切关注点, 可以使用a o p 技术来实现。因为横切关注点关注的是系统级服务,具有一定的 规范性,很容易将它们抽象出来,并加以实现。换言之,如果没有横切关注点的 概念,仅仅使用o o 技术来实现诸如安全性、事务处理等,会造成大量的代码重 复,使分析和编码失去重心,导致维护和扩展的难度增加。 面向对象将应用程序分解成各个层次的对象,而a o p 将程序分解成各个方 面或者说关注点来看待。a o p 允许动态修改o o p 定义的静态模型即不用修改 原始的o o 模型,甚至可以不用修改o o 代码本身,即可完成对横切面问题的解 决。比如,将系统中处理日志、安全性、事务及其他企业级服务的代码集中放置 基于j 2 e e 架构软件测试的研究与应用 在一个地方。因此a o p 使得o o p 中的重复代码能够大范围减少。同时便于单元 测试阶段中进行测试隔离,遵循了t d d 测试开发驱动原则。 2 ) 反转控制( i o c ) 依赖注入 在一个典型的软件系统中,把软件系统划分为多个模块,可以有效控制模块 的复杂度,使每个模块都易于理解和维护,模块之间必须以某种方式交换信息, 那必然会发生耦合关系,过紧的耦合关系会对软件系统的质量造成很大危害,特 别是当需求发生变化时,代码的维护成本将非常高。因此必须消除不必要的耦合, 特别是会导致其它模块发生不可控制变化的依赖关系。 反转控制【2 5 】【2 刀就是由容器控制程序间的关系,控制权的转移就是“反转 。 大师m a r t i nf o w l e r 也提出了一个新的名字“依赖注入( d e p e n d e n c yi n j e c t i o n ) 。 即组件之间的关系由容器在运行期间决定,容器动态的将某种依赖关系注入到组 件之中。依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重 用的概率,并为系统搭建一个灵活、可扩展的平台。依赖注入主要有三种形式: 接口注入、设值注入( s e t t e r ) 和构造子注入( c o n s t r u c t o r ) 。 s p r i n g 框架是一个分层架构,由7 个定义良好的模块组成川如图3 - 2 。s p r i n g 模块构建在核心容器之上,核心容器定义了创建、配置和管理b e a n 的方式。组 成s p r i n g 框架的每个模块或组件都可以单独存在,或者与其他一个或多个模块 联合实现。 s 两n g w 曲 m v c 提供w e bm v c 框架可 拙s p 等技术实现的视图 层装入框架 ls 两鸭核心l 1 支持b e 柚容器管理的设施 l 图3 - 2s p r i n g 体系架构 图3 2 只是表现了s p r i n g 框架的静态结构,从应用流程的角度出发,图3 3 体现了s p r i n g 框架的动态功能。 1 4 基于j 2 e e 架构软件测试的研究与应用 图3 - 3s p r i n g 框架的动态功能 s p r i n g 通过动态代理机制拦截了外界对b e a nf a c t o r y 管理下的对象的调用。 其中i o c 机制用来装载j a v a b e a n ,b e a n f a c t o r y 可以管理所应用的j a v a b e a n ,使 用者只要将自己的j a v a b e a n 通过配置文件告诉b e a n f a c t o r y ,那么b e a n f a c t o r y 将会加载这些j a v a b e a n 。a o p 2 8 拦截机制创建了拦截器来拦截对象的调用,它 通过一个横切面为这些j a v a b e a n 提供了权限访问、事务锁等通用功能的实现, 使得调用者无需指定被调用者的代理类就可以使用这些对象。a o p 拦截机制在 调用对象的前后都可以进行拦截,从而形成一个完整的框架实现。 3 1 2h i b e r n a t e h i b e r n a t e 是一个面向j a v a 环境的对象关系数据库映射工具,它的目标是成 为j a v a 中管理持续性数据问题的一种完整的解决方案。它协调应用与关系数据 库的交互,让开发者从专注于手中的业务问题中解放出来。h i b e r n a t e 是一种非 强迫性的解决方案,我们可以利用h i b e r n a t e 提供的查询和获取数据的方法,当 然也可以使用传统的j d b c 来实现数据库的操作 2 9 j 0 0 1 。 3 ,。3w e b w o r k w e b w o r k 的创造者和j b o s s 的创始人之一的p d c k a r d 曾经说:“框架的强大 之处不是源自于它能让你做什么,而是它不能

温馨提示

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

评论

0/150

提交评论