4

我有一个与验收测试驱动开发(ATDD)相关的问题。根据该过程,我通过验收测试(端到端测试)开始每个功能。我承诺进行这些测试,并且如预期那样失败。问题在于我应该以某种方式区分由于功能不完整而导致失败的验收测试和由于一些回归而失败的验收测试。使用ATDD组织CI过程的最佳做法是什么?持续集成和验收测试驱动开发

+0

你可以标记带属性的小黄瓜装置 - 你可能有一个不完整的测试属性(如果你使用的是基于小黄瓜的ATDD框架,如SpecFlow或黄瓜) – levelnis 2013-02-22 10:58:42

+0

没有亲身体验过它,但我在一位软件公司向我展示了他们如何开发软件。他们在Selenium中写了验收测试,他们在名字中使用sprint ID作为约定。这样他们可以很容易地看到失败的测试是新的还是旧的。你是这个意思吗? (PS:很好的问题,惊讶的是有这么少的回应) – bas 2013-02-23 20:37:41

回答

3

尚未实现的测试不应在CI中运行。 CI测试的重点是捕捉回归。捕捉“尚未完成”的问题会造成红色构建“正常”并被忽略的情况。这是可能的最糟糕的结果。

有很多方法可以做到这一点,最好的方式取决于你的上下文。最简单的方法是首先编写验收测试,但不要在验证通过之前检查它(即实现该功能)。

+0

好的答案。至于没有登记,另一种选择是检查测试,但以某种方式禁用它们。大多数X-unit测试框架都有某种方式告诉测试框架应该忽略测试。 – Petrik 2013-02-24 22:24:56

+0

不完全同意这一点。并非所有验收测试都可以在本地执行,以检查它们是否通过。生产环境需要运行它们。这并不总是可用的。此外,一些开发人员可能会在同一个故事中工作,他们都不会看到他们在故事中的进展,也就是验收测试可以显示的进展。 – Markus 2013-02-25 06:08:20

+0

如果您不能在本地运行验收测试,那是一个***严重的问题***!我会努力解决这个问题。 – tallseth 2013-02-25 15:40:45