Hace poco le pregunté a una pregunta sobre las pruebas en el desarrollo del juego - Esto es por cierto como supe de esto. Las respuestas apuntaban algunos inconvenientes curiosos y específicos:
-
Es costoso hacerlo cuando su código debería estar altamente acoplado .
-
Es difícil hacerlo cuando tiene que estar al tanto de las distintas plataformas de hardware, cuando debe analizar la salida al usuario y el código el resultado solo tiene sentido en un contexto más amplio .
-
La prueba de UI y UX es muy difícil .
-
Y, en particular, las pruebas automatizadas pueden ser más costosas y menos efectivas que un montón de probadores beta de muy bajo costo (o gratis) .
El cuarto punto me hace recordar alguna experiencia mía. Trabajé en una compañía muy pobre, orientada a XP y administrada por Scrum, donde las pruebas de unidad fueron altamente recomendadas. Sin embargo, en su camino hacia un estilo más esbelto y menos burocrático, la compañía simplemente descuidó la construcción de un equipo de control de calidad: no teníamos evaluadores. Muy a menudo, los clientes encontraron errores triviales en algunos sistemas, incluso con una cobertura de prueba de > 95%. Así que añadiría otro punto:
- Las pruebas automatizadas pueden hacerle sentir que el control de calidad y las pruebas no son importantes.
También, pensaba esos días en la documentación y pensé en una hipótesis que puede ser válida (en menor medida) para las pruebas dos. Simplemente sentí que el código evoluciona tan rápidamente que es bastante difícil hacer una documentación que siga esa velocidad, por lo que es más valioso dedicar tiempo a hacer que el código sea legible que escribir una documentación pesada y fácilmente desactualizada. (Por supuesto, este no se aplica a las API, sino solo a la implementación interna). La prueba tiene un poco el mismo problema: puede ser demasiado lenta para escribir cuando se compara con el código probado. OTOH, es un problema menor porque las pruebas advierten que están desactualizadas, mientras que su documentación permanecerá en silencio siempre y cuando no la vuelva a leer muy, muy cuidadosamente .
Finalmente, un problema que encuentro a veces: las pruebas automatizadas pueden depender de las herramientas y esas herramientas pueden estar mal escritas. Comencé un proyecto con XUL hace algún tiempo y, hombre, esto es simplemente doloroso para escribir pruebas unitarias para dicha plataforma. Comencé con otra aplicación utilizando Objective-C, Cocoa y Xcode 3 y el modelo de prueba fue básicamente un montón de soluciones.
Tengo otras experiencias sobre las desventajas de las pruebas automatizadas, pero la mayoría de ellas se enumeran en otras respuestas. No obstante, soy un firme defensor de las pruebas automatizadas. Esto ahorró mucho trabajo y dolores de cabeza y siempre lo recomiendo de forma predeterminada. Juzgo que esas desventajas son solo meros detalles en comparación con los beneficios de las pruebas automatizadas. (Es importante siempre proclamar su fe después de comentar herejías para evitar el auto da fé).