什么是单元测试数字音频生成的好技术
Posted
技术标签:
【中文标题】什么是单元测试数字音频生成的好技术【英文标题】:What's a good technique to unit test digial audio generation 【发布时间】:2011-12-24 02:16:59 【问题描述】:我想对信号发生器进行单元测试 - 假设它生成一个简单的正弦波,或者将信号调频到正弦波上。定义合理的测试参数很容易,而且输出应该“看起来像”是众所周知的——但这很难测试。
我可以(例如)对输出进行频率分析并检查,检查最大幅度等,但是 a)这会使测试代码比它正在测试的代码复杂得多,并且 b)没有完全测试输出的形状。
是否有既定的方法来做到这一点?
【问题讨论】:
【参考方案1】:执行此操作的一种方法是捕获“已知良好”的输出并逐位与该输出进行比较。只要您的算法是确定性的,您每次都应该得到相同的输出。如果有任何变化,您可能需要偶尔重新校准它,但至少您会知道它是否确实发生了变化。
【讨论】:
为我想要测试的每个参数组合生成“已知良好”信号可能会非常痛苦 - 但是测试大量信号的(例如频率)属性,以及逐位比较几个信号可以很好地工作【参考方案2】:这种情况是 Matlab 等建模工具自动生成和审查易于理解的测试集以及为自动比较和评分提供环境的有力论据。特别是对于测试变化的组合爆炸发生的情况,自动化可以直接生成一个巨大的数据集,定位问题,并在需要时削减到具有代表性的资格测试集。
通常被低估的方法是生成大型、广泛的测试,同时满足您的设计实施的要求和限制。预先考虑和设计这些案例也是引入干净、无问题的系统的巨大优势。
【讨论】:
IEEE STD1057-1994 定义了几种良好的测试和测试方法。该方法是从您的发生器中采样一个波形,并“最适合”您的波形的理想版本到采样版本。差异将表征您的发电机的许多参数 - 不幸的是,您的数字化仪,所以要明智地使用。【参考方案3】:一种可能的半自动化测试方法是通过 3 种不同的算法或可能由 3 种不同的程序员使用 3 种不同的编程语言根据规范对信号发生器进行编码。然后在合法控制输入值的完整范围内随机生成参数,并捕获并比较所有 3 个生成器的输出,看看它们是否在某个误差范围内一致。您还可以包括一些典型的和一些可疑的更坏情况参数。如果输出总是一致的,那么一切都符合规范的可能性要高得多。
【讨论】:
以上是关于什么是单元测试数字音频生成的好技术的主要内容,如果未能解决你的问题,请参考以下文章