Objetivo de cobertura de código: ¡el 80% y no menos!
Siguiendo con las traducciones de artículos realmente interesantes con los que me he cruzado, llego a uno bastante curioso. Yo lo leí de la web de googletesting y es el que procedo a traducir.
El autor original es Alberto Savoia, y el artículo original se titulaba Code coverage goal: 80% and no less!.
Inicialmente posteé (Alberto Savoia) este artículo hace unos cuantos años la web de Artima Developer; pero la pregunta de cuál es la cobertura de código apropiada sigue surgiendo, así que pensé que era hora de volver a publicar la sabiduría de Testivus sobre el tema.
Testivus y la Cobertura de Código
Una mañana temprano, un joven programador preguntó al gran maestro:
“Estoy preparado para escribir algunas pruebas unitarias. ¿Qué cobertura de código debo conseguir?”
El gran maestro respondió:
“No te preocupes de la cobertura, tan sólo escribe algunas buenas pruebas.”
El joven programador sonrió, saludó, y se fue.
Ese mismo día más tarde, una segunda programadora realizó la misma pregunta.
El gran maestro señaló una cazuela de agua hiviendo y preguntó:
“¿Cuántos granos de arroz debería poner en esa cazuela?”
La programadora, perpleja, replicó:
“¿Cómo podría decirlo? Depende de cuánta gente tengas que alimentar, cómo estén de hambrientos, qué otra comida vayas a servir, cuánto arroz tengas disponible, y otras cosas.”
“Exacto”, dijo el gran maestro.
La segunda programadora sonrió, saludó, y se fue.
Hacia el final del día, un tercer programador llegó y realizó la misma pregunta sobre la cobertura de código.
“¡El ochenta porciento y no menos!” Replicó el maestro con voz severa, golpeando con el puño en la mesa.
El tercer programador sonrió, saludó y se fue.
Después de todo esto, un joven aprendiz se acercó al gran maestro:
“Gran maestro, hoy le he oído responder la misma pregunta sobre la cobertura de código con tres repuestas diferentes. ¿Por qué?”
El gran maestro se levantó de su silla:
“Tómate algo de té fresco conmigo y hablemos de ello”
Después de rellenar sus tazas con humeante té verde caliente, el gran maestro comenzó:
“El primer programador era novato y acaba de empezar con las pruebas. Ahora mismo tiene mucho código pero ninguna prueba. Tiene un largo camino que recorrer; centrarse en la cobertura de código en este momento sería deprimente y totalmente inútil. Es mejor que se vaya acostumbrando a escribir y ejecutar algunas pruebas. Ya se preocupará de la cobertura más adelante.
La segunda programadora, por otro lado, está muy experimentada tanto en programación como en pruebas. Cuando le respondí preguntándole cuántos granos de arroz debería poner en la cazuela, le ayudé a que se diera cuenta de que la cantidad de pruebas necesaria depende de cierto número de factores, y ella sabe esos factores mejor que yo mismo -al fin y al cabo es su código. No hay una respuesta única, simple, y ella es lo suficientemente inteligente como para manejar la verdad y trabajar con eso.”
“Ya veo”, dijo el joven aprendiz, “pero si no hay una respuesta simple, entonces porqué le dijo al tercer programador que ‘El ochenta porciento y no menos’?”
El gran maestro se rió tan fuerte y alto que su barriga, evidencia de que había bebido algo más que el té verde, se agitó arriba y abajo.
“El tercer programador sólo quería respuestas simples - incluso cuando no hay respuestas simples… y al fin y al cabo no va a seguirlas de ninguna manera.”
El joven aprendiz y el canoso gran maestro terminaron de beber su té en contemplativo silencio.
Original: “Code coverage goal: 80% and no less!”, de Alberto Savoia.
Traducción: “Objetivo de cobertura de código: ¡el 80% y no menos!”, por Miguel Ángel García