仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 561|回复: 15
打印 上一主题 下一主题

[学习教程] JAVA网页设计用Spring完成非端到端验收测试仓酷云

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的验收测试让托付团队超出了基础的延续集成,即考证使用程序是不是为用户供应了有代价的功效。不外关于刚入手下手实验部署流水线的团队来讲,想要主动化验收测试,必要跨过三年夜门坎。
一是完成和保护验收测试的手艺门坎。幻想情形下,验收测试最好能够摹拟用户与使用程序的实在交互,因而假如有图形界面的话,验收测试理应经由过程这个界面和体系打交道。但是,间接经由过程GUI举行测试会碰到几个成绩:界面变更速率很快、场景的筹办绝对庞大、拿到测试了局较难等。好比一个典范的WEB使用程序,假如经由过程GUI测试,那末一样平常必要剖析HTML标签来填写参数,提交表单,最初再次经由过程剖析来猎取体系的前往值。假如测试代码中充溢着操纵HTML的细节,测试的可读性就会年夜年夜下落,验收测试自己也更懦弱,在需求变动时反而会拖慢进度。
二是托付团队事情体例的变更。在传统团队中,需求剖析、开辟和测试是自力而又按次的历程。就算能构成具体的需求文档,三方对统一段笔墨大概都有本人的了解。了局常常呈现偏向,需求剖析职员埋怨开辟职员没有准确了解需求文档,开辟职员埋怨需求文档不明晰、埋怨测试职员存心挑刺。急迅理论和验收测试的呈现减缓了这一成绩,经由过程事后界说验收规格,削减笔墨上的曲解,明白了开辟事情的完成尺度。不外这类头脑体例的变化很难一挥而就,必要托付团队及其好处干系人配合延续勉力才干乐成。
三是对构造的情况、设置办理及部署流程的应战。当引进主动化验收测试后,对全部部署流水线的主动化水平会有更高请求。好比部署流水线应当可以主动将使用程序部署到待测试的情况中。假如使用程序依附数据库,那末还应当可以部署数据库schema。别的一些运转时设置也必要经由过程剧本完成设置。这傍边除剧本筹办以外,构造的情况办理也是要能跟上的。一样平常情形下,略微年夜一些的构造都是有专门的运维团队(而非托付团队)来办理硬件设备和其设置的。因而,这个成绩一样平常也触及多个团队来合作办理。
面临这三座年夜山和进度压力,老手团队大概会感伤“信息量略年夜”而止步不前。这时候无妨思索各个击破,三个成绩中的事情体例变化触及的好处关系人最多,难度也最年夜;情况办理成绩固然触及分歧团队,但一样平常仍是手艺部门内的成绩,关起门来好商议;验收测试的完成/保护次要是手艺成绩,绝对最复杂。假如工夫和资本的确无限,无妨思索就义一部分验收测试的无效性,接纳复杂的非端到端验收测试,在主动化部署流程方面也能够做一些折衷,会合力气变化事情体例。当全部事情已进进节拍,再往改善某个详细环节时就顺遂良多了。团队只需乐意迈出一小步,也能取得很年夜的代价。
过渡计划:绝对复杂的非端到端验收测试

假如团队的手艺堆集还不敷,又没有充足的资本,无妨思索复杂一些的验收测试战略作为过渡计划。非端到真个验收测试是指间接挪用使用程序外部的逻辑布局来驱动测试。因为测试代码和产物代码都利用统一种言语编写,能够省往对照烦琐的数据格局剖析。而在筹办测试数据和场景时,间接挪用外部逻辑块一样平常也更便利。以典范的利用SpringFramework的JavaWEB使用程序为例,团队能够接纳和集成测试相似的基本架构来编写非端到真个验收测试。
这里所说的集成测试的目标是考证使用程序与内部服务的毗连可否一般事情。这与使用程序完成的详细功效干系不年夜,因而一样平常只加载必须的ApplicationContext。

<br>
图表1集成测试
非端到真个验收测试能够接纳和集成测试一样的测试基本架构,如许你就能够利用熟习的测试库了,分歧的是必要加载全部ApplicationContext以尽量摹拟使用程序被部署后的情形。

<br>
图表2加载全部高低文
因为能够会见全部ApplicationContext中的任一对象,我们能够经由过程会见使用程序的外部组件来实行测试,好比使用层的某个Service。但必要注重的是,拔取的组件离UI层越远,其摹拟实在用户交互的无效性就越差,并且受外部完成变动的影响越年夜。假如使用程序利用spring-webmvc的3.2以上版本,保举利用它的mvc测试库。spring-test-mvc供应了相似http哀求的DSL,此时固然测试仍是基于ApplicationContext,但其实不间接会见外部组件了。这个计划关于老手团队对照和睦,但请注重,这仅仅是个过渡计划,由于:


  • 非端到端测试没法供应周全的回回测试,特别是UI操纵。在好几个项目中,我们发明仅接纳非端到端测试掩盖的功效,团队不能不保存手工回回测试。假如UI上包括了大批庞大的把持逻辑乃至有营业逻辑泄露到UI组件中,这会浓缩验收测试带来的收益。
  • 因为测试加载的ApplicationContext和Web容器加载的ApplicationContext存在差别,非端到端测试大概会遗漏一些成绩。好比在非端到端测试中一次性加载了booking-servlet.xml和root.xml,使他们成了一个全体的高低文,而实践上在Web容器中其实不完整是如许,root.xml中的bean其实不能会见和把持booking-servlet.xml中的bean。一个罕见成绩就是假如在booking-servlet.xml中必要利用占位符,而刚巧我们已在root.xml中有一个现成的<context:placeholder/>,看起来瓜熟蒂落,并且在测试中也没有成绩,但实践部署到web容器时,就会加载失利。
  • 非端到真个验收测试不克不及作为义务完成的终极尺度。由于另有UI部分还没有完成。当这类验收测试经由过程时,我把这个义务称作“能够进进UI调试的”。
