我正在开发一个新的小项目。我理解实施自动化测试以提高质量和可维护性的重要性。但是如果在小型应用程序中功能测试就足够了,我会徘徊。真的有必要为我的所有功能实施单元测试吗?功能测试不能保证小型应用程序的质量吗?
2 回答
这实际上取决于项目的规模和所涉及的“活动部分”的数量;但总的来说,我会说单元测试至少与功能测试一样重要,如果不是更重要的话。
我打算对一个简单的软件系统进行类比,但我会告诉你一个可能真的发生在我身上的故事,也可能没有发生在我身上。毫无疑问,我会因为它被否决而被遗忘,我能说什么。尤洛。
无论如何,所以我在度假,在酒店里,我想用我随身携带的一把非常漂亮的胡须修剪器修剪我豪华且完全不具讽刺意味的胡须。 除了设计浴室的布偶把房间对面唯一的插座放在镜子上!更糟糕的是,插座的形状是错误的,因为我在一个奇怪的外国,他们在错误的道路上开车......
不用担心。我有一个旅行电源插座适配器。除了修剪器上的绳子只有 3 英尺长,而且不会穿过房间。可是等等!我有一根延长线,耶!现在我可以像真正的男人一样在镜子前打扮自己了。**
我把所有东西都插上,然后按“开”按钮。修剪器嗡嗡作响,然后突然死去,在我脸上留下一团不平衡的绒毛。
快:有什么问题?是吗:
- 插座
- 我的旅行适配器
- 修剪器插头上的保险丝
- 延长线
- 修剪器
- 我胡须的威严/可怕导致修剪器在第一次接触时死亡?
这是仅进行功能测试的问题。当然,通过乱搞和换掉东西,我最终会发现修剪器工作正常,而延长线是问题所在,但如果我能够检查所有涉及的零碎物品,那不是很好首先通过对它们进行单元测试来操作,所以即使在我尝试打开修剪器之前,我就知道电源线很狡猾?
**这个故事完全不是真的,我用剃须刀修剪胡须。地狱是的。
功能测试可能不够小/不够单元,无法在足够深的层次上捕捉实现的细微差别。
虽然它们确实可能涵盖了足够的基础,让您有足够的信心,但您仍然可能希望进行单元测试来跟踪错误、防止回归和处理(有问题的/罕见的)边缘情况。
此外,我认为没有必要引入这种区别 - 功能 vs 单元 vs 集成 vs what-not-else。你想要自动化测试,仅此而已。您仍然必须实现它们,很可能对每种测试类型使用相同的工具/框架。