我遇到类似的问题来到像这样的: Test driven development for signal processing libraries信号处理单元测试?
问题背后的事实是,信号处理的输出是很难完全和定性定义。
所以注入输入>运行程序>验证输出方法并不适用于信号处理。
满足规范中的性能要求是否意味着没有错误? 当然不是。那么如果它符合要求,为什么要麻烦?因为缺陷会咬人,有一天他们会。
最终,唯一可行的解决办法是比较已知良好等效的输出,通常是MATLAB版本或一些广泛使用的库。
Matlab有一个很好的库集合,它具有边界检查,内存管理和双精度,因此与matlab代码相比,暴露了指针超出边界,堆栈溢出以及评估整数精度的充分性,但它不回答这样的问题,如“如果matlab相当于做了什么错误呢?”
我只能对自己说:尝试编写matlab相当简单,所以它接近“这么简单显然没有错误”
在我的球队,我有程序员在各种技能水平的,我至少需要某种措施来控制/强制执行代码的质量。
自从上一篇文章已经两年多了。我在这方面有一些新的发展。
请作为从业者分享您的想法和观点。
感谢您的意见。进一步的问题:使用规范作为断言是否是好的做法?例如,使用带宽,中心频率和阻带衰减作为滤波器单元测试的断言?除了单元测试之外,这应该是性能测试还是验收测试?单元测试应该只针对实现中的错误,而不是旨在发现算法中的缺陷?或者算法本身被认为是实现的一部分,因此定义其外部行为的规范自然会形成一套很好的测试断言? – user3528438
当然!规格是规格,你应该明确地测试它们。 –