Python &引用;“零迭代”简单接触形式特征中的端到端验收测试

Python &引用;“零迭代”简单接触形式特征中的端到端验收测试,python,django,unit-testing,tdd,bdd,Python,Django,Unit Testing,Tdd,Bdd,最近我在读“由测试引导的不断增长的面向对象软件”。 本书的作者建议总是在开始TDD周期之前(在开始TDD周期之前)通过端到端验收测试开始开发特性,以避免失去进度跟踪,并确保在单元测试时您仍然处于同一页面上 好的,我已经开始用python+django编写一个非常简单的应用程序来尝试这种方法。我希望用户能够通过联系方式提出问题,然后问题应存储在数据库中,完成后应发送一个信号通知邮件发送人,邮件发送人将发送后续消息 问题是-在这种情况下,您将如何进行第一个端到端测试?你有没有在第一次测试中包含所有的

最近我在读“由测试引导的不断增长的面向对象软件”。 本书的作者建议总是在开始TDD周期之前(在开始TDD周期之前)通过端到端验收测试开始开发特性,以避免失去进度跟踪,并确保在单元测试时您仍然处于同一页面上

好的,我已经开始用python+django编写一个非常简单的应用程序来尝试这种方法。我希望用户能够通过联系方式提出问题,然后问题应存储在数据库中,完成后应发送一个信号通知邮件发送人,邮件发送人将发送后续消息

问题是-在这种情况下,您将如何进行第一个端到端测试?你有没有在第一次测试中包含所有的可能性,或者我误解了整个技术


任何例子都是最受欢迎的。

这个用例会导致几个测试用例(每个测试都有一个专用的可能执行路径)

当编写测试时,关注一个可能的结果,一段时间后测试套件会增长。然后,第一个测试还为您提供了一个安全网,作为回归测试,它不会破坏您已经成功实现的任何东西

我的第一个测试是:

  • 快乐路径第一部分前端表单+控制器层:用户传递正确的数据,控制器获取表单并登录到控制台/标准输出
  • 快乐路径第二部分:不再登录到标准输出,而是将内容存储到数据库中
  • 快乐路径第三部分:用户发送和接收后续邮件
  • 验证错误处理(用户填写表单不正确,例如遗漏必填字段、错误的电子邮件模式)
填写其余的;)取决于更详细的要求


请记住,要尽可能简单地实现上述内容。当所有的测试都准备就绪时,进行无情的重构,使“内部质量”变得更好。

验收测试中根本不需要包含所有的可能性,您仍然可以编写单元测试。所以我想说,一个单一的测试“用户可以填写表单,保存表单并重新加载”就足够了。然后,如果您认为系统的某个特定方面非常重要,需要进行验收测试,则可以添加更多测试。不要担心在这里处理所有的可能性,您仍然会编写大量的单元测试,在这里您将测试所有的东西


最简单的开始方法是与代码并行地增加验收测试:因此,开始测试用户可以输入数据,实施它直到它停止失败,然后将用户必须加载此数据等条件添加到测试中。实施验收测试的初始基础设施需要一段时间,在您开始编写生产代码之前,但无论如何您都无法摆脱它,提前进行测试有很多好处。

这不是我想要的。你给了我一个可能的单元测试列表——这很简单。我询问了第一个验收测试,比如BDD,它应该只涵盖给定特性的端到端。它将被进一步用于跟踪你的进度等。这就是为什么这个问题有点棘手的原因。我不知道你是否读过我提到的那本书?对不起,我没有读过这本书,但大致知道它的内容。上面的imho不是单元测试,而是端到端测试(填写、发送到服务器、接收邮件)。在这些测试中,我会在内部编写单元测试。我还将以增量方式设计端到端测试,以更好地集中精力?