根据维基百科,以下是 TDD 中的步骤:
第一步:编写单元测试
第二步:运行单元测试
第三步:编写模块代码
第 4 步:再次运行所有测试
第五步:清理代码
第6步:重复步骤
问题1:在TDD中我们主要写单元测试。集成测试和系统测试在上述步骤中的位置是什么?
考虑以下示例:
假设我们有一个必须开发的功能。然后根据 TDD,我们将在短期迭代中开发此功能。假设我们将此功能分为 2 个模块 - 模块 1 和模块 2。我正在编写迭代步骤,以根据上述给定步骤在 TDD 中开发这些模块。(问题2)请在以下步骤中纠正我的错误:
**迭代 1:**
第 1 步:我们为模块 1 编写单元测试。
第 2 步:为模块 1 运行此单元测试(此测试将失败)
第 3 步:为模块 1 开发代码。
第 4 步:再次为模块 1 运行单元测试(此测试将通过)
**迭代 2:**
第 1 步:为模块 2 编写单元测试
第 2 步:为模块 2 运行单元测试
第 3 步:为模块 2 编写代码
第 4 步:运行模块 1 的单元测试和模块 2 的单元测试。(问题 3:在此步骤中,为什么我们在模块 2 处于测试状态时运行模块 1 的单元测试?如果你说这样做是因为要测试模块 2 是否不会破坏模块 1 的功能,那么我的问题是,这里我们只测试模块 2。它还没有与模块 1 集成,那么它将如何破坏模块 1?)
**第 3 次迭代:**
第 1 步:创建集成测试(我在这里吗?)
第 2 步:运行集成测试(它们将失败,因为模块 1 和模块 2 尚未集成)
第 3 步:集成模块 1 和模块 2
第 4 步:运行所有测试(模块 1、模块 2 和集成测试的单元测试)
(问题 4:为什么在这一步我们要运行模块 1 和 2 的单元测试?)
迭代 4(当所有模块都集成时):
步骤 1:创建系统测试
第 2 步:运行系统测试(它们会失败)
第3步:(问题5:)我应该在这里写什么代码,因为系统测试我们不写任何代码,根据TDD原则,我们先写测试,然后再写开发代码,那么我们在这里写什么代码?