Что такое хороший метод для генерации тестового цифрового аудио - PullRequest
5 голосов
/ 24 декабря 2011

Я хочу провести модульное тестирование генератора сигналов - скажем, он генерирует простую синусоидальную волну или выполняет частотную модуляцию сигнала на синусоидальной волне.Достаточно легко определить разумные параметры теста, и хорошо известно, как должен выглядеть «результат», но это довольно сложно проверить.

Я мог бы (например) провести частотный анализ на выходе и проверитьпроверьте максимальную амплитуду и т. д., но а) это сделает тестовый код значительно более сложным, чем код, который он тестирует, и б) не полностью проверит форму вывода.

Есть ли установленный способсделать это?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Эта ситуация является веским аргументом для инструмента моделирования, такого как Matlab, для автоматической генерации и проверки понятного набора тестов, а также для предоставления среды для автоматического сравнения и оценки. Специально для случаев, когда имеют место комбинаторные взрывы тестовых вариаций, автоматизация позволяет и просто генерировать огромный набор данных, обнаруживать проблемы и, при необходимости, сокращать репрезентативные квалификационные тестовые наборы.

Часто недооцененные средства - это средство для создания больших, обширных тестов, выполняющих как требования, так и пределы реализации вашего проекта. Продумывание и разработка таких случаев также является огромным преимуществом при внедрении чистой, беспроблемной системы.

2 голосов
/ 24 декабря 2011

Один из способов сделать это - записать «заведомо исправный» вывод и сравнить побитово с этим. Пока ваш алгоритм детерминирован, вы должны каждый раз получать один и тот же результат. Возможно, вам придется периодически перекалибровать его, если что-то изменится, но, по крайней мере, вы узнаете, изменилось ли оно вообще.

0 голосов
/ 24 декабря 2011

Один из возможных полуавтоматических способов тестирования - это кодирование ваших генераторов сигналов из спецификации с помощью 3 разных алгоритмов или, возможно, 3 разных программистов на 3 разных языках программирования.Затем случайным образом сгенерируйте параметры в пределах всего диапазона допустимых входных значений управления, соберите и сравните выходные данные всех 3 генераторов, чтобы увидеть, согласуются ли они в пределах некоторой границы ошибки.Вы также можете включить некоторые типичные и некоторые подозреваемые параметры в худшем случае.Если выходные данные всегда совпадают, то вероятность того, что все работает по спецификации, гораздо выше, чем если бы они не работали.

...