Ahora sé que la gente podría considerar esta pregunta duplicada o formulada muchas veces, en cuyo caso agradecería un enlace a preguntas relevantes con respuesta a mi pregunta.
Recientemente he estado en desacuerdo con algunas personas sobre la cobertura del código. Tengo un grupo de personas que quieren que nuestro equipo deje de mirar la cobertura del código por completo basándose en el argumento de que una cobertura del 100% no significa pruebas de buena calidad y, por lo tanto, un código de buena calidad.
He podido retroceder al vender el argumento de que Code Coverage me dice lo que no se ha probado con seguridad y nos ayuda a centrarnos en esas áreas.
(Lo anterior se ha discutido de manera similar en otras preguntas SO como esta: /programming/695811/pitfalls-of-code-coverage )
El argumento de estas personas es: entonces el equipo reaccionaría creando rápidamente pruebas de baja calidad y, por lo tanto, perdería tiempo sin agregar una calidad significativa.
Si bien entiendo su punto de vista, estoy buscando una manera de hacer un caso más sólido para la cobertura de código mediante la introducción de herramientas / marcos más robustos que cuiden más criterios de cobertura (Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
Lo que estoy buscando es una sugerencia para una combinación de tales herramientas de cobertura de código y prácticas / procesos para acompañarlos, lo que puede ayudarme a contrarrestar tales argumentos mientras me siento cómodo con mi recomendación.
También agradecería cualquier comentario / sugerencia que lo acompañe basado en su experiencia / conocimiento sobre cómo contrarrestar tal argumento, porque si bien es subjetivo, la cobertura del código ha ayudado a mi equipo a ser más consciente de la calidad del código y el valor de las pruebas.
Editar: para reducir cualquier confusión sobre mi comprensión de la debilidad de la cobertura de código típica, quiero señalar que no me estoy refiriendo a Statement Coverage
(o líneas de código ejecutadas) herramientas (hay muchas). De hecho, aquí hay un buen artículo sobre todo lo que tiene de malo: http://www.bullseye.com/statementCoverage.html
Estaba buscando algo más que una declaración o cobertura de línea, yendo más a múltiples criterios y niveles de cobertura.
Ver: http://en.wikipedia.org/wiki/Code_coverage#Coverage_criteria
La idea es que si una herramienta nos puede decir nuestra cobertura basada en múltiples criterios, entonces eso se convierte en una evaluación automatizada razonable de la calidad de la prueba. De ninguna manera estoy tratando de decir que la cobertura de línea es una buena evaluación. De hecho, esa es la premisa de mi pregunta.
Editar:
Ok, tal vez lo proyecté demasiado dramáticamente, pero entiendes el punto. El problema es establecer procesos / políticas en general en todos los equipos de manera homogénea / consistente. Y el temor es general de que cómo se garantiza la calidad de las pruebas, cómo se asigna el tiempo garantizado sin tener ninguna medida. Por lo tanto, me gusta tener una característica medible que, cuando se respalda con los procesos adecuados y las herramientas adecuadas, nos permitiría mejorar la calidad del código al tiempo que sabemos que el tiempo no se gasta en procesos innecesarios.
EDITAR: hasta ahora lo que tengo de las respuestas:
- Las revisiones del código deben cubrir las pruebas para garantizar la calidad de las pruebas.
- La estrategia Test First ayuda a evitar las pruebas escritas después del hecho para simplemente aumentar el porcentaje de cobertura
- Explorar herramientas alternativas que cubren criterios de prueba que no sean simplemente Declaración / Línea
- El análisis del código cubierto / número de errores encontrados ayudaría a apreciar la importancia de la cobertura y a hacer un mejor caso
- Lo más importante es confiar en la aportación del equipo para hacer lo correcto y luchar por sus creencias.
- Bloques cubiertos / # de pruebas: debatible pero tiene cierto valor
Gracias por las increíbles respuestas hasta ahora. Realmente los aprecio. Este hilo es mejor que horas de lluvia de ideas con los poderes fácticos.