在过去几年中,一种创建软件的新方式已经风靡软件开发和测试世界:敏捷。
事实上,根据VersionOne的敏捷状态报告,截至2018年,97%的组织以某种形式实践敏捷。 然而,受访者表示,这种采用在其组织中并不总是很普遍,这意味着在采用和成熟方面还有很长的路要走。
那么究竟什么是敏捷的,为什么它如此迅速地变得如此受欢迎? 让我们更详细地探索敏捷方法所涉及的内容以及如何在组织中引入它。 具体来说,我们将涵盖:
- 测试如何适应敏捷方法?
- 在敏捷团队上测试的不同方法有哪些?
- 敏捷运动的下一步是什么?
关于敏捷方法论
敏捷方法已经风靡软件开发世界并迅速巩固其作为“黄金标准”的地位。敏捷方法论都是基于敏捷宣言中概述的四个核心原则开始的。这些方法植根于适应性规划,早期交付和持续改进,所有这些都着眼于能够快速,轻松地响应变化。因此,在VersionOne的2017年敏捷状态报告中,88%的受访者认为“适应变化的能力”是拥抱敏捷的头号优势,这一点也就不足为奇了。
然而,随着越来越多的开发团队采用敏捷理念,测试人员一直在努力跟上步伐。这是因为敏捷的广泛采用促使团队更频繁地发布版本和完全无证的软件。这种频率迫使测试人员在进行测试时,他们如何与开发人员和BA一起工作,甚至他们进行的测试,同时保持质量标准。
对敏捷团队进行测试意味着什么?
敏捷原则都是关于协作,灵活和适应性的。它建立在现在世界变化的前提下,这意味着软件团队不再需要多年才能将新产品推向市场。在那段时间内,竞争对手的产品或客户期望可能会发生变化,而团队的风险则无关紧要。敏捷通过适应团队成功所需的内容,帮助团队更多地协作,从而最大限度地降低风险。它通过鼓励团队定期展示他们的工作并收集反馈以便他们能够快速适应变化来实现这一目标。
快速启动您的敏捷协作:阅读我们的文章“开发人员和测试人员之间保持一致的秘密”。
缩小测试范围,敏捷开发的快节奏为测试人员带来了几个必要条件:
- 根据风险确定需求的优先级,因为无法测试所有内容
- 自动化测试以提高效率
- 增加探索性测试的使用,以加快从代码交付到测试完成的时间,并强调创建有效代码的必要性
- 适应从冲刺到冲刺的变化
第四个必要条件 - 适应性 - 特别重要,因为它要求测试人员具有更广泛的跨功能测试技能,这代表了与瀑布环境中经常需要的较窄测试技能的背离。此外,与瀑布环境不同,遵循敏捷方法的测试人员需要与开发人员保持密切联系,以便在整个软件开发生命周期中协作进行测试。在瀑布式方法中,通常会有一个大型的需求文档供测试人员测试。该文档不会经常更改,因此测试人员可以相当独立于开发人员而存在。但是,大多数敏捷方法对文档都很清楚,新功能的要求可能只在需求跟踪系统中的票证中,而没有列出所有边缘情况。这些场景中的测试人员需要与开发和业务团队进行高度沟通,因为几周前他们编写的测试可能很快就会过时。为了取得成功,测试人员需要灵活并能够适应移动目标。
为了取得成功,测试人员需要灵活并能够适应移动目标。
一般而言,敏捷宣言有四个核心原则,对于测试人员来说很重要:
- 个人和流程与工具之间的互动
- 通过综合文档工作软件
- 响应遵循计划的变更
- 通过合同谈判与客户合作
所有这一切的底线是,每个人 - 测试人员,开发人员和其他人 - 必须发展才能拥抱敏捷的工作方式。
敏捷不是放之四海而皆准的
每个组织都是独一无二的,面临着不同的内部因素(即组织规模和利益相关者)和外部因素(即客户和法规)。 为了帮助满足不同组织的不同需求,您可以在其中一种敏捷方法中使用各种敏捷方法和几种不同类型的测试。 哪种组合适合您的团队取决于您的内部和外部因素,需求和目标。 让我们来看看一些最流行的敏捷方法和测试方法,包括:
敏捷方法论
- Scrum
- 看板
测试方法
- 行为驱动开发(BDD)
- 验收测试驱动开发(ATDD)
- 探索性测试
- 基于会话的测试
2敏捷方法论类型
1)Scrum
它是什么?作为最受欢迎的软件测试方法之一(58%的组织已根据VersionOne采用了敏捷方法),Scrum采用高度迭代的方法,专注于在每个sprint之前定义关键特性和目标。它旨在降低风险,同时快速提供价值。
Scrum从一个需求或用户故事开始,概述了功能应该如何执行和测试。然后,该团队通过一系列冲刺循环,以快速提供小规模的价值爆发。为了帮助团队以这种灵活的方式工作并避免改变优先级,Scrum要求从一开始就回答问题。
它和瀑布有什么不同?瀑布包括在发布产品之前的几个测试和错误修复周期,而Scrum更具协作性和迭代性。其中一个最大的区别是瀑布早期需要大量文档。这个文档使得在过程继续进行时更改功能变得更加困难,这在某些环境(例如消费级软件)中可能是负面的,而在其他环境中则是积极的(例如团队试图发射火箭的那些)没有人想要经常危险移动的要求)。也就是说,您可能会认为Scrum就像许多“迷你瀑布”一样,因为每个冲刺开始时需求都很明确,不应该在其中移动。不同之处在于,下一个冲刺的详细要求不是提前几个月设定的。
潜水更深入,Scrum要求测试人员,开发人员和BA之间进行更多定期协作,通常采用每日站立和冲刺回顾的形式,以确保正确的沟通和协调。此外,还有一位Scrum Master通过删除团队中的阻截者来确保他们最有效,从而帮助项目完成任务。 Scrum Master可以是团队中的任何人,例如开发人员或测试人员。
采用有什么意义? Scrum为来自瀑布环境的团队提供了最简单的转换之一,因为它基于时间的冲刺和发布仍然可以提前计划。也就是说,它确实需要更快的迭代和更强的协作。
它是谁的?由于其快速迭代,Scrum最适合那些客户和利益相关者希望通过在展示会议上定期查看工作产品而积极参与的团队。此协作允许团队对即将到来的陈列柜进行更改。在采用Scrum方法时应该参与的主要团队成员包括:
- 产品拥有者
- Scrum Master
- 开发商
- 自动化工程师
- 测试者
- 利益相关者
什么是最佳做法?除了强大的沟通,协作和适应性之外,遵循Scrum方法的测试人员的其他最佳实践还包括:
- 根据销售代表或客户的通信(通常以用户故事的形式)确定验收标准(注意:此直接连接应有助于减少误传)
- 使用验收标准开发代码并确保团队批准该代码
- 在将其部署到生产环境之前,在类似沙箱的环境以及类似生产的环境中测试代码
2)看板
它是什么?看板是一种非常简单的基于敏捷的方法,植根于制造业(它由丰田公司开发,旨在帮助提高工厂的生产率)。在它的核心,看板可以被认为是一个大的,优先的待办事项列表。与Scrum一样,看板中的需求由其当前阶段(待办,开发,测试,完成)跟踪。
与Scrum不同,看板不是基于时间的。相反,它完全基于优先权。当开发人员准备好完成下一个任务时,他/她将其从待办事项列表中拉出来。由于计划会议较少,这种方法意味着团队需要非常接近。在这种类型的环境中,如果开发人员的工作速度比测试人员快得多,那么就会出现瓶颈。在这些情况下,团队中的任何人都应该跳进并帮助不同的领域。当然,满足这种需求需要很大的灵活性和适应性。
它和瀑布有什么不同?看板仍然有像瀑布这样的要求,但是由于测试团队没有开始考虑测试每个要求,直到开发人员从积压的顶部选择它,因此需求可能会发生变化。相比之下,瀑布是基于时间的,在计划中有很多开销。在某些情况下,在瀑布环境中进行繁重的规划是很好的,例如在建造昂贵的东西时,但并不总是必要的。使用看板,版本仍然有计划,但团队通常不会在某些日期向任何人提供功能,除非相关项目位于待办事项的顶部。
采用有什么意义?看板为正确的团队提供简单的过渡。为了顺利过渡到看板,业务分析师,开发人员,测试人员和利益相关者应该坐在一起并定期沟通。转换到看板时,重要的是要记住这种方法提供了将代码投入生产的最快方法,但代码可能会有一些技术债务。这是因为开发时并不总是知道接下来的内容并不一定能够生成最可重用的代码。
它是谁的?看板最适合不为公众制作功能和/或承诺发布某些日期的小型团队或团队。此外,它是主要专注于维护工作的任何产品或团队的首选方法选择,因为错误并不总是直截了当,往往需要研究解决,这使得时间管理具有挑战性。根据Scrum或Waterfall方法,不能最小化问题规划量的团队可能会更好。
应参与看板环境的主要团队成员包括:
- 产品拥有者
- 专案经理
- 开发商
- 自动化工程师
- 测试者
什么是最佳做法?除了保持可见性和优先协作之外,遵循看板方法的测试人员的最佳实践还包括:
- 在业务所有者,开发人员和测试人员之间保持非常开放的沟通渠道
- 确保团队可以灵活地承担其核心职责之外的其他角色,以帮助消除瓶颈
- 让每个人都成为产品的所有者,以便他们完全关注结果
4敏捷测试方法
1)行为驱动开发(BDD)
它是什么?很多人都听说过或使用过测试驱动开发(TDD)。例如,开发人员在编写代码之前使用TDD编写单元测试失败。 BDD基于与TDD相同的原则,但它不是单元测试,而是要求在业务级别进行更高级别的测试。 BDD不是像TDD那样从面向技术的单元测试开始,而是从基于最终用户行为的初始需求开始,并且需要“人类可读”的测试,甚至可以替换一些需求文档。此要求基于产品应展示的行为,为工程师在开发测试时使用创建气密指南。
有关更多信息,请阅读我们的文章:“为什么BDD是DevOps中的测试秘诀。”
具体来说,BDD使用Gherkin Given / When / Then语法从功能规范开始。然后,该规范指导跨功能的开发人员,测试人员和产品所有者。正如他们所做的那样,他们使用自动化测试功能来确定完整性,改进代码直到通过测试,就像TDD方法一样,除了团队级别。为了确保测试通过(并且通常需要多次尝试),开发人员应该只重构代码,而不是添加任何新功能。
总而言之,BDD需要一种“智能”自动化策略,以提高效率。该策略将BDD与其他敏捷方法区分开来。
它与标准瀑布测试有何不同? BDD与标准的瀑布测试极为不同,因为前者要求在需求的早期编写测试用例,并要求在开发周期结束时执行这些测试。但是,在敏捷环境中使用BDD,测试不是基于需求,测试是在功能开发的情况下进行的。
此外,在Waterfall方法中,测试人员是编写测试用例的人。另一方面,BDD方法适用于编写测试的企业主。此开关可减少业务分析人员,开发人员和测试人员之间的通信(或沟通错误)。
采用有什么意义?当团队习惯于传统的测试方式时,更改为BDD方法可能具有挑战性。它需要BA或测试人员预先编写测试,并且开发人员要在代码中编写测试规范以进行匹配。这是团队内部的一种新型协调方式,但非常积极的是团队合作为一个单元,包括业务用户。