现在初中生学点什么技术好?找东莞北大青鸟学IT,针对初中毕业零基础...
"5年后不会再有互联网公司,因为所有的公司都在用互联网!"李彦宏在...
金码2018春季招生简章
Java工程师就业课程,助你在互联网风口,称霸职场! 5个月让你成为...
新媒体短视频
北大青鸟金码学校是东莞电脑培训是东莞专业IT培训机构、东莞电脑培...
千万学生无法拒绝的大学,技能与学历双修
金蛛微信营销 带你实战营销圈 90天实战从零基础到专业大咖
一是实现和维护验收测试的技术门槛。理想情况下,验收测试最好可以模拟用户与应用程序的真实交互,因此如果有图形界面的话,验收测试理应通过这个界面和系统打交道。然而,直接通过GUI进行测试会遇到几个问题:界面变化速度很快、场景的准备相对复杂、拿到测试结果较难等。比如一个典型的WEB应用程序,如果通过GUI测试,那么一般需要解析HTML标签来填写参数,提交表单,最后再次通过解析来获取系统的返回值。如果测试代码中充斥着操作HTML的细节,测试的可读性就会大大下降,验收测试本身也更脆弱,在需求变更时反而会拖慢进度。
二是交付团队工作方式的变化。在传统团队中,需求分析、开发和测试是独立而又顺序的过程。就算能形成详细的需求文档,三方对同一段文字可能都有自己的理解。结果经常出现偏差,需求分析人员抱怨开发人员没有正确理解需求文档,开发人员抱怨需求文档不清晰、抱怨测试人员故意挑刺。敏捷实践和验收测试的出现缓解了这一问题,通过预先定义验收规格,减少文字上的误解,明确了开发工作的完成标准。不过这种思维方式的转变很难一蹴而就,需要交付团队及其利益关系人共同持续努力才能成功。
三是对组织的环境、配置管理及部署流程的挑战。当引入自动化验收测试后,对整个部署流水线的自动化程度会有更高要求。比如部署流水线应该能够自动将应用程序部署到待测试的环境中。如果应用程序依赖数据库,那么还应该能够部署数据库schema。另外一些运行时配置也需要通过脚本完成设置。这当中除了脚本准备之外,组织的环境管理也是要能跟上的。一般情况下,稍微大一些的组织都是有专门的运维团队(而非交付团队)来管理硬件设备和其配置的。因此,这个问题一般也涉及多个团队来协作解决。
面对这三座大山和进度压力,新手团队可能会感慨“信息量略大”而止步不前。这时不妨考虑各个击破,三个问题中的工作方式转变涉及的利益干系人最多,难度也最大;环境管理问题虽然涉及不同团队,但一般还是技术部门内的问题,关起门来好商量;验收测试的实现/维护主要是技术问题,相对最简单。如果时间和资源确实有限,不妨考虑牺牲一部分验收测试的有效性,采用简单的非端到端验收测试,在自动化部署流程方面也可以做一些折中,集中力量转变工作方式。当整个工作已经进入节奏,再去改进某个具体环节时就顺利很多了。团队只要愿意迈出一小步,也能获得很大的价值。
过渡方案:相对简单的非端到端验收测试
如果团队的技术积累还不足,又没有足够的资源,不妨考虑简单一些的验收测试策略作为过渡方案。非端到端的验收测试是指直接调用应用程序内部的逻辑结构来驱动测试。由于测试代码和产品代码都使用同一种语言编写,可以省去比较繁琐的数据格式解析。而在准备测试数据和场景时,直接调用内部逻辑块一般也更方便。以典型的使用SpringFramework的Java WEB应用程序为例,团队可以采用和集成测试类似的基础架构来编写非端到端的验收测试。
这里所说的集成测试的目的是验证应用程序与外部服务的连接能否正常工作。这与应用程序实现的具体功能关系不大,因此一般只加载必需的ApplicationContext。
图表 1 集成测试
非端到端的验收测试可以采用和集成测试一样的测试基础架构,这样你就可以使用熟悉的测试库了,不同的是需要加载整个ApplicationContext以尽可能模拟应用程序被部署后的情况。
图表 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中有一个现成的,看起来水到渠成,而且在测试中也没有问题,但实际部署到web容器时,就会加载失败。
非端到端的验收测试不能作为任务完成的最终标准。因为还有UI部分还没有完成。当这类验收测试通过时,我把这个任务称作“可以进入UI调试的”。
因此,如果团队有足够的技能和资源时还是应该直接使用端到端的验收测试,尤其当应用程序提供API(比如WebService)或是采用更易于解析的数据格式与客户端交互时。比如如果应用程序提供了基于JSON的API,完全可以使用http-client来驱动测试。
实现非端到端的验收测试
来看看第一个验收测试,这个案例来自于著名的dddsample,为了让验收测试能够看上去高端大气上档次,我们将使用Cucumber来组织验收测试。验收场景描述的是业务员如何登记航运货件并解释了登记完成后货件的各项状态。
图表 3 第一个用户故事及其验收场景
Cucumber提供了一系列的Annotation来帮助我们验收场景文本与测试代码粘连在一起。
图表 4实现验收测试-1
图表 5 实现验收测试-2
接下来,当运行测试时,你就可以得到一份漂亮的html报告
图表 6 测试运行入口
维护非端到端的验收测试
当团队开始编写验收测试之后,一般没过多久就会发现验收测试的开发进度越来越慢,而且有时遇到测试失败,但其实应用程序并没有缺陷的情况。验收测试对代码质量的要求也很高,相比单元测试,为了要达到测试所需的起始状态,验收测试的准备工作要更复杂。而且由于需要解析应用程序返回的数据,验收测试的断言也会更加琐碎。因此,团队最好尽早开始重构验收测试,下面的建议或许有用处:
建立最小测试数据集并且尽可能隔离测试的数据。有时团队会发现两组测试由于依赖同一批数据而产生冲突,单独执行任一组测试都能通过,但一起执行就会失败。比如在示例代码中,对于不同的货件处理事件登记场景,验收测试都会注册一个新的货件。
隐藏断言细节。这样可以减少重复代码,并提升测试的可读性。把琐碎的解析逻辑隐藏在领域语言编写的方法中。
例如:如果多个测试用例都会对货件的运输状态进行断言,可以把解析细节提取出来,这样可以去除重复代码,并且减少语法噪声。
图表 7 抽取断言
尽可能使用已实现的功能来实现测试场景的准备。有一些步骤可能是多个测试用例都需要来准备数据的,可以把此类步骤抽取出来。这样也可以减少重复的代码,当应用程序随着需求变化时,验收测试会有更强的适应性,而且抽取出来的方法由于隐藏了技术细节,使用起来更简练。直接使用数据脚本的方案看起来很诱人,但一旦内部结构改变,数据脚本也得跟着改。
图表 8 抽取公共步骤
验收测试对实践部署流水线的团队有着重要意义,也是很大的挑战。希望大家都能找到合适自己的方法。最后介绍几个有用的测试库。
Moco,当有外部系统集成需求时,集成测试和验收测试的一大利器。在示例代码中你可以找到一处例子。
GreenMail,如果应用程序需要发送邮件的话,它可以提供一臂之力。不过在部署流水线上的端到端验收测试中,由于一般应用程序和测试并不运行在同一台机器上,很难对邮件进行直接的断言。这时一种方案是修改应用程序的架构,把发送邮件的实现分离到一个专用的应用中去并使用消息队列集成。那么在验收测试中,我们就可以通过监听对应的消息队列来断言了。
Awaitility,在需要对异步处理进行断言时有所帮助。
转眼又到了一年一次的高考中考的时候到了,这个夏天你有没有考上你理想的大学或者心仪的高中学校呢?接下来又如何安排你自己的学习路线呢?对于平时成绩不理想的学生来说,是时候该考虑一下,下一步学什么电脑技术对自己的前途有帮助了。那么,学电脑学什么好就业呢?
东莞北大青鸟金码学校先进的教学理念,雄厚的师资力量为您搭建高薪桥梁,同时为了加快青鸟学子快速撑握编程技能,学校拥有高配置教学电脑,
奔跑吧金码学子活动由东莞北大青鸟主办,由校区师生参与,在东莞市虎英公园举行了奔跑吧金码的大型活动。这场活动分为五关,参赛师生3人一
有很多的学生都有问过这样一个问题,说零基础能学电脑吗?我什么都不会,对电脑一点都不熟悉,我可以学习电脑吗?我可以这么回答你们,零基础是可以学电脑的,而且不用担心学不会,关键是在于你找了一个怎么样的培训学校,北大青鸟东莞金码学校就是一个针对课程针对是零起点的学校。
北大青鸟东莞金码每年都会举办文化艺术节,以各种活动形式贯穿其中,让学员感受到浓浓的文化艺术氛围,并亲自参与到文化节的活动中来,也是
定期反思自己的职业规划,这是十分重要且必要的。在2013年即将结束之际,也确实应该对事业提出一些值得思考的问题了。仔细思考一下你在事业
(1)第一问:我喜欢做什么? 兴趣和喜欢是人们工作动力的源泉。为什么有的人得 到了优厚的薪酬福利,登上了理想的职位,在别人看来是
每个人的职业生涯都有周期,其中20~40岁的这20年最为关键,可以说是职业生涯的黄金阶段。现阶段,由于经济 低 迷,企业裁员、行业萎缩等
我是XX企业的,在人才市场您求职了我们公司的XX岗位,我们想通过电话对你的基本信息进行一下核实。近日,在哈市各大人才市场的招聘企业中,
经历了浩浩荡荡的面试才知道一份工作是多么的难得,一份好工作更是弥足珍贵。开学第一周,经过十多场面试,武汉长江工商学院金融专业毕
二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,
将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为中继(relay)系统。根据中继系统所在的层次,可以有以下五种中继系统:...
大数据时代,研究大数据的IT 厂商把研究重心放在优化大数据系统软件架构、优化业务逻辑、优化数据分析算法、优化节点性能等方向,而忽略了大数据环境基础设置中网络环节的评估和优化。本文介绍了思科公司在Hadoop 集群环境下的网络架构设计与优化经验。
大数据时代,由于数据体量巨大、分布广泛给安全问题带来了新的挑战。在真实空间和数据空间之间存在着相对应的、平行的关系,在真实空间里的
首先你应该是在用 PHP 5 3 以上的版本,如果 PHP 版本在这之下,是时候该升级了。我建议如果有条件,最好使用最新的版本。 1
2017年的高考日即将来临,越来越多的考生开始担心自己的成绩能否考上理想的大学,不管是成绩好的还是成绩不好的,担忧都是难免的,这里为了
千千万万个家庭,每个家庭都有自己的特殊情况,也应该有独特的教育方式,在教育这件事上,我们不能一刀切,家校合作,让孩子们不断的体验进步带来的成就感,这样他们就会有不断的动力去进步!
2016年12月29日,丽日蓝天的下午,北大青鸟东莞金码2017年度元旦文艺汇演暨优秀学员表彰大会在东莞宾馆圆满举行。本次年会以绽放青春,放飞
据科技博客网站Gizmodo报道,谷歌街景为了识别数以亿计的街道门牌号,建立了一个类似动物神经系统的庞大计算网络。 谷歌街景功能的
相信不少的大学生刚毕业或者毕业不久后,都会觉得大学里面学到的专业知识在工作中基本都用不上。不少人在这时候就把目光投向了薪资高待遇好