如果你对Scrum有所了解,你就会发现Scrum并不明确地说明需不需要测试(以至于,有些人误以为敏捷开发不需要测试),也不会说需要通过结对编程还是测试驱动的方式写代码。
Scrum所要求的是团队在每个Sprint完成的时候递交高质量的、潜在可工作的软件。如果一个团队能够在不改变他们技术实践的情况下达到这个目标,也是可以的。然而,绝大多数团队会发现采用新的技术实践,因为这能使团队更容易实现他们的目标。
下面介绍一下Scrum团队用来改善工作质量的常用技术实践:
测试驱动开发
采用测试驱动开发他们在很短的周期内工作,确定并自动化一个失败的测试,写足够的代码通过测试,然后使用必要的方式清理代码,然后继续开始。这个循环每隔几分钟一次,而不是每隔几个小时。
测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程。
测试驱动开发的基本过程如下:
- 快速新增一个测试
- 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过
- 做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法
- 运行所有的测试,并且全部通过
- 重构代码,以消除重复设计,优化设计结构 简单来说,就是不可运行/可运行/重构——这正是测试驱动开发的口号。
重构
重构是指改变代码的结构,而不是代码的行为。比如,假设一个程序员有两个方法,每个都包含三行相同的代码,那么这三行相同的代码可以从原来的两个方法中抽取出来,放到一个新的方法中,在原来放置这三行代码的地方替换为调用这个新的方法。
重构不仅对TDD的成功至关重要,它也有助于防止代码腐烂(code rat),产品发布后,代码腐烂是典型的综合征,如果允许代码腐烂,过不了多久,系统就需要重写。通过不断地重构,并且在一些小问题变成大问题前不断地修复,我们能够保持我们的应用程序不会腐烂。
集体所有权
集体所有权是指所有的开发人员共同负责开发过程中的所有产出内容,特别是代码和自动化测试。集体所有权鼓励团队任何一个团队成员对程序的任何部分都承担责任,以便任何一个程序员可以在任何一个程序模块上工作。当程序员修改一个模块的时候,他要与最初写这个模块的人共同负责这模块的质量。
集体所有权并不是鼓励随意的代码开发。程序员仍然可以有他们主动关注的部分,喜欢去工作的部分,但是团队中的每个成员共同承担下列职责:
- 确保开发人员不会变得太专以至于职能在某一个方面做出贡献;
- 确保没有一个地方变得太错综复杂以至于只有一个开发人员可以明白和完成其他工作。
培养集体所有权分为的一个天然好处在于鼓励开发人员学习系统中的新东西,这样一来,他们一般也会学习新的做事方式,在应用程序某个部分用到的一些好的想法可以很快传播到系统的其他部分。
持续集成
持续集成是指尽可能快地将新开发和修改过的代码集成到一个应用程序中,然后测试这个应用程序,确保没有任何东西被破坏,而不是可能过了几天甚至几周才提交代码。次啊用持续集成的Scrum团队中的任何一个程序员,要求他每天递交几次代码,并且运行一个覆盖整个应用程序的回归测试套件。
持续集成通常借助于一个工具或脚本来实现,这些工具或脚本会注意到有代码检入版本控制系统。
结对编程
结对编程是指两个开发人员一起写代码。两个程序员结对一起编程,可应对偶尔代码检查,一起学习如何做测试驱动开发更容易,更容易创造出集体所有权的感觉,另外,有一个开发人员坐在你旁边的时候,更容易遵循“让代码在你离开时比你修改它之前更干净这个纪律。”
鲸舟——数智化精益敏捷研发管理工具平台。
适合互联网创业团队的敏捷研发管理平台,现在注册使用,30人以下团队,永久免费。
可爱的你记得点个赞再走哦!!