2

经过大量阅读、学习示例和进行简单的课堂测试后,我决定使用 TDD 创建我的第一个简单的现实生活应用程序。

我的应用程序应具有以下行为:

  • 这是一个没有用户界面的控制台应用程序
  • 它将从某个 URL 下载一个 Json(代表一个数组)
  • 从此数组中提取一些数据
  • 使用第一步中的数据下载另一个 Json
  • 以指定格式将所有这些数据传递到文件中。

实际上,此应用程序从某个网站中提取了地区和城市的列表。

我能够执行重构,知道什么是低耦合等,但经过几次尝试后,我意识到我完全不知道如何使用 TDD设计整个应用程序。

使用 TDD 构建这个特定应用程序的第一步是什么?将成长为完整应用程序的基础是什么?

我正在使用 PHP,但这并不重要,因为我不需要代码示例。只是一个想法,理想情况下,如何在我的特定案例中体现这个想法。我应该实施的具体的第一个测试是什么?为什么?

我想很多人都想知道答案。非常感谢 TDD 各位!

4

1 回答 1

2

测试驱动设计从测试计划开始。测试计划的第一个部分不涉及任何代码;它只着眼于确定一个成功的解决方案是什么样的。从您的示例中:调用应用程序将创建一个文件,其中包含以下信息...

测试计划的下一个部分会更详细地查看生成的文件。您如何测试文件的内容是否格式正确且有效?你如何验证文件的内容?例如,格式良好的 XML 文件可以通过任何类型的 XML 解析器传递,而不会报告错误。可以根据模式验证有效的 XML 文件。至此,您不需要编写任何代码。创建 XML 模式,并创建格式正确的测试文件以及对模式有效的测试文件。您的测试过程只会查看结果。

下一个剪辑涉及生成输出文件。您的第一段代码由一些测试工具(用于输入测试数据)和文件生成器组成。您现在可以添加一些正确性测试。例如,创建示例输出文件并将被测文件与示例进行比较。diff并且cmp是您的朋友,但如果 XML 格式妨碍您,您可能需要有点创意。

继续在输入链上向后移动。创建与上一步中的测试数据对应的 JSON 文件。使用适当的现成工具验证 JSON 文件的格式正确和有效性。同样,使用您的测试工具将 JSON 文件与所需数据匹配到所需的输出文件。您在此处创建/部署的代码是 JSON 解析器。

下一阶段的类似步骤。首先使用curlwget获取 JSON 文件并将其提供给您的测试工具。同样不需要任何代码,只需要一个命令管道。您将不得不手动构建正确性测试的示例,但格式正确和有效性测试保持不变。

最后,您的应用程序嵌入了curl功能,并且您已经进行了端到端测试。

于 2013-05-11T15:49:19.133 回答