La pregunta de Joel fue algo como esto. Supongamos que desea establecer un poco en algún lugar que causó que se muestre una imagen de baja resolución en lugar de una imagen de alta resolución. ¿Cómo usarías TDD para que funcione? ¿Escribirías una prueba que raspa la pantalla para mostrar que la imagen estaba en baja resolución?
Por supuesto que no. Usted ya sabe que la biblioteca JPEG funciona. Usted ya sabe que si lo llama con los argumentos correctos se mostrará en baja resolución. Lo que necesita probar es que el bit que establece se traduce a las llamadas apropiadas a la biblioteca JPEG. Entonces se burla de la biblioteca JPEG con un módulo muy simple controlado por su prueba. Luego configura el bit y solicita visualización. La biblioteca Mocked JPEG recordará cómo fue llamada, y luego la prueba puede verificar para asegurarse de que fue llamada correctamente.
Bien, entonces, ¿cómo probarías las partes internas de la biblioteca JPEG? No sé mucho sobre el procesamiento de JPEG, pero supongo que se trata de compresión, descompresión y mapas de bits. La compresión y la descompresión son solo algoritmos. Los algoritmos tienen salidas predecibles a partir de entradas dadas.Así que configura una serie de entradas muy simples y se asegura de que obtenga los resultados predecibles. Configura las entradas para que se cubran las partes internas de los algoritmos JPEG. La misma lógica es válida para los mapas de bits. No tiene que renderizarlos en la pantalla. Los pequeños mapas de bits simples se pueden representar en memorias intermedias de memoria que las pruebas pueden examinar. Por simple, me refiero a SIMPLE. 3X3, 5X5, 8X8. Sencillo. Nuevamente, estructura los datos de entrada para cubrir la mayor parte del código.
Nada de esto es ciencia de cohetes. Ninguno si es perfecto Pero un conjunto de 50 pruebas que demuestra que el 90% de su lógica es correcta puede marcar una gran diferencia cuando desee realizar cambios.
¿Puede eliminar completamente las pruebas manuales? Por supuesto no. Pero puede mitigarlo significativamente. Puede reducir las pruebas manuales a unas pocas pruebas muy estratégicas en lugar de miles de planes de prueba tediosamente tediosos.
Y por favor, podemos partir de ahora * siempre * se refieren a ella como 'The Notorious Stackoverflow # 38' o TNS # 38 ;-) –