Hace unos días comencé a buscar en un marco de prueba unitario llamado check, y tengo la intención de ejecutar la prueba en el código c en Linux.¿Es excesivo ejecutar la prueba unitaria con Valgrind?
Ya disponibilidad y algo de código bien diseñado y un poco de código de prueba puede ayudar a pasar por una verificación que la funcionalidad básica es correcta, quiero decir que es muy fácil de simplemente mirar las variables y la respuesta de la espalda y luego decidir si una función es correcta o no.
Pero digamos que quiero probar una estructura de memoria dinámica con un montón de malloc y libre, y resulta que puedo poner datos y obtener datos correctos de nuevo. Pero eso no prueba que no haya roto algo de memoria en el proceso, digamos que olvidé liberar la mitad de la memoria y perdí los punteros (un memleak clásico). Ese código probablemente pase la mayor parte de las pruebas unitarias.
Así que ahora para la pregunta: ¿es una buena idea ejecutar el código de la unidad de prueba completa, es decir, Valgrind y dejar que detecte cualquier malloc/free problems? (O tal vez se compilan en algo así como cerca eléctrica?)
Se siente como una buena idea, pero no estoy seguro de lo que estoy haciendo yo aquí .....
Gracias Johan
actualización: Gracias Douglas y Jonathan, parece que esto es una buena idea y algo que debería continuar con :-)
actualización: Valgrind es una herramienta divertida, sin embargo, las primeras memleaks que encontré haciendo esto estaban en el marco de prueba y no en mi propio código (aunque bastante gracioso). Así que un consejo para el resto es verificar que el marco de prueba de la unidad que está utilizando no esté goteando, antes de poner su propio código al revés. Un caso de prueba vacío era todo lo que necesitaba en mi caso, , ya que no se está ejecutando nada más que el marco de prueba de la unidad.
También hay '--xml = yes' y' --xml-file = ', lo que facilita la automatización de la lectura de los resultados. –