gpt4 book ai didi

tdd - BDD 和 TDD,什么是正确的工作流程?

转载 作者:行者123 更新时间:2023-12-04 02:53:20 28 4
gpt4 key购买 nike

我的理解是这样的:

BDD 是评估软件需要如何运行,然后编写验收测试作为代码基础的过程。您将使用 TDD 方法编写代码,为方法编写单元测试并围绕单元测试(代码、测试、重构)构建类。编写代码时,您对其进行测试以查看是否满足原始验收测试。

任何有经验的人都可以对我的解释发表评论,并使用这些敏捷原则介绍一个简单的应用程序吗?我在不同的出版物中看到了大量关于 BDD 和 TDD 的文本,但我正在研究这两个过程如何在现实世界的开发中相互补充。

最佳答案

尝试将它们视为示例,而不是测试。

对于整个应用程序,我们提出了一个用户如何使用该应用程序的示例。该示例是说明该行为的特定行为实例。因此,例如,我们可以说收款应用程序允许退款。使用该收款机的收款机运算符(operator)将熟悉 Fred 带回微波炉进行退款的场景:

Given Fred bought a microwave for $100
When he brings the microwave back for a refund
Then he should get $100 refunded to his credit card.



现在也很容易想到其他场景;例如,Fred 打折后只退了 90 美元,或者 Fred 自己弄坏了微波炉,我们拒绝了他的退款,等等。

当我们真正开始编写till软件时,我们将代码分解成小块;类、函数、模块等。我们可以描述一段代码的行为,并提供一个例子。因此,例如,我们可能会说退款计算器应该考虑折扣。这只是退款场景的一小部分。我们有一个类, RefundCalculator , 以及一个带有 shouldTakeDiscountsIntoAccount 方法的单元测试.

我们可能会将示例的步骤放在注释中,例如:
// Given a microwave was sold at 10% discount for $100

...

// When we calculate the refund due

...

// Then the calculator should tell us it's $90.

...

然后我们填写代码将其变成单元测试,并编写使其通过的代码。

通常“BDD”是指描述整个应用程序的场景,但实际上是从单元级别开始的,原理是一样的。唯一的区别是一个是用户使用应用程序的示例,另一个是使用另一个类(或函数,或者你有什么)的类的示例。因此,应用程序外部的 BDD 类似于 ATDD(验收测试驱动开发),而类的 BDD 类似于 TDD。希望这有助于您了解这些概念是如何结合在一起的。

唯一的区别是我们去掉了“测试”这个词,因为我们发现向人们询问示例比测试更容易,它有助于让人们思考他们是否理解问题,而不是思考如何测试一个办法。

This answer “自上而下”(或由外而内)与“自下而上”也可能对您有所帮助。

关于tdd - BDD 和 TDD,什么是正确的工作流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22771016/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com