Java基础、中级、高级、架构面试资料

如何将持续集成和测试驱动的开发融入敏捷实践中

敏捷开发 herman 2607浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

在过去十年或更长的时间中,软件开发团队一直受益于敏捷开发方法。他们采用这些迭代和增量开发实践,通过协作式开发推动解决方案的发展。传统的、非敏捷的软件创建方法通常依赖于一个更严格管制的开发流。瀑布流程就是这方面的一个示例,其中需求、设计、开发和测试的每个活动都是连续执行的。
虽然瀑布式开发多年来一直是大型的复杂系统开发的标准,但它有几个明显的缺陷。首先,即使需求会随时间而变化是众所周知的,但开发人员仍会努力在设计前完成文档,在编写代码前完成设计,其中有大量工作被浪费。另一个缺陷是,将测试和集成一直延迟到项目结束时才执行,问题往往发现得太晚,如果要解决问题,则有可能导致错过最后期限。这两个因素结合起来,在以较慢速度发展的世界中,也许可以容忍。但是,随着创建创新系统的压力的增加,这种方法的满足组织需求的能力在下降。
虽然敏捷实践是由开发 IT 系统的团队推广的,但它们同样适用于产品开发,其中的产品包括硬件、电子和软件。嵌入式软件开发与 IT 应用程序开发的主要区别在于部署目标资源(如处理器性能和内存)的有限可用性。嵌入式软件往往要在这些约束条件中执行复杂的实时操作。想像一下计算机控制的系统,例如汽车里的安全气囊。您需要他们立即部署,但需要的是可靠的部署。敏捷方法最初专为不受管制的行业中的在同一地点工作的较小型项目团队而设计。我们花了很多年对它们进行扩展,使敏捷方法可以容纳更大、更复杂的开发项目。
当应用为基于架构的方法的一部分时,持续集成(CI)和测试驱动的开发(TDD)扩展了基本敏捷实践,使之足以同时提供高品质和项目灵活性。本文将探讨在嵌入式软件开发的上下文中如何采用敏捷方法、CI、TDD。本文还说明了这个组合的好处。

现在,大多数人可能都已经听说过敏捷方法。它们带给软件开发的概念改变了团队组织的工作方式、适应不断变化的需求的方式以及发布软件的方式。持续集成(CI)是为敏捷开发而创建的,所以敏捷方法是任何 CI 讨论的背景。它将开发组织为功能性用户故事(user story)。这些故事按优先级分成较小的工作组,也称为冲刺(sprint)。
这里的思路是不要提前尝试解决每一个问题,相反,专注于您已经知道的东西。因此,团队设计、构建和测试他们对预期功能所知道的内容。这将在完整产品需求的一个子集的基础上创建一个工作产品。然后,团队继续到下一个最高优先级的需求集,并重复上述过程。当然,这是一个高度简化的视图,这个过程中有许多变化,但核心是:以增量方式构建您的产品,并尝试在过程中做一些改进。
根据 ThoughtWorks 的 Martin Fowler 的观点,持续集成(continuous integration)是一种软件开发实践,要求团队成员经常集成他们的工作。每个人至少每天集成一次,这导致每天有多个集成。集成是通过自动化的构建进行验证的,这些构建运行回归测试,以尽快检测集成错误。团队发现,这种方法会导致集成问题大幅减少,更快地实现有凝聚力的软件开发。
使用持续集成和测试驱动开发的敏捷实践

这导致 CI 流程的成功执行的最终细节。如果持续集成的思路是为了快速发现问题,从而向每个开发人员提供工作反馈,则必须以某种方式快速评估其工作。测试驱动的开发填补了这项空白。利用 TDD,您可以构建测试,然后等代码通过测试后再开发功能。随着每一个新代码的添加,可以将它的测试添加到在构建集成工作时运行的测试套件中。这将确保新增内容不会破坏之前出现的运作中的工作,并且事实上 “破坏了构建” 的代码的开发人员可以迅速获得通知。在图 1 中显示了持续集成和测试驱动的开发的典型组合。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 如何将持续集成和测试驱动的开发融入敏捷实践中