什么是单元测试数字音频生成的好技术

时间:2011-12-24 02:16:59

标签: unit-testing audio signal-processing

我想对信号发生器进行单元测试 - 假设它产生一个简单的正弦波,或者将信号频率调制到正弦波上。定义合理的测试参数很容易,众所周知输出应该“看起来像什么” - 但这很难测试。

我可以对输出进行(例如)频率分析并检查,检查最大幅度等,但a)这将使测试代码比它测试的代码复杂得多,并且b)没有完全测试输出的形状。

有没有确定的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

这样做的一种方法是捕获“已知良好”输出并逐位比较。只要您的算法是确定性的,您每次都应获得相同的输出。如果有任何变化,您可能需要偶尔重新校准它,但至少您会知道它是否确实发生了变化。

答案 1 :(得分:2)

这种情况是Matlab等建模工具的一个有力论据,可以自动生成和审查一个易于理解的测试集,并提供自动比较和评分的环境。特别是对于发生测试变化的组合爆炸的情况,自动化使其成为可能并且直接生成大量数据集,定位问题,并且如果需要,可以回到代表性资格测试集。

通常被低估的是生成大量广泛测试的方法,这些测试同时满足设计实现的要求和限制。预先考虑和设计这些案例在引入一个干净,无问题的系统方面也是一个巨大的优势。

答案 2 :(得分:0)

一种可能的半自动化测试方法是通过3种不同的算法,或者3种不同编程语言的3种不同编程器,对您的信号发生器进行编码。然后在合法控制输入值的整个范围内随机生成参数,并捕获并比较所有3个生成器的输出,以查看它们是否在某个误差范围内一致。您还可以包含一些典型的和一些可疑的更坏的案例参数。如果输出总是一致的话,那么一切都按照规范运行的概率要高得多,而不是它们。