Si bien soy un programador profesional, nunca he recibido capacitación formal en ingeniería de software. Como visito con frecuencia aquí y SO, noté una tendencia a escribir pruebas unitarias siempre que sea posible y, a medida que mi software se vuelve más complejo y sofisticado, veo las pruebas automatizadas como una buena idea para ayudar a la depuración.
Sin embargo, la mayor parte de mi trabajo implica escribir SQL complejo y luego procesar el resultado de alguna manera. ¿Cómo escribiría una prueba para asegurarse de que su SQL devolviera los datos correctos, por ejemplo? Luego, diga si los datos no estaban bajo su control (por ejemplo, el de un sistema de terceros), ¿cómo puede probar de manera eficiente sus rutinas de procesamiento sin tener que escribir a mano resmas de datos ficticios?
La mejor solución que se me ocurre es hacer vistas de los datos que, juntos, cubren la mayoría de los casos. Luego puedo unir esas vistas con mi SQL para ver si devuelve los registros correctos y procesar manualmente las vistas para ver si mis funciones, etc. están haciendo lo que se supone que deben hacer. Aún así, parece excesivo y escamoso; particularmente encontrar datos para probar contra ...