Acabo de encontrar un problema interesante de codificación colaborativa en el trabajo.
He escrito algunas pruebas de unidad / funcional / integración e implementado una nueva funcionalidad en la aplicación que tiene ~ 20 desarrolladores trabajando en ello. Todas las pruebas pasaron y revisé el código. Al día siguiente actualicé mi proyecto y noté (por casualidad) que algunos de mis métodos de prueba fueron eliminados por otros desarrolladores (fusionando problemas por su parte). No se tocó el nuevo código de aplicación.
¿Cómo puedo detectar ese problema automáticamente? Quiero decir, escribo pruebas para verificar automáticamente que mi código todavía funciona (o no se eliminó), ¿cómo hago lo mismo para las pruebas?
Estamos utilizando Java, JUnit, Selenium, SVN y Hudson CI si es importante.
Respuestas:
No estoy muy familiarizado con Hudson para CI, pero mi herramienta de CI también puede calcular la cobertura de código. Si puede escribir un proceso que le notifique cuando la cobertura del código disminuya, sería un buen indicador de que se ha eliminado una prueba. También le dirá si se ha agregado un nuevo código sin pruebas. No es lo que estabas preguntando, pero es bueno saberlo.
fuente
Se aplican las exenciones de responsabilidad estándar: estamos haciendo una solución de ingeniería para un problema social. Sin embargo, este es un problema de higiene del proyecto, por lo que es un poco como decir que los inodoros son una solución de ingeniería para un problema social.
Tenga un trabajo en manos de la fuente RSS de Hudson. Cuente el número de pruebas en el informe Hudson. Si disminuye, haga sonar una alarma. Tener un auto-da-fe 'cuando suena la alarma.
La culpa del compromiso puede ser identificada y castigada. Tu problema desaparecerá.
Es posible que tenga otros problemas como resultado de esta solución. Si el mareo persiste, consulte a su médico.
fuente
Enfoque organizacional
Establezca una política que requiera que la persona elimine las pruebas para hablar con el creador de la prueba. Normalmente, eliminaría las pruebas solo cuando depreciara alguna funcionalidad que se está probando, y eso no sucede con mucha frecuencia.
Enfoque técnico
Este es más el enfoque de control freak pero puede tener una prueba por separado, que escanea el código fuente en busca de la presencia de todas las pruebas que desea verificar. Posiblemente también podría interactuar con Hudson y obtener la lista de pruebas ejecutadas.
fuente
Similar a la respuesta de Art ..
Comentarios Comience usando comentarios bien. Para cada método; no olvide colocar la entrada y salida esperadas, una breve descripción para funciones más complejas y su nombre.
Directrices Pero esto realmente resalta que existe la necesidad de una mayor comunicación entre el desarrollador. equipo. Debe haber pautas establecidas para trabajar juntos ... o al menos hablar con su proyecto. gerente y pedirle que aclare esto entre el equipo.
Uso adecuado de SVN También podría escribir sus clases y métodos y hacer un seguimiento de ellos ... también, mientras usa SVN, sinceramente espero que estas eliminaciones se sigan como cambios, se indiquen por separado y tengan BUENAS razones.
Además de escribir un programa especial, también podría comparar diff. archivos en SVN para rastrear cambios en sus métodos.
fuente
Lo mismo podría suceder con el código real también, y no lo sabrá hasta que note que su cambio ya no existe.
Dicho esto, es difícil identificar que el código que se está eliminando es algo malo, ya que muy a menudo se eliminan manualmente el código / características, etc., y debido a eso, el recuento de pruebas puede disminuir tan bien como lo mencionó alguien más.
fuente