行为驱动开发的反模式

简介:

正如Kevin Smith最近所称,行为驱动开发(BDD)可以用来增进业务相关人员和软件开发者之间的沟通,然而在使用Cucumber运行自动化测试时,有一些常见的反模式需要避免。Aslak Helles y(Cucumber联合创建者)、Matt Wynne和Steve Tooke在最近的一次讨论中对其进行了描述。

许多Cucumber的反模式涉及场景(scenario),也就是一段在特征细节层面对业务行为的描述。一个场景通常应该使用领域语言来描述具体业务行为。具体结构是由一个初始条件开始,紧随一个触发场景的事件,最后通过一个或一些语句来表示所期望的结果。Given-When-Then结构是一种通用的模板,如:

场景:从账户成功取钱 
Given:我账户有€100 
When:我申请取€20 
Then:€20被取出

在写完代码之后写场景,这是把Cucumber当作测试工具来使用,虽然确实有这个作用,但Cucumber首先是一个用来查看你对问题领域理解程度的工具,从而在写代码前能与问题领域的专业人士一起找出潜在的误解。

由领域内专家独立创建场景,这不能代表普通的认知,也缺少了开发和测试人员的参与。没有技术人员的参与,场景也将很难达到自动化。

通过UI测试也会产生问题。用户接口(UI)往往比业务逻辑变化更频繁,从而导致测试案例经常失败。如果并没有改变场景或业务逻辑,那么重新调试这些失败的测试案例,花费的就是不必要的精力。另一方面,通过与应用的各部分交互,再进入数据存储及后端来进行测试的速度也很慢。这样测试也可能导致缺乏对领域的理解。描述UI使用的主要是各领域通用的一般语言,这会导致场景的描述不能真实反映该领域所需要表达的情况。

瑞典资深BDD专家Thomas Sundberg引用敏捷测试金字塔并主张BDD应该被应用于所有业务有理由对具体行为产生异议的地方。他倾向于着重在集成测试上使用BDD,并尽可能少地通过UI进行测试。他同时强调Cucumber主要不是一个测试工具,而是一个用于对系统工作方式产生共同理解的工具。

保留噪音场景,如查看空银行账户,这会使文档的相关部分模糊不清。虽然噪音场景的逻辑是理所当然的,但还需要在第一次运行测试时将它们覆盖到。Helles y他们的建议是一段时间后删除它们,或至少改述成更有用的场景。

过度使用场景提纲会使测试变慢。有了场景提纲,可以使用模板添加新场景,这能很方便地增加大量场景。建议使用场景提纲时避免通过UI或其他较慢的方式进行测试。

其他论及的反模式包括同时测试许多规则以及糟糕的场景命名,这些都会导致误解场景的目的。附带的细节和过于模糊的场景,它们没有实际的价值,要么引入了过多无关细节,要么过于抽象根本没有包含任何细节。

本文转自d1net(转载)

相关文章
|
7月前
|
消息中间件 架构师 安全
重新认识架构 — 不只是软件设计
通常情况下,人们对架构的认知仅限于在软件工程中的定义:架构主要指软件系统的结构设计,比如常见的 SOLID 准则、DDD 架构。一个良好的软件架构可以帮助团队更有效地进行软件开发,降低维护成本,提高系统的可扩展性和可维护性。这里的架构定义有更多元化的理解:架构不仅是对软件开发设计和流程规范的定义,也包含了参与架构设计的人员、以及项目过程中和架构有关的活动,都可以称为架构。 从广义角度来理解架构,意味着更全面的思考和新的融合。
23 0
|
Web App开发 编解码 监控
防御性设计和开发
“防御性编程(Defensive programming)是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。它可以被看作是为了减少或消除墨菲定律效力的想法。”
694 0
防御性设计和开发
|
21天前
|
敏捷开发 前端开发 数据管理
深入理解自动化测试框架设计原则
【4月更文挑战第1天】 在快速迭代的软件开发周期中,自动化测试已经成为确保软件质量和加速产品上市的关键步骤。本文将探讨自动化测试框架的设计原则,旨在帮助读者构建一个健壮、灵活且可维护的自动化测试环境。通过分析结构设计、模块划分、数据管理等核心要素,我们将讨论如何实现一个高效的自动化测试框架,并考虑其对测试覆盖率和可靠性的影响。
|
1月前
|
jenkins 测试技术 持续交付
深入理解自动化测试框架设计原则与实践
本文旨在探讨自动化测试框架的设计原则及其在实际项目中的应用。通过对自动化测试框架的系统剖析,我们揭示了有效构建和维持测试框架的核心要素,并提供了一套实用的指导方案来帮助读者实现高效、可靠的自动化测试流程。文章不仅聚焦于框架的技术细节,也强调了灵活性、可维护性和可扩展性在设计时的重要性,同时结合实际案例分析,展示了如何在不同测试环境中定制化和优化测试框架。
|
3月前
|
敏捷开发
软件设计中常用的开发模型
软件设计中常用的开发模型
|
6月前
|
程序员 开发者
|
7月前
|
消息中间件 架构师 安全
重新认识架构—不只是软件设计
结合自身经历阐述架构师定位、架构活动如何保障企业、组织实现商业价值。
重新认识架构—不只是软件设计
|
Web App开发 Windows
【hyddd驱动开发学习】DDK与WDK
最近尝试去了解WINDOWS下的驱动开发,现在总结一下最近看到的资料。   1.首先,先从基础的东西说起,开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要一个JDK,开发WINDOWS应用程序,我们需要WINDOWS的SDK,现在开发WINDOWS下的驱动程序,我们需要一个DDK/WDK。
893 0