Voy a responder a esta pregunta muy antigua ...
COL y Cobertura de la prueba son, en mi opinión, buenas métricas, pero tienen una gran problema: si los presionas, puedes hacer que crezcan rápidamente, pero el resultado será terryifing: toneladas de código sin sentido, o en la cobertura de prueba, puedes invocar todo tu código en un bloque try-catch y no escribir uno solo assert ... O aún peor, solo escriba uno por "cumplimiento", pero sin ningún tipo de orientación comercial o sentido de código ...
Por lo tanto, este tipo de métricas son muy buenas si ayudan al equipo a honestamente evaluar su resultado , pero son una herramienta malvada si forman parte de algunas reglas de "cumplimiento", ya que su uso de esa manera causa más daño (código muerto, malas pruebas) que lo que originalmente quería lograr.
Entonces, con cada métrica, piense cómo podría engañarla si se viera forzado a alcanzar un cierto valor, y piense en las consecuencias ... Esto no es un problema de cobertura de prueba o LOC, muchas otras métricas pueden tener resultado similar, incluso complejidad ciclomática ...Si divide su código de manera incorrecta, puede reducir la complejidad ciclomática, ¡pero eso no significa que obtenga un código mejor o más legible!
Por lo tanto, este tipo de métricas son bastante buenos para ver lo que está sucediendo dentro de un equipo, pero cualquier medida que tome debe basarse en objetivos concretos, no en la métrica sí ... Por ejemplo: la cobertura
prueba es bajo: implementa dojos de codificación una vez al mes para ayudar a entrenar a las personas a escribir códigos verificables, descubrir qué código tiene la peor cobertura de prueba e intentar implementar una arquitectura mejor/más comprobable que ayude/motive a los desarrolladores a escribir pruebas, etc.
Como puede ver, nunca le dice al equipo que alcance cierto valor de cobertura de prueba, solo usa la métrica para ver dónde puede mejorar y luego busque medidas que beneficien a su proceso, después de un tiempo esperaría que la cobertura de prueba aumentara, ¡pero no está presionando a la gente para que lo haga! Está evaluando cambios para ver si las medidas están ayudando. Si después de un tiempo descubre que la cobertura de prueba no ha cambiado con sus medidas, entonces es hora de buscar otras ideas, y así sucesivamente ...
¿Podría proporcionar una referencia donde se argumenta que la cobertura del código es inapropiada? –
esta es la única referencia que puedo encontrar en mi historial: http://www.infoq.com/news/2009/11/good-agile-metrics – geowa4