我应该为每个功能编写多少个集成测试(或场景)?

时间:2013-10-03 10:11:45

标签: unit-testing integration-testing bdd acceptance-testing

我正在研究一个既有单元测试又有集成测试的项目(使用BDD)。

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

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

应该在单元测试中测试数据的“排列”吗?因此,我们知道各个单位可以处理不同的数据。

或者我完全错过了一招?

2 个答案:

答案 0 :(得分:0)

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

我建议加上恶劣的天气行为。

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

答案 1 :(得分:0)

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

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

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

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

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

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

您可以使用单元测试来推动这些情景中的微小变化,例如:不同的错误情况(一个是支票上的金额为零,一个是难以识别的,另一个不是来自右岸)这些都会导致屏幕显示错误。

P.S。:“集成测试”在不同的环境中意味着不同的东西,但我选择了你的术语。我认为通过“集成测试”,你的意思是类似黄瓜场景,强调它是一个规范,而不是关于测试如何工作的技术细节。