为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于Teamcity的持续集成方案

2012-10-08 3页 pdf 205KB 13阅读

用户头像

is_383824

暂无简介

举报
基于Teamcity的持续集成方案 作者简介:李婧(1982-),女,陕西汉中人,陕西理工学院计算机系助教,研究方向为软件工程。 基于 TeamCity的Web项目持续集成方案 李 婧 (陕西理工学院 计算机系,陕西 汉中 723000) 摘 要:在分析持续集成理论的基础上结合 Web 项目的具体实际,使用 TeamCity 将 Web 自动化测试、代码规范检 查、单元测试覆盖率检查等多种机制集成到软件的开发过程中去,提出了一套基于 TeamCity的持续集成方案。 关键词:持续集成;每日构建;TeamCity;Selenium 中图分类号:TP311...
基于Teamcity的持续集成方案
作者简介:李婧(1982-),女,陕西汉中人,陕西理工学院计算机系助教,研究方向为软件工程。 基于 TeamCity的Web项目持续集成 李 婧 (陕西理工学院 计算机系,陕西 汉中 723000) 摘 要:在分析持续集成理论的基础上结合 Web 项目的具体实际,使用 TeamCity 将 Web 自动化测试、代码规范检 查、单元测试覆盖率检查等多种机制集成到软件的开发过程中去,提出了一套基于 TeamCity的持续集成方案。 关键词:持续集成;每日构建;TeamCity;Selenium 中图分类号:TP311.13 文献标识码:A 文章编号:1672-7800(2009)08-0018-03 0 引言 持续集成 CI(Continuous Integration)是从代码开发之初就 不断集成、测试、Bug 修复,从而保证在第一时间发现问题、解 决问题, 使得代码质量在开发之初就保持在一个高的水平线 上。 1 持续集成 持续集成来自于 XP 的一个实践,是一种测试策略和具体 测试解决方案的集合。 Martin Fowler 和 Matthew Foemmel 将它 定义为 : 一种软件开发实践,即团队的成员经常集成他们的工 作。 通常每个成员每天至少集成一次,每次集成都通过自动化 的构建(包括测试)来验证,从而尽快地检测出集成错误。 这个 过程会大大减少集成问题, 让团队能够更快地开发内聚的软 件。 持续集成体现于实现成熟的自动化日创建工作,该工作需 要做以下几部分内容:①将所有的源代码提交(Check In)于固 定的地点,让所有人都能从这里获取最新的源代码或者以前的 各个版本;②创建过程完全自动化,任何人只要输入简单的命 令就完成对系统的整个创建;③测试完全自动化,任何人只要 输入简单的命令就可以运行一套完整的针对该系统的测试;④ 及时发布以确保所有人都可以得到最新、最好的可执行文件。 1.1 持续集成的一般 持续集成不但需要 IDE、版本控制服务器(CVS)、持续集成 服务器的支持,更需要开发团队建立良好的习惯和机制保证集 成的高质高效。 持续集成的一般流程如图 1所示。 开发人员在 各自开发环境内完成相应模块的开发后向版本控制服务器 (CVS)提交代码,持续集成服务器通过侦测发现代码的提交, 开始构建过程,完成代码的编译、单元测试等任务,整个过程中 如无错误发生,则认为构建成功,其他开发人员可以继续代码 的提交、集成工作;一旦构建过程中发现错误,则说明此次代码 的提交对现有代码产生了影响,需要对提交人提交的代码进行 分析,找到构建失败的原因,并由该提交人重新编辑提交代码, 在构建成功之前其他人不得向版本控制服务器(CVS)提交代 码,直至该构建成功为止。 若经过分析发现不能及时修复失败 的构建,此时提交的代码已经在版本控制器里,所以需要及时 回滚代码,恢复提交前的状态。 图 1 持续集成的一般流程 1.2 持续集成的意义 1.2.1 减小风险 持续集成过程通常在开发人员提交代码后开始,服务器自 动更新代码,编译并运行单元测试、功能测试、集成测试,然后 进行部署。 这个持续集成的过程可以帮助开发人员快速发现 并解决问题。 与开发人员的机器相比,持续集成服务器运行在 相对稳定、干净的环境中( 可减小跟踪调试的难度)。 持续集 成过程的失败,通常意味着最近一次更新破坏了软件现有功能 或引入了新的缺陷。 在持续集成过程结束后,除了构建结果, 软 件 导 刊 Software Guide 第8卷%第8期 2009年 8月 Vol.8 No.8 Aug. 2009 第 8期 通常会生成代码,帮助项目管理人员更好地了解并改 善项目。 1.2.2 减少手动过程 在开发过程中,大量地采取手动过程,不仅降低了团队的 工作效率,更严重的是它将许多不确定的因素引入到了产品的 构建过程中,使得发现及解决问题变得异常困难。 通过使用持 续集成工具将构建过程自动化,则便于分析并找出问题,大大 提高了开发的效率。 1.2.3 及时生成构建结果 从客户和用户的角度看,一个可以部署或执行的构建产物 才是最重要的。 在使用持续集成工具的环境中,开发人员对源 文件进行修改、提交,持续集成服务器会将这部分修改与其它 的代码进行整合、测试,并重新生成最终产品。如果其中任何一 个环节出现了问题,相关人员可以很快得到反馈。 1.3 TeamCity 集成开发环境 TeamCity 是功能强大的持续集成 (Continuous Integration) 工具,包括服务器端和客户端,支持 Java、.Net项目开发。如图 2 所示。 图 2 TeamCity 工具的功能结构图 TeamCity 是针对 Java 和.Net 开发人员设计的集成团队开 发环境(Integrated Team Environment),主要目的是提升团队合 作的效率,主要体现在分布式编译和测试、实时的单元测试、服 务器端的代码审查和代码覆盖分析等。 TeamCity 具有以下特 性:持续集成和测试、高效实用的编译管理、及时的团队交流、 服务器端代码分析、代码覆盖分析和报告、Web 界面和项目控 制面版、可扩充性,如实时、和 IDE 集成、先测试,后提交, 即测试后再提交到版本控制系统中。 2 Web项目持续集成方案设计 2.1 设计思路 Web项目是目前应用最多的软件项目,由于其开发的代码 需要在 Web 服务器上发布后才能看到实际的效果,其集成、测 试的难度大于基于 C/S 架构的项目。 近年来为了保证 Web 项 目的质量和测试,出现了基于 MVC、MVP 的架构,就是将逻辑 从页面展现中剥离出来,页面只负责展现,从而保证逻辑可以 在后台得到充分的测试,保证软件质量、降低风险。 Web 项目 的持续集成的前提是要保证提交前的模块是独立的,可以独立 在浏览器中展现,可以被 QA 验收测试 ,同时也可以保证客户 在不同的阶段都可以得到完整的、高质量的代码。 Web项目持 续集成方案不但需要考虑逻辑层面的测试覆盖,同时需要保证 页面的测试。 Web 应用程序的验收测试常常涉及一些手工任 务,例如打开一个浏览器,并执行一个测试用例中所描述的操 作,依靠传统的 QA 的手工测试是不能保证在频繁代码提交过 程中,已开发软件的功能可以达到用户的,并不会破坏已 有功能,所以需要将 Web 的自动化测试引入到持续集成中来, 根据测试用例完成页面的测试。同时还需要将代码的命令规范 的检查、代码覆盖率,必要的时候可以将 Bug 发现工具引入到 持续集成服务器中,从而可以构建经过更严格测试,因而也更 为可靠更易于维护的软件 。 2.2 Selenium 验收测试工具 Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一 个验收测试工具,使用 Selenium 的好处有:①Selenium 测试直 接在浏览器中运行,就像真实用户所做的一样。 Selenium 测试 可以在 Windows、Linux和 Mac 上的 Internet Explorer、Mozilla 和 Firefox 中运行; ②通过编写模仿用户操作的 Selenium 测试脚 本,可从终端用户的角度测试应用程序;③通过在不同浏览器 中运行测试,更容易发现浏览器的不兼容性。 Selenium 的核心,也称 browser robot,是用 JavaScript 编写 的。 这使得测试脚本可以在受支持的浏览器中运行。 browser robot 负责执行从测试脚本接收到的命令, 测试脚本可以使用 HTML,Java,C#,Ruby等多种语言编写,降低了 QA 编写代码的 门槛,方便 QA将测试用例转换为 seleium 脚本。 2.3 Web项目持续集成方案 需求被划分成独立的功能(Feature),开发人员和测试人员 基于需求进行代码编写、 测试用例开发和 Selenium 自动化脚 本的编写, 并将开发完的成果提交至版本控制服务器(CVS), 具体的持续集成方案如图 3所示: 图3 Web 项目持续集成方案 李 婧:基于 TeamCity的 Web项目持续集成方案 19· · 2009年软 件 导 刊 A Strategy for Continuous Integration of Web Project Based on TeamCity Abstract:Continuous integration is an important concept in agile development. Code integration runs through the whole development and thus ensure software being superior in quality. On the basis of analyzing continuous integration concept, multiple mechanisms such as web automatic test, code specification check, unit test coverage are integrated into software development, and a strategy of continuous integration based on TeamCity is proposed. Key Words:Continuous Integration; Daily Builds; TeamCity; Selenium Step1:开发人员完成功能开发,并确认以下步骤已经完成 的基础上方可提交代码:代码编译通过;使用代码检查工具(例 如 FxCop等)保证代码是否代码规范;单元测试,使用单元测试 工具(例如 NCover 等)保证单元测试的覆盖率;由 QA 根据测 试用例要求,在本地对完成的开发功能进行验收测试。 Step2:提交代码 Step3:持续集成服务器(TeamCity)侦测到版本控制服务器 (CVS)的变化,下载最新的代码。 Step4:持续集成服务器(TeamCity)自动完成以下步骤:代 码编译;代码规范的检查;单元测试,产生单元测试覆盖率报 告。 Step5: 自动向自动化测试环境中的 Web 应用服务器部署 服务端代码,部署 Selenium 测试脚本。 Step6:Selenium 服务器执行测试脚本, 在浏览器中依照测 试用例完成 Web自动化测试。 Step7:向 Selenium 反馈测试脚本执行情况 Step8:Selenium 将 Web 自动化测试的执行情况反映到持 续集成服务器(TeamCity) Step9:根据全部的运行结果,发布构建结果,对失败的构 建通知开发团队的相关人员 Step10:一个阶段后,QA 将最新成功构建结果部署到测试 环境中的 Web应用服务器中。 Step11:确认部署成功。 Step12:根据开发阶段的不同,完成冒烟测试(Smoke Test) 和回归测试(Regression Test)。 3 结束语 在软件行业发展的初期,软件项目中最棘手、最紧张的时 刻就是集成。 一些模块能单独工作,而组装的系统整体却常常 失败,且很难找到失败的原因。持续集成提升了项目的可见性, 因为问题能够更快地被检测出来。由于引入缺陷和发现缺陷之 间的时间变短了,缺陷的发现就更容易,可以很容易地看出改 变了什么,以便帮助开发者找到问题的根源。 同时与良好的测 试程序配合时,可以大大减少缺陷的数量,使得开发者在调试 上花的时间减少了,在增加功能上花的时间更多了,从而从基 础上保证了软件的质量。 参考文献: [1] Matrin Fowler, Matthew Foemmel. Continuous Integration http:// www.martinfowler.com/ [2] Robert Martin. Agile Software Development Principles, Patterns, and Practices [3] Paul M.Duvall. Continuous Integration: Improving Software Quality and Reducing Risk (责任编辑:周晓辉) 20· ·
/
本文档为【基于Teamcity的持续集成方案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索