Trabajo con manipulación de audio, generalmente usando Matlab para creación de prototipos y C++ para implementación. Recientemente, he estado leyendo sobre TDD. He visto algunos ejemplos básicos y estoy bastante entusiasmado con el paradigma.Desarrollo impulsado por prueba para bibliotecas de procesamiento de señal
Por el momento, uso lo que consideraría un enfoque global "asistido por prueba". Para esto, escribo bloques de procesamiento de señales en C++, y luego hago un archivo simple de Matlab mex que puede interactuar con mis clases. Posteriormente agregué funcionalidad, comprobando que los resultados coinciden con un script de Matlab equivalente a medida que avanzo. Esto funciona bien, pero las pruebas se vuelven obsoletas rápidamente a medida que el sistema evoluciona. Además, estoy probando todo el sistema, no solo unidades.
Sería bueno utilizar un marco TDD establecido donde pueda tener un conjunto de pruebas, pero no veo cómo puedo validar la funcionalidad de los bloques de procesamiento sin pruebas que son tan complejas como el código bajo prueba . ¿Cómo generaría las señales de referencia en una prueba de C++ para validar un bloque de procesamiento sin que la prueba sea una forma de profecía autocumplida?
Si alguien tiene experiencia en esta área, o puede sugerir algunas metodologías que podría leer, sería genial.
+1 procesamiento de señal de prueba no es fácil; Sin embargo, una nota: probar que los resultados de C++ son los mismos que los resultados de los matlab, solo prueba ese punto, pero no prueba que los resultados sean correctos: tanto el matlab como el C++ podrían dar el mismo resultado, incorrecto. – stijn