¿Qué estrategias sigues para hacer que el software se desarrolle más rápido, principalmente las pruebas de integración toman mucho tiempo?

Una vez tuve una gran migraña. Fui al doctor. Cuando le decía al médico que me duele más la cabeza cuando la sacudo. El médico dijo : No la sacudas entonces.

Entonces, te digo. Si las pruebas de integración toman tiempo, no las ejecute … o al menos no las ejecute cada vez que construya.

El problema con tiempos de construcción largos es un efecto secundario de la pirámide de prueba tradicional. Así es como la mayoría de las empresas prueban su código

La pirámide de prueba es como un cono de helado. Las pruebas unitarias solo cubren entre el 10 y el 20% del código. Las pruebas de Intgeration cubren el 40%, las pruebas de GUI automatizadas del 60% y luego las pruebas manuales cubren todo. Este es el resultado de ser flojo para las pruebas. Escriben algunas pruebas unitarias de “camino feliz” y lo tiran. Resulta que estas son pruebas de “tabla feliz”; es decir; El camino feliz es tan estrecho que podría ser una tabla. Luego aparece el cliente potencial y crea algunas pruebas centradas de requisitos de ruta feliz pruebas de integeración que prueban la ruta feliz real. Luego, el control de calidad viene en una prueba manual de inicio, y si tienen tiempo, automatizan las pruebas utilizando herramientas de automatización de GUI.

El problema aquí es que cuanto más alto subes en la pirámide, más escamosas y lentas se vuelven las pruebas. Lleva mucho tiempo ejecutarlos. Se necesita aún más tiempo para mantenerlos. Las personas dejan de mantener las pruebas, y luego fallan todo el tiempo, y luego todos las ignoran


Así debería verse la pirámide de prueba

La mayor parte de su código debe estar cubierto por pruebas unitarias El 80-90% del código debe estar cubierto por pruebas unitarias. Sus pruebas de nivel de servicio automatizadas deberían centrarse en probar escenarios centrados en el usuario y probar el 60% del código. Las pruebas de GUI automatizadas básicamente deberían probar si todo aparece donde deberían. No debe probar casos de negocios en pruebas de GUI. Las pruebas manuales deben reservarse para cosas como las pruebas de usabilidad


Entonces, ¿qué tiene esto que ver con los tiempos de compilación? Bueno, si superpone sus pruebas de esta manera, tendrá el lujo de organizar sus pruebas por etapas.

  1. Antes de cada verificación en el desarrollador ejecuta todas las pruebas unitarias en el módulo en el que está trabajando. Tenga en cuenta que esto es solo para el módulo en el que se está trabajando. No todo el conjunto de pruebas unitarias
  2. Todas las noches, su servidor CI ejecuta pruebas unitarias Integeration +. Estos pueden tomar más tiempo, como en el orden de las horas. Esto está bien porque se ejecuta solo una vez al día. Todos los desarrolladores no lo están ejecutando. Lo bueno de las pruebas de nivel de servicio es que es posible que pueda paralelizarlas para que todas se ejecuten durante la noche
  3. Todas las mañanas en el scrum, observa las pruebas de integración y aborda cualquier señal de alerta. Conseguir la construcción ecológica tiene prioridad sobre otras tareas
  4. Una vez a la semana, ejecuta pruebas de GUI automatizadas. Esto también llevará horas, pero pueden ejecutarse un sábado. deja que se rasgue mientras estás en casa con amigos y familiares
  5. El lunes por la mañana, el scrum analiza las pruebas de GUI y planea resolver los problemas.

¡Explosión! lo que tienes es una construcción rápida y pruebas exhaustivas.

More Interesting

¿Cuál es el mejor software para la manipulación de fotos y también la edición de fotos?

¿Cuál es el mejor software de reserva para revendedores de eventos?

¿Alguien puede desarrollar aplicaciones como OLX o Airbnb solo? Si no está solo, ¿cómo debería uno hacerlo? ¿Cómo debería usar la tecnología y cómo debería saber qué tecnología usar?

¿Cuál es la mejor manera de hacer un PDF con capacidad de búsqueda a partir de un archivo PDF o de imagen que no se puede buscar?

¿Cuál es la mejor herramienta de software para crear procesos empresariales ejecutables?

¿Qué tipo de software se utiliza en la realización de películas en Hollywood? ¿Qué tipo de software especial se usa para ilustración, efectos, montaje, animación, etc.? ¿Adobe es uno de los jugadores?

Soy un fotógrafo que configurará las reservas en línea en las próximas semanas. ¿Qué servicios de reserva de citas utiliza? ¿Qué te gusta y qué no te gusta de ellos?

¿Cuál es el alcance y los beneficios de Tally ERP 9?

¿Cómo se comienza una casa de software offshore en el sudeste asiático?

¿Puedes usar el software 3D como una caja de juguetes en lugar de usarlo para producir animaciones o videojuegos?

¿Puedo confiar en la aplicación Beam?

¿Cuáles son los principales indicadores probados para la productividad del desarrollo de software Agile / Scrum?

¿Cuál es una guía para que mi hijo de grado medio tenga una base sólida en software y hardware? Hay muchos idiomas desde Assembly hasta Google Go.

¿Cuáles son las ventajas del software CRM?

Cómo desarrollar una aplicación de Android para mi iBeacon