如何使用TDD正确实现数值方法?
我试图使用测试驱动开发实现我的信号处理库.但我有一点怀疑:假设我正在试图实现一个正确的方法(我不是):
编写测试(伪代码) assertEqual(0,sine(0)) >写第一个实现 function sine(radians) return 0 >第二次测试 assertEqual(1,sine(pi)) 在这一点上,我应该如何 >实现可以为pi和其他值工作的智能代码,或者 如果选择第二个选项,我什么时候可以跳到第一个选项?我最终会做的…
在这一点上,我应该如何
>实现两个简单测试之外的实际代码? 都不是.我不知道你在哪里得到“一次只测试一次”的方法,但肯定是一个缓慢的方式. 关键是要写清楚的测试,并使用清晰的测试来设计你的程序. 所以,写足够的测试来实际验证一个正弦函数.两项测试显然不足. 在连续功能的情况下,您必须最终提供一个已知良好值的表.为什么要等? 然而,测试连续功能有一些问题.你不能遵循愚蠢的TDD程序. 您不能测试0和2 * pi之间的所有浮点值.您不能测试几个随机值. 在连续功能的情况下,“严格的,不可思议的TDD”不起作用.这里的问题是你知道你的正弦函数实现将基于一堆对称性.您必须根据您使用的对称性规则进行测试.虫藏在裂缝和角落里.边缘案例和角色案例是实现的一部分,如果您不能想像地遵循TDD,则无法测试. 但是,对于连续功能,您必须测试实现的边缘和角落的情况. 这并不意味着TDD被破坏或不足.它表示,如果没有想到你真正的目标是什么,那么对“测试第一”的奴隶主义就无法奏效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |