我想对一个信号生成器进行单元测试-假设它生成一个简单的正弦波,或者将一个信号调制成一个正弦波。定义合理的测试参数很容易,而且输出应该是什么样子也是众所周知的--但这很难测试。
我可以(例如)对输出进行频率分析,并检查最大振幅等,但a)这会使测试代码比正在测试的代码复杂得多,b)不能完全测试输出的形状。
有没有一种既定的方法来做到这一点?
发布于 2011-12-24 10:21:34
要做到这一点,一种方法是捕获“已知良好”的输出,并与之进行逐位比较。只要你的算法是确定性的,你每次都应该得到相同的输出。如果有任何变化,您可能需要偶尔重新校准它,但至少您将知道它是否确实发生了变化。
发布于 2012-02-29 02:43:15
对于像Matlab这样的建模工具来说,这种情况是一个强有力的论据,它可以自动生成和审查一个很好理解的测试集,并提供一个自动比较和评分的环境。特别是在测试变量组合爆炸的情况下,自动化可以直接生成巨大的数据集,定位问题,并在需要时削减到典型的资格测试集。
经常被低估的是生成一个大型的、广泛的测试的方法,它同时测试了您的设计实现的需求和限制。提前考虑和设计这些案例对于引入一个干净、无问题的系统也是一个巨大的优势。
发布于 2011-12-24 11:53:06
一种可能的半自动测试方法是通过3种不同的算法,或者由3种不同的编程语言的3种不同的程序员来编写spec中的信号发生器。然后在合法控制输入值的完整范围内随机生成参数,并捕获并比较所有3个生成器的输出,以查看它们是否在某个误差范围内一致。您还可以包括一些典型的和一些可疑的最坏情况的参数。如果输出总是一致的,那么所有东西都按照规范工作的可能性要比不符合规范的概率高得多。
https://stackoverflow.com/questions/8622251
复制相似问题