2011-12-24 12 views
5

Chcę przetestować generator sygnału - powiedzmy, że generuje on prostą falę sinusoidalną lub moduluje częstotliwość sygnału na fali sinusoidalnej. Łatwo jest zdefiniować sensowne parametry testowe i dobrze wiadomo, jak powinny wyglądać dane wyjściowe - ale jest to dość trudne do przetestowania.Co to jest dobra technika do testowania jednostkowego generowania dźwięku cyfrowego

Mogę wykonać (np) analizę częstotliwości na wyjściu i sprawdzić, czy sprawdzić maksymalną amplitudę itp., Ale a) spowoduje to, że kod testowy będzie znacznie bardziej skomplikowany niż testowany kod, a b) nie będzie w pełni przetestuj kształt wyjścia.

Czy istnieje ustalony sposób na zrobienie tego?

Odpowiedz

2

Jednym ze sposobów, aby to zrobić, jest uchwycenie "znanego dobra" i porównanie bit-na-bit z tym. Dopóki twój algorytm jest deterministyczny, za każdym razem powinieneś otrzymać ten sam wynik. Być może będziesz musiał ją ponownie skalibrować, jeśli coś się zmieni, ale przynajmniej będziesz wiedział, czy to się w ogóle zmieni.

+0

Generowanie sygnałów "dobrze znanych" dla każdej kombinacji parametrów, które chcę przetestować, może być dość bolesne - ale testowanie (np. Częstotliwości) właściwości wielu sygnałów plus bitowe porównanie kilku sygnałów może działa całkiem dobrze – Draemon

0

Jednym z możliwych półautomatycznych sposobów testowania jest zakodowanie generatorów sygnałów ze specyfikacji za pomocą 3 różnych algorytmów lub 3 różnych programistów w 3 różnych językach programowania. Następnie losowo generuj parametry w pełnym zakresie wartości wejściowych kontroli prawnej i przechwytuj i porównuj wyjścia wszystkich 3 generatorów, aby sprawdzić, czy zgadzają się w granicach pewnego błędu. Możesz również uwzględnić typowe i niektóre podejrzane parametry najgorszego przypadku. Jeśli wyniki zawsze się zgadzają, istnieje znacznie większe prawdopodobieństwo, że wszystko działa zgodnie ze specyfikacją, niż w przypadku, gdy tak nie jest.

2

Ta sytuacja jest mocnym argumentem dla narzędzia do modelowania, takiego jak Matlab, do generowania i przeglądu dobrze zrozumiałego zestawu testów automatycznie, a także do zapewnienia środowiska do automatycznego porównywania i punktowania. Zwłaszcza w przypadkach, w których dochodzi do kombinatorycznych wybuchów wariacji testowych, automatyzacja umożliwia i prosto generuje ogromny zbiór danych, lokalizuje problemy i odkłada w razie potrzeby do reprezentatywnego zestawu testów kwalifikacyjnych.

Często niedoceniany jest sposób generowania dużych, obszernych testów wykonujących zarówno wymagania, jak i granice realizacji projektu. Myślenie i projektowanie tych skrzynek z przodu jest także ogromną zaletą we wprowadzaniu czystego, bezproblemowego systemu.

Powiązane problemy