Sé que todo el mundo sigue y sigue sobre cómo debe probar primero, el diseño de todo, pero tiendo a seguir con la unidad de pruebas de cosas más complicadas.
Mi regla de oro es que construyo pruebas automatizadas para cosas que realmente espero romper con la regularidad, o cosas que no notaré de inmediato están rotas. Y, sobre todo, quiero que pruebe cosas que no puedo/no volveré a ponerme a prueba. Por ejemplo, el módulo "Calcular algunas cosas grandes complicadas usando 47 variables diferentes" debería tener un montón de pruebas que logren una buena cobertura de código y cubran todas las rutas de código posibles, pero el código que efectivamente guarda ese resultado de nuevo en el la base de datos no necesariamente necesita una prueba, especialmente si está haciendo un simple trabajo CRUD.
Además, me gusta usar pruebas de UI automatizadas (usando WatiN o algo similar) para construir pruebas de regresión para mis sitios, de modo que cuando cambio algunos componentes básicos pueda ejecutar una verificación de cordura para asegurarme de que no explotar una esquina obscura del sitio.
Al final, se trata de ROI. ¿Cuánto tiempo dedica a esto y cuánto está obteniendo de él?Si las pruebas de su unidad se están acercando al 100% de cobertura de código en alguna estúpida capa de acceso a datos de su aplicación comercial CRUDy, está perdiendo su tiempo y el dinero de su empleador, simple y llanamente. Pero si está construyendo naves espaciales o dispositivos médicos o si es una tienda principal que no tiene los recursos para un departamento de control de calidad, muchas pruebas unitarias pueden ahorrarle mucho tiempo, dinero y/o vidas. .
Entonces, por lo que entiendo por estas respuestas, no debe probar la base de datos de lectura/escritura de la base de datos. Debería probar el código de lógica de negocios. – foreyez
Pruebe todo lo que pueda romperse. Este es el sentido común. –