1、 本 科 毕 业 论 文 基于敏捷软件开发方法的 Web2.0 网站开发 测试驱动方法的应用 The Web 2.0 website development based on Agile programming Application of Test Driven Development 姓 名: 学 号: 学 院:软件学 院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年 月 摘 要 敏捷软件开发方法是这几年来软件工程发展的最新成果。 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。 测试驱动开发 是 敏捷开发的最佳实践之一,所谓的测试驱动开发,其重心不在 Test,而在于 D
2、evelopment, 测试驱动开发并不是一种测试技术,而是一种富有新意的软件开发方法。 本文主要探讨了测试驱动的软件开发方法在 Ruby On Rails 项目中的应 用,切实运用测试驱动开发方法来驱动整个拼客网的开发。 在拼客网的开发过程中,我们运用测试驱动中的单元测试来完成模型类的构建,从而设计完成数据库的架设;运用功能测试实现对控制器从需求到设计再到编码的整体流程的驱动;最后通过对整个项目的工作流程进行集成测试,既验证了项目的功能,也对项目的需求的完成情况进行了检验。 经过实践,发现当熟练运用测试驱动开发方法进行项目的开发后,虽然没有明显的节省开发的时间,但是 少了 前期繁琐的需求的搜
3、集与整理, 项目整体框架的 设计 ,还是令我们雀跃不已。 测试驱动代表着一种截然不同的软件开发方 法,当习惯了测试驱动开发的思维后,就能够在项目的开发中灵活的进行运用。 测试驱动开发提倡测试先行,因此能够尽早、尽可能地发现项目中潜在的错误,这就降低了后期修改代码错误的代价 和风险 。 关键词 敏捷软件开发;测试驱动开发; Rails Abstract Over the years, the latest achievement of the software engineering is Agile programming. Agile programming is a people-cent
4、ered, iterative, step-by-step development methodology. Test Driven Development is one of the best practices of agile programming, test driven development is not focus on testing, but the development, it is not a testing technique, but an innovative software development methodology. This article disc
5、usses the test driven development methodss applications in the Ruby On Rails projects, effective use of test driven development to drive the whole development of pin ke web. In the process of developing the pin ke web, we use unit testing to drive the construction of model, and then completed the fr
6、amework of the database; we make use of functional testing to drive the process of controller from the demand to design until coding ; finally, testing the work of the entire project by integration testing, it not only verify the function of the project, but also examine the completion of the demand
7、 of the project. It has been found that when we are skilled in testing driven development, although the duration of development isnt obviously reduced,but without the cockamamie process to collect and sort the requirements at the beginning.Testing driven development stands for a completely different
8、 software development means.When we are familiar with this method,we can use it flexibly during the project development.This method calls for testing firstly.By this means, developers can find potential faults as early as possible.It is better to reduce the risk of reworking the inaccurate code. Key
9、 words: Agile programming; Test Driven Development; Rails 目 录 第一章 引言 .1 1.1 研究的背景 .1 1.2 本文的主要工作 .3 第二章 测试驱动开发方法介绍 .4 2.1 测试驱动定义 .4 2.2 测试驱动的本质 .5 2.3 测试驱动的优势 .7 2.4 测试驱动的不足 .8 第三章 测试驱动开发的过程 . 10 3.1 测试驱动开发的流程与模式 . 10 3.1.1 测试驱动开发流程 . 10 3.1.2 测试驱动开发模式 . 12 3.1.2.1 相互独立的测试 . 12 3.1.2.2 测试列表 . 13 3.1
10、.2.3 测试优先 . 13 3.1.2.4 断言优先 . 14 3.1.2.5 测试数据 . 14 3.1.3 小结 . 14 3.2 测试驱动在基于敏捷开发的拼客网站的实践 . 15 3.2.1 项目简介及初始需求 . 15 3.2.2 测试环境的搭建 . 16 3.2.3 模型类的测试驱动 . 19 3.2.4 控制器的测试驱动 . 24 3.2.5 应用程序的测试驱动 . 31 3.2.6 小结 . 38 第四章 结束语 . 39 参考文献 . 41 致 谢 . 42 Contents Chapter 1 Introduction .1 1.1 Background .1 1.2 Co
11、ntent .3 Chapter 2 Introduction to TDD .4 2.1 Definition of TDD.4 2.2 Essence of TDD.5 2.3 Advantage of TDD .7 2.4 Lack of TDD.8 Chapter 3 TDD Process . 10 3.1 TDD Processes and Models. 10 3.1.1 TDD Processes. 10 3.1.2 TDD Models . 12 3.1.2.1 Isolated Test. 12 3.1.2.2 Test List . 13 3.1.2.3 Test Fir
12、st . 13 3.1.2.4 Assert First . 14 3.1.2.5 Test Data. 14 3.1.3 Summary. 14 3.2 Practice TDD . 15 3.2.1 Project Profiles and Initial Demand. 15 3.2.2 Construct Test Environment . 16 3.2.3 TDD Apply to Model. 19 3.2.4 TDD Apply to Controller . 24 3.2.5 TDD Apply to Application. 31 3.2.6 Summary. 38 Cha
13、rpter 4 Conclusions . 39 References . 41 Acknowledgements . 42 基于敏捷软件开发方法的 Web2.0 网站开发 测试驱动方法的应用 1 第一章 引言 1.1 研究的背景 在社会信息化程度不断提高的今天,一个高效的软件开发过程对于软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。现今的 软件 行业, 从提出需求到开发部署的周期越来越短 ,而且客户的需求是随时变化的,因此如果仍采用原先繁琐冗长的传统 开发方式,前期文档的正确与详尽对后期项目的架构和功能的实现的正确与否起决定作用,显然是无法适应如此多变的需求的。
14、于是,软件开发者也在不断探索着新的软件开发方法,希望能使软件开发更加简单有效,在这种大前提下,敏捷开发应运而生。 敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。敏捷开发避免了传统瀑布方式的弊端,主要是吸收了各种新型开发模式的 “ 动态 ” 特性,关注点从文档 转 到开发者,管理方式也从工厂的流水线到团队的自我放松式的组织。强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付 新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。 敏捷软件开发 包括极限编程 (eXtr
15、eme Programming,XP)、 Scrum、 动态系统开发方法 (Dynamic System Development Method,DSDM)、 自适应软件开发(Adaptive Software Development,ASD)、 Crstal 方法 、特征驱动开发 ( Feature- Driven Development, FDD) 、实用程序设计 等,其中最重 要的是极限编程。 1这些方法可满足对不同于文档驱动的、严格的软件开发过程的新方法的需求。 敏捷 软件开发过程 与传统软件开发过程的不同之处 有 4 个: ( 1) 个体的交互胜过过程与工具; ( 2) 可以工作的软件
16、胜过面面俱到的文档; ( 3) 客户合作胜过合同谈判; ( 4) 响应变化胜过 遵循 计划。 随着 敏捷开发 的运用越来越广泛 , 作为敏捷软件开发的核心的 测试驱动, 也基于敏捷软件开发方法的 Web2.0 网站开发 测试驱动方法的应用 2 越来越受到人们的关注 ,并成功运用于实际的项目开发中 。测试驱动开发 (Test Driven Development),简称 TDD,由 KentBeck 提出的一种软件开发方式。它以不断地测试推动 代码的开发,既简化了代码,又保证了软件质量。 测试驱动开发理论最初源于 对这些问题的思考 ( 1) 如果我们能够在编写程序代码之前先进行测试方案的设计 ,
17、 会怎样 ? ( 2) 如果我们保证除非没有这个功能 将导致测试失败 , 否则就不在程序中实现该功能 , 会怎样 ? ( 3) 换一个角度 , 如果当侧试时发现必须增加某项功能才能够通过测试时 , 我们就增加这一功能 , 会怎样 ? 大师们通过带着这些问题的实践 , 发现这的确是一个提高软件代码质量 , 使得效率得到保障的一个很好出发点。以这样的思路进行软件开发 , 可以保证程序中的每一项功能都有测试来验证它是正确的 , 而且每当功能 被无意修改时 ,测 试程序会发现。同时 , 也使我们获得了一个新的观察点 , 从对程序调用者有利的视角来观察我们的程序 , 这使得我们在关心程序功能的本身还能够
18、对接口予以足够的关注 , 使得其更容易被调用 。 另外这种思路下的代码将变得更加易于调用 , 也就必须使其与其它代码保持 低耦 合性。并且 , 当你想复用这些模块时 , 测试代码给出了很好的示例。这一切 , 使得软件开发工作的质量一下子变得有保障了。 传统软件工程界一直存在这样的看法 : 程序员不应该测试自己的代码 , 原因之一是程序员在代码开发中形成的思维定势将导致测试的盲区 ; 其次是从心理学的角度看 , 个人很难否决自己努力完成的工作成果。这样 , 专业的测试团队的出现成为可能 , 在现代软件开发过程中 , 专业测试团队的介入 , 使得软件的质量得到了相当程度的保障 。 测试因此成为对软
19、件质量保证的最后哨卡 , 其地位也日渐重要。 尽管在传统测试理论中 , 测试几乎已经伴随了整个开发周期 , 但更多的情况是 : 至少在项目开始集成之前 , 测试是基本不存在的 , 测试通常是在集成阶段开始进入的 , 测试人员就不得不在这个时候 再 来面对可能的模块质量问题、 模块设计问题以及其他许多早在那之前就应该已经解决的问题。 而软件工程的研究显示 : 在软件开发周期的越早期 发现错误 , 那个错误将带来的损失将越小 , 后期的修改费用会成指数级上升。 基于敏捷软件开发方法的 Web2.0 网站开发 测试驱动方法的应用 3 显然,采用测试驱动开发方式,让程序员 在开发 功能代码之前就先编写
20、测试用例, 以测试来驱动软件设计的进行, 通过 频繁地 进行 测试 , 不仅 完成整个项目功能代码的编写工作,也 提前挖掘出项目中可能存在的问题, 减少后期修改 bug的费用 ,提高工作的效率。 测试驱动开发改变了编码的过程 , 并且这种改变不仅是可能的 , 同时也是值得去做的。 在开发的顺序上 , 采用先编写测试 ,再编写代码来满足测试的方法,并在开发过程中不断地通过运行测试代码来获得所开发的代码与所要求的结 果之间的差距 , 在实际中有非常好的效果 ,在这个过程中, 测试工作不再是单纯的测试 , 而成为设计的一部分。 1.2 本文的主要工作 本文的主要工作在于 通过实现一个 web2.0 的拼客网站的开发,来 研究测试驱动在敏捷开发方 法 中所起的作用。 Ruby on Rails 是一种解释型的方便快捷的面向对象的脚本语言,利用 Ruby 语言和 Rails 的强大功能,可以使 Web 开发更加轻松自如。该项目主要是基于敏捷的开发方式, 采用 Ruby on Rails 这种 Web应用程序 框架,运用测试驱动的方法 来进行开发的 。通过将测试驱动技术运用于项 目的开发中,从实践中研究测试驱动开发方法对于软件开发的各个阶段的影响,更加深刻的体会测试驱动的开发方法的优点及其存在的缺点。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。