1

我现在正在查看一个同时具有单元测试和集成测试(使用 BDD)的项目。

集成测试为每个测试使用一个值文件。(鉴于数据集的排列几乎是无限的。)我试图弄清楚这是否可行以及为什么。(我对“测试”很陌生。)

我是否正确地说这些集成测试旨在测试数据是否正确流经组件,所以只有一组值可以吗?

并且应该在单元测试中测试数据的“排列”?所以我们知道各个单元可以处理不同的数据。

还是我完全错过了一个技巧?

4

2 回答 2

0

实际上,只测试一组数据是非常少的。可能这只是良好天气行为的一种情况。

我还建议添加恶劣天气行为。

关于排列:这很容易失控。因此,谷歌关于 MC/DC 覆盖:修改条件决策覆盖。它减少了所有可能性的最大数量,同时在该角度上仍然具有相同的覆盖范围。

于 2013-10-03T10:42:28.340 回答
0

在 BDD 中集成测试有两个目的:

  • 您编写集成测试以测试应用程序行为的主要领域(强制您实施以使测试通过)。集成测试是一种规范,是开发人员与利益相关者之间以及开发人员与未来开发人员之间的一种沟通方式。

  • 其次,集成测试如您所说:它们测试单元测试组件之间的每个交互是否正确。

如果您开发测试优先,您通常会发现测试驱动会激发您需要的所有集成测试,但如果您在测试之前编写一些代码,您可能需要返回并编写更多集成测试,以便您有足够的集成覆盖率。在这种情况下,您应该尝试对您编写该代码的业务原因进行逆向工程,并将其表达在一个显示对业务价值的集成测试中。

对于给定的集成测试,“一组值”是否足够取决于每组可能值的业务含义。例如,如果您正在处理检查,您可能需要三个集成测试:

  • 支票金额少于可用资金且付款成功的支票
  • 支票金额超过可用资金且账户透支的一种
  • 支票在某种程度上无效并且存在错误。

您将使用单元测试来驱动这些场景中的微小变化,例如不同的错误场景(支票金额为零的情况,难以辨认的情况,以及不是来自右银行的情况),所有这些都会导致显示屏幕上的错误。

PS:“集成测试”在不同的上下文中意味着不同的东西,但我使用了你的术语。我想“集成测试”是指类似于 Cucumber 场景的东西,强调它是一个规范,而不是测试如何工作的技术细节。

于 2013-10-03T12:59:03.630 回答