因而,假如团队有充足的妙技和资本时仍是应当间接利用端到真个验收测试,特别当使用程序供应API(好比WebService)或是接纳更容易于剖析的数据格局与客户端交互时。好比假如使用程序供应了基于JSON的API,完整可使用http-client来驱动测试。
完成非端到真个验收测试

来看看第一个验收测试,这个案例来自于出名的dddsample,为了让验收测试可以看上往高端年夜气上层次,我们将利用Cucumber来构造验收测试。验开场景形貌的是营业员怎样挂号航运货件并注释了挂号完成后货件的各项形态。

<br>
图表3第一个用户故事及其验开场景
Cucumber供应了一系列的Annotation来匡助我们验开场景文本与测试代码粘连在一同。

<br>
图表4完成验收测试-1

<br>
图表5完成验收测试-2
接上去,当运转测试时,你就能够失掉一份大度的html呈报

<br>
图表6测试运转出口
保护非端到真个验收测试
当团队入手下手编写验收测试以后,一样平常没过量久就会发明验收测试的开辟进度愈来愈慢,并且偶然碰到测试失利,但实在使用程序并没出缺陷的情形。验收测试对代码质量的请求也很高,比拟单位测试,为了要到达测试所需的肇端形态,验收测试的筹办事情要更庞大。并且因为必要剖析使用程序前往的数据,验收测试的断言也会加倍噜苏。因而,团队最好尽早入手下手重构验收测试,上面的倡议也许有效处:


  • 创建最小测试数据集而且尽量断绝测试的数据。偶然团队会发明两组测试因为依附统一批数据而发生抵触,独自实行任一组测试都能经由过程,但一同实行就会失利。好比在示例代码中,关于分歧的货件处置事务挂号场景,验收测试城市注册一个新的货件。
  • 埋没断言细节。如许能够削减反复代码,并提拔测试的可读性。把噜苏的剖析逻辑埋没在范畴言语编写的办法中。
比方:假如多个测试用例城市对货件的运输形态举行断言,能够把剖析细节提掏出来,如许能够往除反复代码,而且削减语法噪声。

<br>
图表7抽取断言


  • 尽量利用已完成的功效来完成测试场景的筹办。有一些步骤多是多个测试用例都必要来筹办数据的,能够把此类步骤抽掏出来。如许也能够削减反复的代码,当使用程序跟着需求变更时,验收测试会有更强的顺应性,并且抽掏出来的办法因为埋没了手艺细节,利用起来更简洁。间接利用数据剧本的计划看起来很诱人,但一旦外部布局改动,数据剧本也得随着改。

<br>

<br>
图表8抽取大众步骤
验收测试对理论部署流水线的团队有侧重要意义,也是很年夜的应战。但愿人人都能找到符合本人的办法。最初先容几个有效的测试库。

最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,net网页编程Beans等等,但是我认为如果java想超越.net网页编程,那么他首先要解决的就是IDE工具的整合。
海妖 该用户已被删除
沙发
发表于 2015-1-20 21:15:40 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
简单生活 该用户已被删除
板凳
发表于 2015-1-25 18:03:24 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
地板
发表于 2015-2-3 12:26:10 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
再现理想 该用户已被删除
5#
发表于 2015-2-4 06:45:27 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
透明 该用户已被删除
6#
发表于 2015-2-8 00:07:11 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
只想知道 该用户已被删除
7#
发表于 2015-2-11 01:44:23 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
再见西城 该用户已被删除
8#
发表于 2015-2-20 09:51:42 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小魔女 该用户已被删除
9#
发表于 2015-2-22 22:12:29 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
爱飞 该用户已被删除
10#
发表于 2015-2-28 13:45:45 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-8 21:03:55 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
山那边是海 该用户已被删除
12#
发表于 2015-3-9 16:07:03 | 只看该作者
是一种为 Internet发展的计算机语言
老尸 该用户已被删除
13#
发表于 2015-3-11 05:41:11 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
精灵巫婆 该用户已被删除
14#
发表于 2015-3-11 20:46:03 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
不帅 该用户已被删除
15#
发表于 2015-3-19 12:36:02 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
金色的骷髅 该用户已被删除
16#
发表于 2015-3-27 21:00:36 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 20:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表