停止疯狂的代码测试

2021-04-22 23:21:52

我不是偏执狂单元测试的粉丝是没有秘密的。有些例子在那里人们在其测试中有更多的代码,而不是实际代码库。您可能认为单元测试有助于您避免技术问题,但事实是单元测试更加了解获得心理效果而不是技术人员,而是让您对自己感觉更好的方式 - 是的,我说它。

我不是反对测试,我在开发过程中剧烈地测试了自己,但我主要更喜欢手动测试。在开发过程中,每次进行次要更改时都会测试每个功能。我使用的方法是严格使用插入的断裂,在运行时在特定位置停止应用程序,然后检查值和数据是否正确。与此同时,您尝试打破软件,请做'重申不应该做的事情。在开发期间发现错误是一种非常有效的方法,因为它不仅很快成为开发过程的自然部分,而且与软件旨在工作的方式也是更好的。如果您养成了错误的数据习惯,它特别有用。这是一种需要耐心和经验的方法,但它非常有效。否,它'没有更多的时间耗时的写作测试,它和#39;是开发过程的更直接和自然的部分。

单元测试,以及在代码中编写的其他形式的测试,也有助于,特别是与旧软件相关的软件,这已经运行了多年并且完美的工作,但您现在突然需要添加可能影响系统其他部分的东西,你几乎不记得任何关于什么是什么和原因。

我还可以实施自动化测试和自动化监控,尤其是在系统的关键部分上,但只有在真正有意义时,而不是作为石头雕刻的规则。

但是,与面向对象的范式一样,行业已经变得疯狂了。这真的真的是令人厌倦的这一切"最好的练习"继续被带到极端。我目睹了代码测试问题如何使有些人感到优越,以及如果他们没有求追求某人,那么它是如何习惯的。

当然,你的代码已经拥有全面的测试覆盖,所以我不需要告诉你x是一个坏主意!??

这是来自某人(不是命名的任何名字)的引用,他已经使他的使命成为生活使命,以确保其他人都知道他的测试实践有多酷。

在我谦虚的意见中,以及所有尊重,它' s边界愚蠢现在正在测试多少重量。这么多,以至于它实际上可以具有相反的效果。而不是专注于软件应该解决的问题,而且人们花费更多时间开发测试并将代码转到。

除非你和#39;重新开发任务关键软件,'更好地专注于节目和解决问题。然后早期释放并经常释放。不要担心软件失败,无论你做什么,都会担心软件失败。提前计划。当它发生时,有一个坚实的战略,你如何处理失败。

当您在开发测试软件和设计模式和最佳实践中,您的热情丢失了,并且您失去了珍贵的能量,这可能已经花费了创造性地提出了更好,更有效的方式来处理您&#的问题。 39;面对。

当你'重新"在区域"你几乎无法停止思考方式来提高东西,找到新的和更好的方式来做事情。你可能会在淋浴或散步,突然间你得到一个明亮的主意,几乎不能等待尝试。当你的90%的时间担心写作测试时,所有这些都被陷入死亡,满足设计模式的需求和"最好的练习"狂热。

如果你这样做,你永远不应该瞄准100%的测试覆盖范围,然后你'重新做错了!该软件的主要部分显然是正确的,并且绝对不需要测试覆盖,不要浪费您的时间。专注于复杂的软件的部件,然后在开始写入任何测试之前,请考虑是否有您可以简化复杂性的方法。也许您可以将代码划分为更小的部分,也许您可​​以将责任委托给其他功能。单元测试可以帮助一些人在这里,因为如果写一个测试是非常困难的,也许软件太复杂了。但是,软件的某些部分需要复杂,您根本无法避免它!没有多少测试会对你有好处!不是一切都可以或应该被分解为少年的小块。甚至让我开始在TDD成为计划设计的动力。

您真正觉得不安全的代码的部分不是需要最佳测试覆盖的代码,它'是需要重构的代码的一部分。

在任何情况下,如果你'重新编写任何代码测试,不要对自己感到难过。写入代码测试的值高度夸大。

更新2021-04-01:我只是想评论一些电子邮件和评论,我得到了这篇文章。

我一直在业界34年(撰写本文),我不是在谈论你只在短时间工作的玩具软件或软件。

我已经开发了巨大的应用程序以及次要的应用程序,既与单一开发商合作,也与他人合作。我有一个在客户端运行的软件超过13年,拥有巨大的客户群和吨日常活动,仍然做得很好。

我的经验很早就出现了,这与Linux内核的开发模型非常恰好。

不关注模式或"最好的练习"在石头上雕刻,你实际上能够专注于软件应该解决的问题。这并不意味着你不应该在乎,或者建立其他开发商将考虑噩梦来处理的废话,但你需要实用。这是基于务实的经验,而不是别人(主要是大多数人,或实际上是由于某种原因的大多数)都大声喊叫。

无论大多数人在做什么,无论人们似乎是疯狂的,通常是错误的做事方式。我相信这是因为倾向于成为宗教对这些事情的人往往非常不安全和情感,只要他们看到有人反对当前,他们会害怕,因为这危及了自己在生活中的立场。他们站在他们站立的地方,而不是因为他们自己一直在想他们所做的东西,但只是因为他们是" sheeplings"