【问题标题】:Can Functional Tests Replace Unit Tests in small projects [closed]功能测试可以替代小型项目中的单元测试吗?
【发布时间】:2013-09-11 15:41:20
【问题描述】:

我正在开发一个新的小项目。我理解实施自动化测试以提高质量和可维护性的重要性。但是如果在小型应用程序中功能测试就足够了,我会徘徊。真的有必要为我的所有功能实施单元测试吗?功能测试不能保证小型应用程序的质量吗?

【问题讨论】:

  • 您在谈论自动化和功能测试两件事。功能测试既可以手动完成,也可以通过自动化完成。只有在有足够的投资回报率时才使用自动化。
  • 不需要测试任何东西。如果你能证明代码是正确的。或者你不关心质量。
  • 证明代码的更正在大多数情况下是非常困难和耗时的。如今,软件质量至关重要。所以唯一剩下的就是测试。没有其他解决方案可以在软件市场取得成功。

标签: unit-testing testing tdd functional-testing


【解决方案1】:

这真的取决于项目的规模和所涉及的“活动部分”的数量;但总的来说,我会说单元测试至少与功能测试一样重要。

我打算用一个简单的软件系统做一个类比,但我会告诉你一个故事,这个故事可能发生在我身上,也可能没有发生在我身上。毫无疑问,我会因为它被否决而被遗忘,我能说什么。 YOLO。

无论如何,所以我在度假,在酒店里,我想用我随身携带的非常漂亮的胡须修剪器修剪我豪华且完全不带讽刺意味的胡须。 除了设计浴室的布偶把唯一的插座放在房间的镜子对面!更糟糕的是,插座的形状不对,因为我在一些奇怪的外国他们在错误的道路上行驶的国家...

不用担心。我有一个旅行电源插座适配器。除了修剪器上的绳子只有 3 英尺长,而且不会穿过房间。可是等等!我有一根延长线,耶!现在我可以像一个真正的男人一样在镜子前打扮自己了。 **

我把所有东西都插上,然后按“开”按钮。修剪器嗡嗡作响,然后突然死去,我的脸上留下一团不平衡的绒毛。

快速:有什么问题?是吗:

  • 插座
  • 我的旅行适配器
  • 修剪器插头上的保险丝
  • 延长线
  • 修剪器
  • 我的胡须令人敬畏/可怕,导致修剪器在第一次接触时死亡?

是只做功能测试的问题。当然,通过乱搞和换掉东西,我最终会发现修剪器工作正常,而延长线是问题所在,但如果我能够检查所有涉及的零碎物品,那不是很好首先对它们进行单元测试,这样甚至在我尝试打开修剪器之前,我就知道电源线有问题?

**这个故事完全不是真的,我用剃须刀修剪胡须。是的。

【讨论】:

  • 了解单元测试的好处的好故事。我在这个项目中的问题是试图在重新设计软件以适应单元测试的成本(使用模拟框架和依赖注入框架)和不改变架构而只实现自动化功能测试之间做出选择。我们正在使用 MVC 模型和 .Net Entity 框架。我们只是将实体框架生成的模型发送给控件。没有视图模型,也没有业务对象。要使用模拟类和 DI,我们必须做很多工作。我的问题是,这些更改是否有用?
  • @miguelbgouveia - 关键问题是:应用程序会随着时间而改变吗?例如,在 6 个月的时间里,您可能需要添加一个业务层 - 然后单元测试投资将开始得到回报,因为这将推动更加模块化的设计,促进 SRP 和松散耦合,从而更容易插入新层如果需要。因此,如果改变是可能的,那么我会非常坚定地说“是”,在节省开发人员和调试时间方面会有明显的成本效益。但是,如果它不太可能很快改变,那么您可能只需要功能测试就可以逃脱
【解决方案2】:

功能测试可能小/单元不足以在足够深的层次上捕捉实现的细微差别。

虽然它们确实可能涵盖了足够多的基础,让您有足够的信心,但您仍然可能希望进行单元测试来跟踪错误防止回归并处理(有问题/罕见)极端情况

此外,我认为没有必要引入这种区别 - 功能 vs 单元 vs 集成 vs what-not-else。您需要自动化测试,仅此而已。您仍然必须实现它们,很可能对每种测试类型使用相同的工具/框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多