"there are more advanced techniques" Joe Armstrong 提到了什么用于单元测试

What did Joe Armstrong refer to by "there are more advanced techniques" for unit testing

Joe Armstrong 所说的“您根本不应该编写测试用例,您可以使用比愚蠢的旧测试用例更先进的技术”指的是什么?

那些更高级的技术是什么?

来源:A Guide for the Perplexed

此外,他甚至建议不要重用代码,而是重写代码。这违背了我学校教给我的一切。所以我想知道这个声明背后的原因是什么。

对于测试用例:做函数式编程的人有一种轻视单元测试的倾向。 Rich Hickey 引用了一句名言,他将使用单元测试比作一辆依靠弹开警卫 rails 才能继续行驶的汽车。他说得有道理,面向对象的企业级代码是如此复杂和混乱,这正是我们所做的。理论是,如果你正确地执行 FP,你应该主要编写小的纯函数,它们的作用是不言而喻的。在这种情况下,单元测试级别的测试不会增加太多。

(我不能肯定地说,但我不知道有什么可以让我认为阿姆斯特朗特别注重证明程序的正确性。Erlang 没有 compile-time 类型检查,这在我看来,这会使证明正确性变得更加困难。)

对于 rewrite-not-reuse,我认为这个想法是,价值不在软件中,而在您的理解中。如果你重复使用很多,你可能会发现自己在拼凑碎片,每一个碎片都是你第一次尝试弄清楚一些东西。每当我们第一次构建某些东西时,我们都不知道自己在做什么,如果幸运的话,它可能大部分都能工作,但它几乎是垃圾。重写提供了建立联系和学习的机会,最好以新的眼光重新审视问题,并有机会创造出更干净、更好的东西。