




已阅读5页,还剩73页未读, 继续免费阅读
(计算机科学与技术专业论文)基于cactus的jsp页面测试及代码自动生成器.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于c a c t u s 的j s p 页面测试及代码自动生成器 摘要 w e b 应用系统中存在大量j s p 页面需要进行服务器端测试,但是 手工编写页面测试类不仅需要掌握服务器端测试相关技术,而且会 产生大量重复性机械劳动。所以设计了基于c a c t u s 的j s p 页面测试 类代码生成器,能够自动生成页面测试类,实现j s p 页面的服务器 端测试。在传统的功能测试中,每一个步骤都需要大量的人力手工完 成而且有些测试还需要经验丰富的人员以保证结果的可靠性。举例来 说,在测试阶段,如果测试人员经验不够,就可能使某些页面测试不 充分或被忽略,这将给后续的开发造成很多修改工作和重复性劳动, 势必会增加开发周期。而应用了页面测试类代码生成器后,提高了工 作效率,加快了项目的进度并且提高了产品的质量。应用了页面测试 类代码生成器的模块比采用传统测试方式的模块在测试阶段所花的 人力和时间少了很多,同时产生的缺陷也大大减少了。这说明页面测 试类代码生成器在提高测试阶段工作效率,加快项目的进度和提高产 品的质量上起了较大的作用。与传统的页面测试流程比较,页面测试 类代码生成器是一种很好的替代品。它能够将测试类的编写自动化, 因而使开发工作量大幅度减少,软件错误降至最低,测试覆盖面更为 广泛。 关键词:c a c t u sj s p 测试代码生成器 c o d eg e n e r a t o rf o rj s pt e s t i n gc l a s sb a s e d o nc a c t u s a b s t r a c t t h e r ca r cal o to fj s pp a g e sn e e dt ob et e s t e da ts e r v e r - s i ( 1 ei nw r e b a p p l i c a t i o n s t h et e s t i n gd a 鼹i st 0b e m p o s e dm a n u a l l y i tc a l l sf o r n o to n l y r v e rs i d et e s t i n gt e c h n o l o 百e s b u ta l s oal o to fr e p e t i t i v e m e c h a n i c ml a b o r ac o d eg e n e r a t o rf o rj s pt e s t i n gc l a s sb a s e do nc a c t _ 惦 i sd e s i g i l e di nt h i sp a p e r ,w h i c hc a n 卸t o m a t i c a l l yg e n e r a t ep a g e st e s t i n g c l a s st ot e s tj s pa t r v e rs i d e i nt h et r a d i t i o n a lf u n c t i o n a l t e s t i i l g ,e v e 碍 s t e pr e q u i r 岱al a r g ea m o u n to fm a n 唧rt oc 0 m p l e t em a n u a l l y 锄d s o m et e s t sa l n e e de x p e r i e n c e de x p e n st 0e 啮u 陀t h er c l i a b i l i t yo ft h e r e 跚l t s f o re x a m p l e ,i nt h et e s t i n gs t a g c ,i ft h et e s t e 娼h a v en o te n o u g i l e x p e r i e n c c ,t h e ym a yn e 舀e c ts o m eo ft h ep a g e so rs o m es t e p s ,w h i c h c o u l dc a u al o to fr c v i s i o na n dr e p e t i t i v ew o r kf o rt h es u b s e q u e n t d e v e l o p m e n t t h ea p p l i c a t i o n0 ft h ec o d eg e n e r a t o rf o rj s p “瑟t i n gc l 弱s h e l p st oi m p r o v ew o r ke f f i c i e n c y ,s p e e du pt h ep r o g r e 豁o ft h ep r 两e c t 锄d e n h a n c ct h eq u a l i 哆o ft h ep r o d u c t w h e nt h em o d u l et e s t e dw i t hj s p t e s t i n gc l a s sb yc o d eg e n e r a t o r i s a d o p t e d i n s t e a do ft h et r a d i t i o n a j m e t h o d ,i ts p e n d sm u c hl e s sh u m a nr e s o u r c ea n dt i m ei nt h et e s t i n gp h a s e a n dt h ed e f e c t sh a sb e e ng r e a t l yr e d u c e d c o m p a r e dw i t ht h et r a d i t i o n a l t e s ta p p r o a c h ,t h ec o d eg e n e r a t o rf o rj s pt e s t i n gc l a 豁i so b v i o u s l ya b e t t e rs u b s t i t u t e i tc a na u t o m a t e t e s t i n g c l a s s g e n e r a t i o n , t h u s s i g n i f i c a n t l yr e d u c et h ew o r l d o a do fd e v e l o p m e n t i h et e s tu s i n gt h i s t e c h n o l o g y c a nb e m o 佗c o m p r e h e n s i v e锄ds o f t w a r c e r r o r sc a nb e 1 i m i t e dt 0am i n i m n 1 【e yw o r d s :c a c t l l sj s pt e s tc o d eg e n e r a t o r 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:日期:乡? 量每! 蟹 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位论文不属于保密范围,适用本授权书。 。 本人签名:堑生玺日期:三竺垦垒:三! 导师签名:名譬班缕l 日期:麴篮乙虫耻 北京邮电大学硕士学位毕业论文 1 1 问题的提出 第一章绪论 j s p ( j a v as e r v e rp a g e ) 是一种实现普通静态h t m l 和动态页面输出混合编 码的技术。在中国普天信息管理系统的开发过程中,有大量j s p 页面需要进行 单元测试。 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试 活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。开 发人员进行单元测试的质量直接关系到整个软件系统的质量。对于软件开发人 员来说,有了一个良好的单元测试方法和工具,开发人员就有足够的信心不断 地进行软件代码重构,而且不必担心重构后回归测试的复杂性问题。实现一个 高效的j s p 页面测试类代码生成器,不仅能够帮助开发者及时准确地发现和减 少软件中潜在的缺陷和错误,降低软件成本,减少维护代价,而且可以方便项 目管理,大大提高了软件开发效率,并保证产品质量。 在传统测试模式中,对每个j s p 页面的测试都需要手工编写一个测试类, 编写这些测试类会消耗大量的人力和时间。但是,当前项目的开发和测试面临 着一些新的情况。首先,因为大环境以及实际情况的影响,目前新上项目往往 集中在一个时间段内,而人力资源是单位时间内有限的关键资源,这就造成了 多个项目在资源上的冲突,这种冲突就影响了承接项目的并发能力。其次,新 项目往往对时间要求很严格,在时间非常紧张的情况下,测试阶段的大量编码 工作往往会对研发人员造成很大的压力,项目质量有可能下降。再次,由于研 发人员水平、风格参差不齐,书写的测试代码千差万别,程序风格不统一,修 改、维护起来很不方便,造成了项目维护的效率下降。 针对上述问题,迫切需要一种新的测试模式替代以前的测试模式,所以本文 编写了j s p 页面测试类代码生成器,来自动生成页面测试类,以提高测试效率, 缩短测试周期,同时提高软件的整体质量。 1 2 本文主要工作 综合考虑j s p 页面的服务器端容器内测试要求和信息系统测试效率问题,本 文针对中国普天信息管理系统开发中j s p 页面的单元测试进行研究,给出j s p 页面容器内单元测试及测试类自动生成的解决方案,并根据此方案设计实现了一 第l 页 北京邮电大学硕士学位毕业论文 个页面测试类代码生成器。主要的工作包括如下几个方面: 1 分析了代码生成技术,对代码生成技术的发展进行了综述,讨论了代码 曳技术的优缺点和应用前景。 2 编写了一个参数文件生成器,来生成代码生成器所需要的输入参数文件。 3 制定了一套页面验证规则及代码生成规则,并在页面测试类代码生成器 的实现中得以应用。 4 页面测试类应用了容器测试工具c a c t u s 单元测试框架。 5 根据以上研究,针对中国普天信息管理系统开发中j s p 页面的单元测试 问题,设计实现了页面测试类代码生成器,自动生成测试类,进行 j s p 页面单元自动测试。 在中国普天信息管理系统开发实践中应用本文的页面测试类代码生成器,收 到了良好的效果。该系统不仅能解决j s p 页面的容器内测试问题,而且能够自 动生成页面测试类代码,可极大地提高开发效率和项目质量,是能够被广大中小 企业采用的低成本、高效率的j s p 页面测试工具。 本课题的研究成果不仅有助于更加快速有效的对j s p 页面进行单元测试,而 且有利于对项目进行重构,将会具有广阔的应用前景。 1 3 本文结构 本文共分六章,第一章提出了在中国普天信息管理系统的开发过程中j s p 页面的单元测试问题,并介绍了本文主要工作内容;第二章介绍代码生成技术; 第三章介绍了代码生成器的关键技术和规则;第四章介绍页面测试类代码生成 器的分析与设计;第五章介绍页面测试类代码生成器的实现与应用;第六章对 本论文的工作做了总结和展望。 第2 页 北京邮电大学硕士学位毕业论文 第二章代码生成技术 2 - 1 代码生成技术的发展 一切自动化是人类的一个梦想,人们为了实现这个梦想不断努力。人们利用 计算机软件与硬件实现办公自动化、管理自动化的同时,也在考虑程序代码的自 动生成1 1 】。 , 在软件工程发展过程中,计算机科学家为了降低软件开发的强度,缩短开发 周期,减少代码的重复书写,从而减轻程序员的编程负担,一直以来都致力于代 码自动生成方面的研究。l e a c c 是最早用于自动化编写编译程序的工具。随 着现代化信息环境日趋复杂,各种应用软件的开发难度随之加大,这需要更有技 巧、更有方法地从事软件开发,开发团队之间也必须更无障碍地沟通,否则极可 能无法在有限的开发时间中完成任务。由于时间上的压力,一般人只注重程序的 编写速度,却忽略其完成后的实用性与维护性,加上大型程序多人共同参与开发, 每个人都有各自的程序风格,容易造成严重的差异性,随着系统规模越来越大, 这将造成系统完成后在测试及维护上沉重的负担,代码自动生成技术更显出了其 显著的优越性。利用代码生成技术可以大大加速软件的开发进度,提高软件的质 量。 目前,代码生成技术的发展还处在初期阶段,代码生成工具主要是用数据库 模型来生成基于数据库的程序代码。目前,代码生成技术较多地应用在集成开发 环境( i d e ) 和专业的代码生成工具中( 如m j d d i e g e n ) ,但大多数代码生成器生成的 代码模版和种类都由工具预定义,用户较难改变生成代码的结构、风格和生成其 它种类的代码,由于灵活性欠佳,不能完全满足软件开发的实际需要,难以在软 件开发项目中得到充分的应用。 2 2 代码生成技术的优势 本文应用了代码生成器来进行页面测试类的自动生成,本小节就来对比一 下传统工作流与代码生成工作流,并且分析一下代码生成技术的优势。 传统的代码开发调试工作包括“编辑、编译、以及测试”。如下图所示,代 码生成增加了一些新的工作流元素。传统的编辑、编译、以及测试阶段仍然适 用。在代码生成的工作流中,首先,编辑模版和定义文件( 或者生成器本身) ,然 后运行生成器创建输出文件。接着对输出文件进行编译测试( 如果目标语言不 第3 页 北京邮电大学硕:l 学位毕业论文 是编译的语言,不考虑图中的编译阶段) 。 传统的工作流 代码生成工作流 图2 一l 传统工作流与代码生成工作流的对比 代码生成技术是关于自动生成程序的程序的技术,与手写代码相比具有下面 一些好处: ( 1 ) 所有软件实体的一致的代码质量,代码的质量依赖且只依赖于代码生 成的模版、文件和模型。与此相比,手工经常采用的拷贝粘贴的方法为前后代码 质量的一致性带来了隐患。 ( 2 ) 提高了代码变更的能力,特别在需要大量更改代码的情况下,只需要 更改模版并重新运行代码生成器即可。 ( 3 ) 提高了修复软件b u g 的能力,只需要修复模版的b u g 然后重新运行 生成器就可以修复所有的生成文件的b u g 。 ( 4 ) 提高了在不同框架之间的迁移能力,一个典型的情形是我们需要生成 不同框架( 如j 2 e e ,n e t ) 的应用代码,代码生成技术将业务逻辑以语言无关的 形式单独存放,通过为不同的框架提供代码模版可以基于同一逻辑生成不同框架 的应用代码。 ( 5 ) 灵活的同步机制,代码生成技术自动维护代码和数据模型的一致性, 第4 页 北京邮电大学硕j :学位毕业论文 通过重新运行生成器,对模型的修改可以自动反映到代码中,这种同步机制对维 护数据的一致性是非常必要的。 ( 6 ) 大幅度提高了工作效率,运用代码生成技术可以将更多的时间花费在 业务相关的设计和实现上,从而可以大大提高软件的开发效率和软件质量。 ( 7 ) 是代码学习的导师,由于生成的代码具有良好的风格和1 0 0 的健壮 性,程序开发者很容易模仿代码风格,从中学习。 2 3 代码生成技术的好处 在本系统中,如果手工编写每个j s p 页面的测试类存在以下困难: 1 要测试的页面数量很多,手工编写j s p 页面的测试类将产生很大工作量。 2 不同j s p 页面的测试类有很多相同部分,手工编写j s p 页面的测试类会 产生大量重复性机械劳动。 3 由于在开发中被测页面可能经常改动,手工修改j s p 页面测试类,使维 护工作非常困难。 4 手工编写j s p 页面的测试类,要求开发人员要学习并熟悉相关技术,造 成开发人员时间成本。 5 手工编写j s p 页面的测试类,容易产生错误,使测试可靠性降低。 由于以上问题,在本系统中应用了自主开发的代码生成器。测试类程序代码 自动生成,克服了以上问题,可极大地提高开发应用软件的效率,以及所开发的 应用软件的质量。 具体地说,在本项目中,运用代码生成技术可带来以下几大好处: 1 高效率。代码生成的工作主要是建立和维护输入模型,而这些输入模型 基本上或全部都能从设计模型转化过来,工作量很少,因而软件生产率能得到 成倍提高。 2 高质量。代码生成技术使用代码模版来生成代码,模版越完善,生成的 代码就越好。模版改善后,所有生成的代码质量都能提高,并且代码的命名和 风格都能保持一致。因而,采用代码生成技术能获得更高质量的代码。 3 更易维护。当需求改变时,大多数的代码生成器都能在修改输入模型的 基础上,重新生成满足新需求的代码,这能有效地降低软件需求变更带来的工 作量和风险。 第5 页 北京邮电大学硕士学位毕业论文 4 促进团队的分工和发展。由于编码工作量减少,程序员的工作得到解 放,项目团队有更多时间来进行设计和架构优化,以及设计更好的代码生成工 具。 2 4 编写测试类代码生成器 目前国外二些优秀的i d e ( 集成开发环境) 可视化开发工具,是针对具体代 码的编写,不具备设计成果到代码的快速转化的功能。也有像r a t i o n a l 的工具 可以实现分析、设计和代码自动实现;p o w e r d e s i g n 可以使用u m l 设计成果, 同步在数据库中生成表结构,但往往价格昂贵,小企业采用这种方案实现代码自 动生成的成本太高。 开源社区有些代码生成工具,不过大都是针对某一层次的特定框架,生成 的代码无法作为完整的应用,本地化不强,还需要大量的二期开发,以适应使 用现状。 国内也有些企业针对特定框架,开发了自主产权的代码生成器,但是限定 在其独有的框架上,绑定在一起使用,较为封闭,且投资比较大,无法为其它 企业,尤其是中小企业所使用。 总而言之,在页面测试类代码生成器中引入代码生成器后,程序人员将从 高度脑力劳动和繁琐的体力劳动解脱出来,测试类代码编写工作将可以像流水 线生产一样简单。所产生的测试类代码将非常健壮,是高品质、高一致性、高 效率的统一体。 当然,并不是从所有的代码生成技术中都可以获得上面列出的好处。在本 项目中经过对具体需求的评估、对各种技术的综合考虑,包括对“拿来”和自行 开发的权衡后,从注重实效的角度考虑,应用了页面测试类代码生成器,完成页 面测试类的快速生成。 第6 页 北京邮电大学硕士学位毕业论文 第三章代码生成器的关键技术和规则 为了对中国普天信息管理系统的开发过程中所产生的大量j s p 页面进行单 元自动化测试,本文设计实现了了基于c a c t u s 技术的页面测试代码生成器。为 了实现代码生成器,有一些关键技术和规则需要实现,本章将详细讨论这些内容。 3 1 页面分类及命名规则 在中国普天信息管理系统中,j s p 页面分为,增、改、查、列表和一般五 种类型( 删除操作是直接给后台程序发送删除消息,并无对应页面) 。为了方便 开发与维护,针对j s p 页面制定了统一的命名规则,该规则也方便了代码生成 器的设计。五类类页面命名规则如下: 1 增加页面,如员工信息增加页面名称为“e m p l o y e e - - a d d j s p ,该名称 分两部分内容,前半部分“e m p i o y e e 一说明该页面对应员工信息与 数据库中“e m p l o y e e 表关联,后半部分“a d d 一说明该页面进行的 是增加信息操作。 2 修改页面,如员工信息修改页面名称为“e m p i o y e e m o d 晦j s p ,该名 称分两部分内容,前半部分“e m p l o y e e 说明该页面对应员工信息 与数据库中“e m p l o y e e ”表关联,后半部分“m o d 时”说明该页面 进行的是修改信息操作。 3 查询页面,如员工信息查询页面名称为“e m p i o y e e j n f o m a t i o n j s p , 该名称分两部分内容,前半部分“e m p i o y e e 说明该页面对应员工 信息与数据库中“e m p l o y e e 表关联,后半部分“j n f o m a t j o n 说明 该页面进行的是查询信息操作。 4 列表页面,如员工信息列表页面名称为“e m p i o y e e _ l i s t j s p ,该名称 分两部分内容,前半部分“e m p i o y e e ”说明该页面对应员工信息与 数据库中“e m p i o y e e 表关联,后半部分“l i s t 说明该页面进行的 是列表操作,即列出数据库中所有信息。 5 一般页面,其它无特定命名规则的页面。 第7 页 北京邮电大学硕士学位毕业论文 3 2 参数生成器 3 2 1 参数生成器工作原理 为了生成页面代码生成器所需的参数,编写了参数生成器。参数生成器能够 从j s p 页面中提取出测试所需的变量名称,并通过页面命名规则从页面对应的 数据表中提取真实数据,作为变量值。最后生成包含测试用例的参数文件,供页 面测试类代码生成器使用。 图孓1 参数生成器框架结构 如上图所示,参数生成器主要包括变量名提取模块、变量值生成模块、参数 生成模块三部分。 1 变量名提取模块,该模块通过分析被测j s p 页面,根据变量名提取规则 提墩出变量名,并将这些变量名分别传送给变量值生成模块和参数生 成模块。变量名提取规则为,提取h t m l :t e x t 、b e a n :w r i t e 、 h t m l :o p t i o n s 、h t m i :h i d d e n 标签的p r o p e r l y 属性值,对于列表类型页 面提取e c :t a b i e 标签的t e m s 属性值。 2 变量值生成模块,该模块首先通过页面命名规则确定页面对应的数据表, 再根据已经提取出的变量名查找对应的变量值( j s p 页面中变量命名 与数据库属性命名一致) ,选取一组变量值作为生成参数文件的数据, 并将这些参数传送给参数生成模块。 第8 页 北京邮电大学硕上学位毕业论文 3 参数生成模块,根据变量名,变量值,被测页面名,被测页面地址按照 参数文件格式( 下一小节介绍) 生成参数文件。 3 2 2 参数文件格式 类名 页面名 变量名 变量值 、l 图3 - 2 参数文件格式 参数文件名与对应j s p 页面名相同。与页面对应也分为增、改、查、列表、 一般五种类型,但各类型内容格式相同。 如上图所示,每个参数文件,有4 种类型的参数,这四种类型是类名、页面 名、变量名、变量值。存储时参数之间由一个空格隔开。具体规则如下: 1 第一个参数为类名参数。代码生成器会根据该参数生成一个以该参数为 基础命名的基于c a c t u s 的j s p 页面测试类,并在生成类名和方法名 时以该参数为基础,按一定命名习惯稍加变换。 2 第二个参数为页面名参数。代码生成器会根据该参数生成一个页面调用 语句。 3 第三个参数为变量名参数,第四个参数为变量值参数。代码生成器会根 据这两个参数创建并判断模拟数据。 4 从第五个参数位置开始根据页面测试类需要变量数决定是否还需要参 数,变量名和变量值成对设置,一组变量名和变量值对应一个变 量。所以每个存储代码生成器所需参数的文本文件中,参数必须为 第9 页 北京邮电大学硕士学位毕业论文 偶数个,最少包含4 个参数。 3 2 3 参数文件生成规则 被测页面类型不同,参数文件生成有不同规则,这样才能使参数文件适用于 不同类型页面测试类的生成。各类型参数生成规则如下: 1 增加类型参数文件,生成该类型参数需要先在j s p 页面提取参数名,之 后在对应数据表中选取参数值。之后将页面名作为类名参数,页面地 址作为页面名参数,加上已经获得的变量名和变量值生成参数文件。 如员工信息增加页面参数文件名称为“e m p i o y e e j d d b ( t ,该名称 分两部分内容,前半部分。e m p i o y e e ”说明该页面对应员工信息与 数据库中“e m p i o y e e 表关联,后半部分“a d d 说明该参数文件是 增加类型。 2 修改类型参数文件,参数文件生成规则与增加类型参数文件相同。 3 查询类型参数文件,参数文件生成规则与增加类型参数文件相同。 4 列表类型参数文件,类名参数和页面名参数生成同上。但由于该类型验 证方法不同( 后续介绍) ,变量只需要数据表中存储数据记录的条数, 对于列表类型页面,变量名提取e c :t a b l e 标签的i t e m s 属性值,变量 值由参数生成器查询数据库得到。如“e m p l o y e e 一表,则变量值为 表中存储员工的人数。 5 一般页面,如能提取出变量名则,参数文件生成规则与增加类型参数文 件相同。否则指定一个变量名“t e s t n a m e ,一个变量值“t e s t v a i u e ”, 类名参数和页面名参数生成同上。 3 3 页面验证规则及代码框架 为了验证页面是否正确,下面根据五种不同类型页面各自的特点制定了相应 的验证规则和验证代码框架。 1 增加页面验证规则,为了验证增加操作的正确性,先要将各变量的值设 置为空,执行完页面后各变量应该被设置了值,这时验证这些值是否 与参数文件中的参数值相等,若相等则页面正确,否则页面错误。测 试代码框架如下: p u b cv o i dt e s t 0 _ ( x ( ) t h r o w ss e i e t e x c e p t i o n ,i o e c e p t i o n 第1 0 页 北京邮电大学硕士学位毕业论文 r e q u e s t g e t s e s s i o n ( ) s e t a t t r b u t e ( ”变量名1 ”,n u l l ) : r e q u e s t g e t s e s s i o n ( ) s e t a t t r b u t e ( ”变量名2 ”,n u l l ) : r e q u e s t g e t s e s s i o n ( ) s e t a t t r - b u t e ( ”变量名3 一,n u l l ) : ,设置数据 p a g e c o n t e x t f o r w a r d ( ”,f i i e p a t h 力i ( ( x j s p ”) : ,执行页面 a s s e r t e q u a l s ( 变量值1 ,s e s s i o n g e t a t t r b u t e ( ”变量名1 ”) ) : a s s e r t e q u a i s ( 变量值2 ,s e s s i o n g e t i a t t r - b u t e ( ”变量名2 ”) ) : a s s e r t e q u a i s ( 变量值3 ,s e s s i o n g e t a t t r b u t e ( 。变量名3 ”) ) : ,验证数据 2 修改页面验证规则,为了验证修改操作的正确性,先要将各变量的值设 置为参数文件中的变量值,执行完页面后各变量的值应该被改变了, 这时验证这些值是否与参数文件中的参数值相等,若不相等则页面执 行了修改测试正确,否则页面错误。测试代码框架如下: p u b i j cv o j dt e s c i ( x x ( ) t h r i ) 、 f ss e n ,i e t e x c e p t i o n ,l o e x c e p t i o n r e q u e s t g e t s e s s i o n ( ) s e 乞a t t r b u t e ( ”变量名1 ”,变量名1 ) : 伧q u e s t g e t s e s s j o n ( ) s e t a t t r i b u t e ( ”变量名2 ”,变量名2 ) : 陀q u e s t g e t s e s s i o n ( ) s e t a t t r b u t e ( ”变量名3 ”,变量名3 ) : ,设置数据 p a g e c o n t e x t f 6 n ,a r d ( ”f e p a t h ) _ 淞j s p ”) : ,执行页面 a s s e r t n o t e q u a i s ( 变量值1 ,s e s s i o n g e 徂t t r i b u t e ( ”变量名1 ”) ) ; a s s e r t n o t e q u a i s ( 变量值2 ,s e s s i o n g e t a t t r b u t e ( ”变量名2 ”) ) : a s s e r t n o t e q u a i s ( 变量值3 ,s e s s i o n g e t a t t r b u t e ( ”变量名3 ”) ) : ,验证数据 第l l 页 北京邮电大学硕士学位毕业论文 ) 3 查询页面验证规则,为了验证查询操作的正确性,在执行页面前不需要 设置变量,执行完查询页面后各变量的值应该被设置了,这时验证这 些值是否与参数文件中的参数值相等,若相等则页面查询正确,否则 页面错误。测试代码框架如下: p u b cv o i dt e s t x x xot h r o w ss e n ,i e t e c e p t i o n ,i o e x c e p t i o n ,执行页面前无须设置模拟数据 p a g e c o n t e x t f o n ,a r d ( ”,行i e p a t h ) ( x x j s p ”) : ,执行页面 a s s e r t e q u a i s ( 变量值1 ,s e s s i o n g e t a t t r b u t e ( ”变量名1 ”) ) : a s s e r t e q u a i s ( 变量值2 ,s e s s j o n g e b 呲r b u t e ( ”变量名2 ”) ) : a s s e r t e q u a i s ( 变量值3 ,s e s s i o n g e t a t t n b u t e ( ”变量名3 ”) ) : ,验证数据 ) 4 列表页面验证规则,列表页面试将数据表中所有记录存放在一个列表数 据结构中,为了验证列表操作的正确性,在执行页面前不需要设置变 量,执行完列表页面后取得该列表的成员数,这时验证该成员数是否 与参数文件中的数据表记录数相等,若相等则页面执行正确,否则页 面错误。测试代码框架如下: p u b cv o i dt e s c _ 0 ( x ( ) t h r o w ss e r v l e t e x c e p t i o n ,i o e x c e p t j o n ,执行页面前无须设置模拟数据 p a g e c o n t e x t f b n ,a r d ( ”,6 i e p a t h ) i 淞j s p ”) : ,执行页面 腋量名为存放数据的列表结构名称 ,变量值为相应数据表记录条数 a s s e r t e q u a i s ( 变量值。s e s s i o n g e t a t t r b u t e ( ”变量名”) g e t s i z e ) : 脓得列表的成员数 第1 2 页 北京邮电大学硕士学位毕业论文 ,验证数据数据表记录条数是否与列表成员数相等 ) 5 一般页面验证规则,为了验证一般页面的正确性,在执行页面前根据参 数文件设置一个变量,执行完页面后验证这个变量值是否与之前相 等,若相等则页面执行正确,否则页面错误。测试代码框架如下: p u b i i cv o i dt e s t x ( ) t h r o w ss e r v i e t e c e p t i o n ,i o e x c e p t i o n r e q u e s t g e t s e s s i o n ( ) s e l 呲r b u t e ( ”变量名1 ”,变量名1 ) : ,设置数据 p a g e c o n t e ) ( t f o n ,a r d ( ”,厅i e p a t h 力o ( x j s p ) : ,执行页面 a s s e r t n o t e q u a i s ( 变量值1 ,s e s s i o n g e b 呲r b u t e ( ”变量名1 ”) ) : ,验证数据 ) 3 4 参数与页面测试类对应规则 代码生成器是从指定目录中的多个文件中读取必需参数的,通过一定的对 应规则,以输入参数为基础生成相应的测试程序代码,输入数据与输出数据的关 系如下图所示: 第1 3 页 北京邮电大学硕士学位毕业论文 图3 - 3 代码生成器输入输出描述图 每个参数文件,有4 种类型的参数,这四种类型是类名、页面名、变量名、 变量值。参数与页面测试类有以下对应规则: 1 每个存储代码生成器所需参数的文本文件,对应生成一个基于c a c c u s 的j s p 页面测试类,该文本文件含有生成页面测试类的全部所需参数。 例如,指定目录下有3 个存储代码生成器所需参数的文本文件,则代 码生成器执行完毕后会生成3 个对应的基于c a c t u s 的j s p 页面测试 类。 2 每个存储代码生成器所需参数的文本文件中,第一个参数为类名参数。 代码生成器会根据该参数生成一个以该参数为基础命名的基于c a c t u s 的j s p 页面测试类,并在生成类名和方法名时以该参数为基础,按一 定命名习惯稍加变换。例如,当类名参数为“e m p i o y e e m o d 耐p a g e 时,代码生成器将会生成名为“v a i i d e m p i o y e e m o d 时p a g e t e s t j a v a 第1 4 页 北京邮电大学硕士学位毕业论文 的基于c a c t u s 的j s p 页面测试类文件,同时会生成以下框架结构的 类: p u b i i cc i a s sv a d e m p i o y e e m o d i b p a g e t e s te x t e n d sj s p t e s t c a s e p u b l i cv o i dt e s t e m p i o y e e m o d i 6 ,p a g e ( ) t h 兀) w ss e r v l e t e x o e p t i o n ,l o e x c e p t i o n ) p u b l i cv o i de n d e m p l o y e e m o d 计y p a g e ( w e b r e s p o n s ew e b r e s p o n s e ) ) ) 、 3 每个存储代码生成器所需参数的文本文件中,第二个参数为页面名参数。 代码生成器会根据该参数生成一个页面调用语句。该语句在t e s t o ( ( ) 方法中,在程序创建好模拟数据后执行一个f o r v v a r d 命令调用页面名 参数指定的页面。例如,当页面名参数为 “,b a s i c ,e m p i o y e e _ m o d 晦j s p 时,代码生成器将会生成以下框架结 构的代码: p u b i i cv o i dt e s t e m p i o y e e m o d j p a g e ( ) t h r o w ss e r v i e t e x c e p t i o n ,i o e x c e p t i o n 一,创建模拟数据 p a g e c o n t e x t f o r w a r d ( ”b a s i c ,e m p i o y e e j l l o d 阡y j sp i ) ; ,判断模拟数据 4 每个存储代码生成器所需参数的文本文件中,第三个参数为变量名参 数,第四个参数为变量值参数。代码生成器会根据这两个参数创建并 第1 5 页 北京邮电大学硕士学位毕业论文 判断模拟数据。这些语句在t e s t x ) ( x ( ) 方法中,程序首先创建好模拟 数据,再执行一个f o n a r d 命令调用页面名参数指定的页面,之后程 序判断模拟数据。例如,当变量名参数为“e m p l o y e e n a m e 变量值 参数为“m i n gl 时,代码生成器将会生成以下框架结构的代码: p u b i i cv o i dt e s t e m p l o y e e m o d i 6 ,p a g e ( ) t h r o w ss e r v i e t e x c e p t i o n ,i o e c e p t i o n r e q u e s t g e t s e s s i o n ( ) s e t a t t r j b u t e ( ”e m p l o y e e n a m e ”,”m i n g l i ”) : 。,创建模拟数据 p a g e c o n t e ) ( t f o n a r d ( - ,b a s i c ,e m p i o y e e j l l o d i j s p ”) : a s s e r t e q u a i s ( ”m i n g l i 。,s e s s i o n g e t a t t r b u t e ( ”e m p i o y e e n a m e ”) ) : ,判断模拟数据 ) 3 5 应用c a c t u s 单元测试框架 3 5 1c a c t l l s 单元测试框架 c a c t u s 【2 l 实现了对j u n j t 测试框架的无缝扩展,可以方便地测试服务端应 用程序。 j u n i t 单元测试框架【3 l 是j a v a 开发人员用于编写单元测试的一个通用的测试 框架,可以将测试代码封装入对象中,从而使丌发者可以同步设计并配置自己 的单元测试。j u n i t 单元测试框架可以创建随着时间的流逝仍能保留其价值的测 试,使得原作者之外的任何人都能运行这些测试并能解释测试的结果,从不同 的作者那单组合测试而不用担心冲突的发生,使得j a v a 单元测试更规范有效, 并且更有利于测试的集成。m o c ko b i e c t s ( 简称m o c k s ) 是在j u n i t 基础上的扩 展的代码逻辑单元测试框架。m o c k s 主要对单个类进行测试,避免类之间的真 正交互,以使测试粒度最小。c a c t u s 扩展并使用了j u n i t ,是常用来对 s e i e t 、e j b 、t ag | b 、f i i t e r 等服务器端j a v a 代码进行集成单元测试的框架。 由于本文要对j s p 页面进行服务器端测试,所以采用c a c t u s 单元测试框架。 c a c t u s 可以在下面几种情况下使用: 1 测试 s e n ,l e t以及任何使用了像 h t t p s e r v i e t r e q u e s t , 第1 6 页 北京邮电大学硕士学位毕业论文 h t 【p s e n ,i e t r e s p o n s e ,这样的对象的代码。使用 s e i e t t e s t c a s e 。 2 测试f j | t e r 以及任何使用了像f i t e r c o n f i g ,这样的对象的代码。使 用f i t e r t e s t c a s e 。 3 测试j s p 。使用s e i e t t e s t c a s e 或j s p t e s t c a s e 。 4 测试t a 9 1 b s 以及任何使用了像p a g e c o n t e x t ,这样的对象的代码。 使用j s p t e s t c a s e 。 5 测试e jb 。s e n ,i e t t e s t c a s e 或j s p t e s t c a s e 或f i l t e r t e s t c a s e 。 c a c t u s 的使用也是非常简单的,所写的测试类只需继承j s p t e s t c a s e 、 s e i e t t e s t c a s e 或者f i i t e r r e s t c a s e ( 它们都继承了j u n j t 的t e s t c a s e ) 。写 好测试代码后需要启动w e b 容器,然后执行测试代码。 下图简要描述了c a c t u s 系统工作原理。 ob e g i n x x x ( ) y 、吖t b s t c a s e 0 e n d x x x ( ) - - o : 0 c i i e n ts i d e s e t u p ( ) , 0 t e s t ) ( ( x ( ) , r e d i r e c t o rii 。“。 - 3 e r v e rs l d e 图3 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- it项目采购合同样本
- 中英投资合同样本
- 买卖标准合同样本
- 共用线路三方协议合同标准文本
- 个人租赁土地合同样本
- 代购柴油合同标准文本
- 住房代理销售合同样本
- 中石油用工合同样本
- 个人坟墓购买合同样本
- 住房公积金购房合同样本
- 湖北省十一校2024-2025学年高三第二次联考数学试卷(解析版)
- 《手工制作》课件-幼儿园挂饰
- 人武专干考试题型及答案
- 2025届高三化学二轮复习 化学反应原理综合 课件
- 2025年北京五湖四海人力资源有限公司招聘笔试参考题库含答案解析
- 常见的酸和碱第2课时酸的化学性质 2024-2025学年九年级化学人教版(2024)下册
- 欢乐购物街-认识人民币(说课稿)-2024-2025学年人教版数学一年级下册
- 2025年中国南方航空股份有限公司招聘笔试参考题库含答案解析
- 疫苗与接种管理制度
- 电子商务案例分析知到智慧树章节测试课后答案2024年秋西安邮电大学
- 《通信用开关电源的元器件降额准则-》
评论
0/150
提交评论