敏捷开发核心思想,敏捷开发的好处和坏处,敏捷开发核心思想,敏捷开发的好处有哪些
01前言Agile——敏捷开发作为CMM神话破灭后推出的一种新的软件开发模式,近年来备受关注,被寄予厚望。不知道敏捷开发在其他行业的应用是否理想。以下是我公司敏捷开发实验的总结,希望能窥豹。
敏捷开发宣称个人和交互比过程和工具更好。
工作软件比全面的文档更好。
与客户合作胜于合同谈判。
应对变化比服从计划更好。
右项也有价值,但左项被认为价值更大。
以上说法比较抽象。基于这一理念,ThoughtsWork咨询公司推荐的N种敏捷开发实践如下。
1.Iteration:迭代开发。
工作软件比所有文档都好。因此,敏捷开发提倡将完整的软件版本分成多个迭代,每个迭代都有不同的特点。重要且高优先级的功能优先,高风险的功能优先。项目前期开发一个软件原型,根据原型日夜进行后续迭代。
迭代的好处是早期编码,早期暴露项目的技术风险。尽快向客户展示可行的软件,并提出优化建议。可以分阶段快速向不同客户提供可用版本。
2.IterationPlanningMeeting:迭代计划会议。
在每次迭代的开始,召集整个开发团队,召开迭代计划会议。所有团队成员畅所欲言,定义迭代的开发任务,并回答问题。
3.tory Card/Story Wall/Feature List
在每次迭代中,架构师负责将所有特性分解到多个故事卡中。每个故事都可以看作是一个独立的特写。每个故事应该能够在最多一周内完成开发和提供预测试。在完成所有正在迭代的故事的开发之后,测试团队将进行一次完整的测试。在整个测试过程(pretest,testing)中,测试团队每天总是基于每日构建从配置库中移除的最新编译版本进行测试,开发人员也随时对测试人员提交的问卷进行修改和配置。
敏捷开发的一个特点就是在开放的办公室里充分交流,和开发人员一起工作,包括测试人员。团队按照StoryCards的开发方法,把白板放在开放的办公区,把所有的StoryCards都贴在上面,在当前的开发状态下分别粘贴到四个区域。它们正在开发、研制、预测和测试中。故事卡的开发人员和测试人员根据开发进度在故事墙中移动故事卡,以更新故事卡的状态。这种方法可以直观地了解项目开发的进度。
当开发人员开始开发Story时,ta需要相应的测试人员对Story的功能进行讲解,以保证测试人员得到一致的理解,同时自动开发系统测试脚本。
4.Standup Meeting:站立会议。
每天早上,所有团队成员围绕故事墙召开一次高效会议。汇报开发进度和提问的时间一般不超过15分钟,但是与其浪费大家的时间马上解决问题,我们会在后面单独沟通解决。
5.Pair Programming:结对编程
配对编程指的是两个开发者配对代码。
结对编程的好处是两个人写的代码比一个人单独写的更充实。为了避免大的方向偏差,细节会充分考虑。有经验的开发人员和初学者结对编程,可以促进初学者的成长,保证软件开发的质量。
6.CI/Daily Build
持续集成和足够的夜间构建能力是成功迭代开发的重要基础。
建立在每天的基础上。开发人员每天及时将创建/修改的代码更新到配置库中,自动编译器每天至少自动将代码从配置库中移除一次。在执行自动代码静态检查(如PCLint)、单元测试、编译版本以及完成这些自动任务后,它会输出一份报告,并自动给团队成员发送一封邮件。如有问题,相关负责人应及时纠正。
整个开发团队经常更新代码,可见有些问题是不可避免的。招生部门也根据最新的代码不断地进行测试。能否及时发现和解决新问题,取决于我们是否有足够的自动化单元测试和系统测试能力,尤其是自动化系统测试能力。如果自动化测试只能验证最简单的操作,就很难发现新嵌入代码的危险,这些代码会留在项目后期,风险很大。其实提高自动化测试的覆盖率是最难的。
7.Retrospect:总结和反思
迭代结束后,项目组成员召开总结会,总结实践和教训,并在后续开发中实施。
8.ShowCase:演示
每个故事开发完成后,开发人员会邀请测试人员演示软件功能,帮助测试人员全面理解软件功能。
9.Refactoring:重构
因为迭代开发模型在项目的前期开发出一个可操作的软件原型,所以一开始开发的代码和架构不可能是最优和全面的。所以在Story后续的开发中,需要不断的重构代码和架构。
迭代开发需要很多架构师。因为架构师要把一个完整的版本拆分成多个迭代,每个秋天都要拆分成很多个故事。从架构的角度来说,这些故事必须有很强的继承性,可以不断叠加,这样后面开发的故事才不会完全推翻早期开发的代码和架构,同时也不可避免地要不断完善和重构代码。
10.TDD:测试驱动开发
如上所述,迭代开发的特点是代码的频繁集成和版本的频繁发布。测试驱动开发是保证合并代码正常运行,后期不被破坏的重要手段。这里的测试主要是指单元测试。
03敏捷方法反映出他们参与的敏捷开发项目一般都不是很成功,这可能也是业界遇到的普遍问题:
对于全新的软件,测试人员在项目前期参与并实现了自动化测试脚本,但实际上软件的界面非常不稳定,导致测试人员返工工作量很大。
对于全新的软件,数据人员参与太早,后期返工工作量大,原因和第一点一样。
自动化系统测试的工作量很大,测试人员在自动化测试上投入了大量的精力,却没有足够的精力来测试软件的功能是否正常。即便如此,自动化系统测试脚本大多流于形式,无法检测深层次的问题。
动态代码检查工具的实现并不理想,流于形式。没有人对Purify有深刻的理解和应用经验。报告中发现很多报警,但不知道如何排除。
由于快速成型,架构上没有严谨的设计,导致后期代码堆积。
异地开发模式,无法实现快速建设和交付,团队普遍感觉累。
敏捷开发并不提倡加班,但事实上,无论是CMM还是敏捷这两种开发模式,都和加班没有必然联系。
最后:可以关注微信官方账号:伤心辣条!有很多信息可以分享!资料是面试官在面试时必问的知识点,也包括了很多测试行业的常用知识,包括基础知识、Linux essentials、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、高级测试-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试的高级持续集成、测试架构开发和测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!推荐软件测试交流学习群:914172719 里面会分享一些资深架构师录制的视频录像
好文章推荐这些跳槽面试、跳槽面试、软件测试人员必须知道的面试技巧!
采访:一线城市搬砖!另一个软件测试岗,5000就够了…
面试官:工作三年了,还有初试吗?恐怕你的软件测试工程师头衔需要双引号…
什么样的人适合做软件测试?
准时下班的人比我先升职…
考岗反复跳槽,然后又跳走了…
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。