【问题标题】:functional integration testing功能集成测试
【发布时间】:2011-04-09 21:56:57
【问题描述】:

软件测试是否按以下顺序进行?

  1. 单元测试
  2. 集成测试
  3. 功能测试

我想确认是否在集成测试之后进行功能测试。

感谢

【问题讨论】:

  • 这是“应该怎么做”还是“实际怎么做”?因为我知道有太多人在公司工作,他们只在发现错误后才进行单元测试。
  • 两者...“应该如何完成”和“它实际上是如何完成的”?

标签: testing integration functional-programming


【解决方案1】:

这是一个合乎逻辑的顺序,是的。通常紧随其后的是用户验收测试,然后在适当的情况下在发布前进行任何形式的公开 alpha/beta 测试。

【讨论】:

    【解决方案2】:

    在 TDD 编码环境中,这些测试通过的顺序通常遵循您的顺序;但是,它们通常以相反的顺序编写。

    当团队获得一组需求时,他们应该做的第一件事就是将这些需求转化为一个或多个自动化验收测试,以证明系统满足定义的所有功能需求。当这个测试通过时,你就完成了(如果你写得正确的话)。测试,当第一次编写时,显然不应该通过。如果它引用了您尚未定义的新对象类型,它甚至可能无法编译。

    编写完测试后,团队通常可以看到需要什么才能使其通过高级别,并按照这些思路分解开发。在此过程中,编写了集成测试(测试对象之间的交互)和单元测试(测试与其他代码几乎完全隔离的小型、原子功能块)。使用 ReSharper 等重构工具,这些测试的代码可用于创建对象,甚至是被测试功能的逻辑。如果您正在测试 A+B 的输出是 C,则断言 A+B == C,然后从测试夹具中的该逻辑中提取一个方法,然后提取一个包含该方法的类。您现在有了一个对象,该对象带有一个您可以调用的方法,该方法会产生正确的答案。

    在此过程中,您还测试了需求:如果需求断言给定 A 和 B 的答案必须是 1+2==5 的逻辑等价物,那么需求存在不一致,表明需要进一步澄清(即有人忘记提到 D=2 应该在 A+B == C 之前添加到 B)或技术上的不可能性(即计算需要一天中有 25 小时或一个字节中有 9 位)。在任何开发开始之前,您可能无法毫无疑问地保证您已经从需求中消除了所有这些不一致(并且通常被敏捷方法认为是不可行的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 2020-09-25
      • 2021-04-06
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多