敏捷开发中的软件测试.doc_第1页
敏捷开发中的软件测试.doc_第2页
敏捷开发中的软件测试.doc_第3页
敏捷开发中的软件测试.doc_第4页
敏捷开发中的软件测试.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆大学软件学院软件测试课程(论文)敏捷开发中的软件测试指导老师:张 毅学 生:刘 中 保学 号:20102413020 目 录目 录1摘 要2正 文2参考文献4 1摘 要敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。对于传统的开发方法,开发团队会编写大量的详细的测试相关文档来指导以后的系统测试,这种方法的好处在于可以记录大部分的需求,如果项目人员变更也可以让新进成员很快地进入项目进程。但是测试文档最大的缺点就是不能很好地适应需求的变更。 而敏捷开发提倡的是代码即文档,它用大量的代码注释取代了文档,以达到高效快速的软件开发的目的。同样的,对于软件的测试也是直接体现在代码上。这样可以及时得应对无时不在的需求变更。但从另外一个方面来说,这种方法要求团队成员都必须对项目十分了解。这样应对团队变更就会稍逊一筹。关键字: 敏捷开发,软件测试,测试驱动21 敏捷开发敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 敏捷开发最终的目标就是拥抱变化,以最快的速度对适应无所不在的变化。众所周知的是,软件开发过程中,需求永远是无法在需求分析阶段就得到完整的确认。因此传统的瀑布模型的开发方式已不可能适应快速变化的需求。但是敏捷开发却可以一些有异于传统软件开发方法的特性,做到对需求变化的快速适应。 Test-Driven Development,测试驱动开发。它是敏捷开发的最重要的部分。在Thought Works,实现任何一个功能都是从测试开始,首先对业务需求进行分析,分解为一个一个的Story,记录在Story Card上。然后两个人同时坐在电脑前面,一个人依照Story,从业务需求的角度来编写测试代码,另一个人看着他并且进行思考,如果有不同的意见就会提出来进行讨论,直到达成共识,这样写出来的测试代码就真实反映了业务功能需求。接着由另一个人控制键盘,编写该测试代码的实现。如果没有测试代码,就不能编写功能的实现代码。先写测试代码,能够让开发人员明确目标,就是让测试通过。 Continuous Integration,持续集成。在以往的软件开发过程中,集成是一件很痛苦的事情,通常很长时间才会做一次集成,这样的话,会引发很多问题,比如 build未通过或者单元测试失败。敏捷开发中提倡持续集成,一天之内集成十几次甚至几十次,如此频繁的集成能尽量减少冲突,由于集成很频繁,每一次集成的改变也很少,即使集成失败也容易定位错误。一次集成要做哪些事情呢?它至少包括:获得所有源代码、编译源代码、运行所有测试,包括单元测试、功能测试等;确认编译和测试是否通过,最后发送报告。当然也会做一些其它的任务,比如说代码分析、测试覆盖率分析等等。在我们公司里,开发人员的桌上有一个火山灯用来标志集成的状态,如果是黄灯,表示正在集成;如果是绿灯,表示上一次集成通过,开发人员在这时候获得的代码是可用而可靠的;如果显示为红灯,就要小心了,上一次集成未通过,需要尽快定位失败原因从而让灯变绿。在持续集成上,我们公司使用的是自己开发的产品CruiseControl。 Refactoring,重构。重构是在不改变系统外部行为下,对内部结构进行整理优化,使得代码尽量简单、优美、可扩展。在以往开发中,通常是在有需求过来,现在的系统架构不容易实现,从而对原有系统进行重构;或者在开发过程中有剩余时间了,对现在代码进行重构整理。但是在敏捷开发中,重构贯穿于整个开发流程,每一次开发者check in代码之前,都要对所写代码进行重构,让代码达到clean code that works。值得注意的是,在重构时,每一次改变要尽可能小,用单元测试来保证重构是否引起冲突,并且不只是对实现代码进行重构,如果测试代码中有重复,也要对它进行重构。 Pair-Programming,结对编程。在敏捷开发中,做任何事情都是Pair的,包括分析、写测试、写实现代码或者重构。Pair做事有很多好处,两个人在一起探讨很容易产生思想的火花,也不容易走上偏路。在我们公司,还有很多事都是Pair来做,比如Pair学习,Pair翻译,Pair做PPT,关于这个话题,钱钱同学有一篇很有名的文章对它进行介绍,名为Pair Programming (结对编程)。 Stand up,站立会议。每天早上,项目组的所有成员都会站立进行一次会议,由于是站立的,所以时间不会很长,一般来说是15-20分钟。会议的内容并不是需求分析、任务分配等,而是每个人都回答三个问题:1. 你昨天做了什么?2. 你今天要做什么? 3. 你遇到了哪些困难?站立会议让团队进行交流,彼此相互熟悉工作内容,如果有人曾经遇到过和你类似的问题,那么在站立会议后,他就会和你进行讨论。 Frequent Releases,小版本发布。在敏捷开发中,不会出现这种情况,拿到需求以后就闭门造车,直到最后才将产品交付给客户,而是尽量多的产品发布,一般以周、月为单位。这样,客户每隔一段时间就会拿到发布的产品进行试用,而我们可以从客户那得到更多的反馈来改进产品。正因为发布频繁,每一个版本新增的功能简单,不需要复杂的设计,这样文档和设计就在很大程度上简化了。又因为简单设计,没有复杂的架构,所以客户有新的需求或者需求进行变动,也能很快的适应。 Minimal Documentation,较少的文档。其实敏捷开发中并不是没有文档,而是有大量的文档,即测试。这些测试代码真实的反应了客户的需求以及系统API 的用法,如果有新人加入团队,最快的熟悉项目的方法就是给他看测试代码,而比一边看着文档一边进行debug要高效。如果用书面文档或者注释,某天代码变化了,需要对这些文档进行更新。一旦忘记更新文档,就会出现代码和文档不匹配的情况,这更加会让人迷惑。而在敏捷中并不会出现,因为只有测试变化了,代码才会变化,测试是真实反应代码的。这时有人会问:代码不写注释行吗?一般来说好的代码不是需要大量的注释吗?其实简单可读的代码才是好的代码,既然简单可读了,别人一看就能够看懂,这时候根本不需要对代码进行任何注释。若你觉得这段代码不加注释的话别人可能看不懂,就表示设计还不够简单,需要对它进行重构。 Collaborative Focus,以合作为中心,表现为代码共享。在敏捷开发中,代码是归团队所有而不是哪些模块的代码属于哪些人,每个人都有权利获得系统任何一部分的代码然后修改它,如果有人看到某些代码不爽的话,那他能够对这部分代码重构而不需要征求代码作者的同意,很可能也不知道是谁写的这部分代码。这样每个人都能熟悉系统的代码,即使团队的人员变动,也没有风险。 Customer Engagement ,现场客户。敏捷开发中,客户是与开发团队一起工作的,团队到客户现场进行开发或者邀请客户到团队公司里来开发。如果开发过程中有什么问题或者产品经过一个迭代后,能够以最快速度得到客户的反馈。 Automated Testing ,自动化测试。为了减小人力或者重复劳动,所有的测试包括单元测试、功能测试或集成测试等都是自动化的,这对QA人员提出了更高的要求。他们要熟悉开发语言、自动化测试工具,能够编写自动化测试脚本或者用工具录制。我们公司在自动化测试上做了大量的工作,包括Selenium开源项目。 Adaptive Planning,可调整计划。敏捷开发中计划是可调整的,并不是像以往的开发过程,从需求分析,到概要设计,详细设计,开发,测试,交付。每一个阶段都是有计划的进行,一个阶段结束便开始下一个阶段。而敏捷开发中只有一次一次的迭代,小版本的发布,根据客户反馈随时作出相应的调整和变化。2 敏捷测试不同于传统的软件开发方法,敏捷开发方法目的在于快准狠,精准地定位需求的变更,并快速地适应当前的需要。因此,相对于传统方法中的软件测试方法,敏捷开发中的软件测试方法就有很大的不同。 首先,敏捷开发是测试驱动开发。在任何的功能性开发之前,敏捷开发都要求首先编写功能测试代码。这样可以进一步理清需求,对系统的当前需求有一个更深的了解。也就是说,敏捷开发的方法中,测试无处不在。 传统的测试方法中,在需求分析阶段就需要对系统进行测试用例的编写并形成详细的测试文档。然后在编码完成后,再根据之前制定的测试文档进行各种单元测试与集成测试。这种方式要求在最开始就需要对需求了解地非常详细,如果项目执行后期需求有很大的变更,使用这种测试方法将会给项目带来非常大的麻烦。 其次,相对于传统的测试方法的大量的测试文档,是否在敏捷开发中引入测试文档仍然是当前讨论得比较热烈的一个话题。按照敏捷开发的精神,能工作的系统要优于制作精良的文档。那是否意味着敏捷开发方法就不需要测试文档? 对于传统的开发方法,开发团队会编写大量的详细的测试相关文档来指导以后的系统测试,这种方法的好处在于可以记录大部分的需求,如果项目人员变更也可以让新进成员很快地进入项目进程。但是测试文档最大的缺点就是不能很好地适应需求的变更。 而敏捷开发提倡的是代码即文档,它用大量的代码注释取代了文档,以达到高效快速的软件开发的目的。同样的,对于软件的测试也是直接体现在代码上。这样可以及时得应对无时不在的需求变更。但从另外一个方面来说,这种方法要求团队成员都必须对项目十分了解。这样应对团队变更就会稍逊一筹。3 小结 不过总的来说,什么方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论