¿Qué es la densidad de defectos? Fórmula para calcular con ejemplo

⚡ Resumen inteligente

La densidad de defectos mide el número de defectos confirmados en un módulo de software dividido por el tamaño de ese módulo, generalmente expresado por cada mil líneas de código, e indica si una compilación está lista para su lanzamiento.

  • 🔘 Fórmula: La densidad de defectos es igual al número de defectos confirmados dividido por el tamaño de la liberación, que generalmente se mide en KLOC.
  • ☑️ Ejemplo trabajado: Cuarenta defectos en tres mil líneas de código dan como resultado 0.0133 defectos por LOC, o 13.333 defectos por KLOC.
  • Benchmark: Un defecto por cada mil líneas de código se considera generalmente un indicador de buena calidad del proyecto.
  • 🧪 Influencias: Code La complejidad, las reglas de conteo de defectos, el período de medición y la habilidad del equipo influyen en el resultado.
  • 📊 Comparación: Los índices de fugas de defectos, eficiencia en la eliminación de defectos y gravedad responden a preguntas que la densidad de defectos por sí sola no puede responder.
  • ⚠️ Precaución: Un valor bajo puede significar pruebas deficientes en lugar de código limpio, por lo que esta métrica nunca se utiliza de forma aislada.

Densidad de defectos

¿Qué es la densidad de defectos?

Densidad de defectos Es el número de defectos confirmados en un software o módulo durante un período específico de operación o desarrollo, dividido por el tamaño de dicho software o módulo. Permite a un equipo decidir si un software está listo para su lanzamiento.

La densidad de defectos se calcula por cada mil líneas de código, también conocidas como KLOC. Dado que el recuento se normaliza según el tamaño, un módulo grande con muchos defectos y un módulo pequeño con pocos defectos pueden compararse en la misma escala, algo que un recuento de errores sin procesar nunca permite.

La métrica normalmente se informa al final de un ciclo de prueba y traclanzamiento tras lanzamiento, por lo que se sitúa junto al resto de los proceso de gestión de defectos en el ciclo de vida de las pruebas de software.

Cómo calcular la densidad de defectos

Una fórmula para medir la densidad de defectos:

Defect Density = Defect count/size of the release

El tamaño de una versión se puede medir en términos de una línea de código (LOC).

Tres detalles determinan si el número resultante tiene algún significado:

  • La unidad de tamaño. LOC y KLOC son las unidades más comunes. Los puntos de función se utilizan cuando los equipos desean una medida de tamaño que no varíe con el lenguaje de programación, y algunos equipos normalizan por módulo o por componente.
  • ¿Qué se considera un defecto? Solo los defectos confirmados deben incluirse en el numerador. Los duplicados, los informes rechazados y las solicitudes de mejora deben excluirse, ya que de lo contrario la cifra se inflaría sin que ello suponga ningún cambio en la calidad del código.
  • La ventana de medición. Defectos encontrados durante las pruebas del sistema, durante pruebas de regresióny después del lanzamiento describen cosas diferentes, por lo que el período debe indicarse con el número.

Ejemplo de densidad de defectos

Supongamos que tienes 3 módulos integrados en tu producto de software. Cada módulo tiene la siguiente cantidad de errores detectados:

  • Módulo 1 = 10 errores
  • Módulo 2 = 20 errores
  • Módulo 3 = 10 errores

Total de errores = 10+20+10 = 40

El número total de líneas de código para cada módulo es:

  • Módulo 1 = 1000 LOC
  • Módulo 2 = 1500 LOC
  • Módulo 3 = 500 LOC

Línea total de Code = 1000+1500+500 = 3000

La densidad de defectos se calcula como:

Defect Density = 40/3000 = 0.013333 defects/loc = 13.333 defects/Kloc

El mismo cálculo aplicado por módulo es más útil que la cifra combinada, como muestra el gráfico a continuación: el módulo 2 tiene 20 defectos en 1500 LOC y el módulo 3 tiene 10 defectos en solo 500 LOC, por lo que el módulo 3 es el más denso y arriesgado de los dos, aunque reportó menos errores.

Gráfico de barras que compara el número de defectos y las líneas de código de tres módulos utilizados en el cálculo de la densidad de defectos.

Un estándar para la densidad de defectos

No existe un estándar fijo para la densidad de defectos. Los estudios sugieren que uno precisa Por cada mil líneas de código, generalmente se considera un indicador de buena calidad del proyecto, y esa cifra es la regla general más citada en la industria.

Las expectativas varían según el ámbito. El software crítico para la seguridad y regulado, como el de aviónica y dispositivos médicos, se rige por un objetivo muy inferior a un defecto por KLOC, mientras que las aplicaciones empresariales comunes suelen superarlo. Dado que las reglas de conteo, las unidades de medida y la profundidad de las pruebas difieren entre organizaciones, un valor de referencia extraído de un estudio publicado solo es comparable con un proyecto que utilice el mismo método de medición. Por lo tanto, el uso práctico de la métrica es interno: comparar una versión con la versión anterior del mismo producto, medidas de forma idéntica.

Factores que afectan la densidad de defectos

El mismo código fuente puede producir cifras de densidad de defectos muy diferentes dependiendo de los siguientes factores:

  • Code complejidad. Lógica profundamente anidada y alta complejidad ciclomática Producen más defectos por línea que un código sencillo.
  • El tipo de defectos que se tienen en cuenta. Contando solo los defectos funcionales, o incluyendo la usabilidad, la documentación y no funcional Los hallazgos modifican sustancialmente el numerador.
  • La duración del tiempo considerada. Una cifra medida durante un ciclo de prueba de dos semanas no es comparable a una medida durante seis meses de uso en producción.
  • Habilidades de desarrollador y probador. Los desarrolladores experimentados introducen menos defectos, y los probadores experimentados encuentran más de los que ya existen, por lo que ambos efectos influyen en la métrica en direcciones opuestas.
  • Cobertura de la prueba. Los defectos que nunca se buscaron nunca se contabilizan, por lo tanto prueba de cobertura Limita silenciosamente el valor máximo que puede alcanzar la densidad medida.

Densidad de defectos frente a otras métricas de defectos

La densidad de defectos responde a una pregunta: ¿cuán concentrados están los defectos conocidos? Tres métricas complementarias responden a las preguntas que no puede responder, y la mayoría de los equipos las reportan conjuntamente.

Métrico que mide Pregunta que responde
Densidad de defectos Defectos confirmados divididos por tamaño (KLOC o puntos de función) ¿Qué módulos presentan la mayor cantidad de defectos en relación con su tamaño?
Fuga defectuosa Defectos encontrados después del lanzamiento como porcentaje del total de defectos ¿Cuánto contenido escapó al proceso de prueba y llegó a los usuarios?
Eficiencia en la eliminación de defectos Defectos eliminados antes del lanzamiento como porcentaje del total de defectos. ¿Qué tan efectivas fueron las pruebas para detectar defectos a tiempo?
Índice de gravedad del defecto Los defectos se ponderan según su gravedad en lugar de contarse por igual. ¿Qué tan perjudiciales son los defectos, y no solo cuántos hay?

En conjunto, los cuatro elementos ofrecen una visión más completa: una baja densidad de defectos con una alta fuga de defectos apunta a pruebas superficiales en lugar de a un código limpio, que es precisamente la interpretación errónea sobre la que advierte la siguiente sección.

Ventajas de la densidad de defectos

A continuación se detallan las ventajas de la densidad de defectos:

  • Ayuda a medir la eficacia de las pruebas.
  • Ayuda a diferenciar la concentración de defectos entre componentes y módulos de software.
  • Resulta útil para identificar las áreas que necesitan corrección o mejora.
  • Es útil para señalar componentes de alto riesgo, lo que alimenta directamente la pruebas basadas en riesgos.
  • Ayuda a identificar las necesidades de capacitación de los distintos recursos.
  • Puede resultar útil para estimar el esfuerzo de prueba y reelaboración causado por los defectos.
  • Puede estimar los defectos restantes en el software.
  • Antes del lanzamiento, ayuda a determinar si las pruebas realizadas hasta el momento son suficientes.
  • Esto crea una base histórica con la que se pueden comparar las versiones posteriores.

Limitaciones de la densidad de defectos

Esta métrica es fácil de calcular y fácil de interpretar erróneamente. Las siguientes limitaciones determinan la importancia que merece en una decisión de lanzamiento:

  • Los defectos no detectados son invisibles. El numerador solo incluye los defectos que se detectaron durante las pruebas, por lo que un módulo que no ha sido sometido a pruebas exhaustivas arroja una cifra engañosa.
  • Se ignora la gravedad. Un defecto que corrompe un pago y un problema de alineación cosmética cuentan lo mismo, por lo que es necesario tener en cuenta la gravedad.
  • Las definiciones de defectos varían. Dos equipos que cuentan de forma diferente producen cifras que no se pueden comparar, ni siquiera dentro de la misma organización.
  • Las líneas de código son un indicador de tamaño poco fiable. El código extenso reduce la densidad sin mejorar nada, y la unidad no es comparable entre diferentes lenguajes de programación.
  • Esta métrica puede ser manipulada. Rechazar informes dudosos o inflar el número de líneas mejoran la cifra sin mejorar el producto.

Nada de esto hace que la densidad de defectos sea inútil. Simplemente la convierte en un indicador de tendencias para un producto medido de forma consistente, en lugar de una puntuación para comparar equipos entre sí.

Cómo reducir la densidad de defectos

Reducir la densidad de defectos de forma real, en lugar de solo en teoría, significa prevenir los defectos con antelación y detectar el resto antes del lanzamiento. Las siguientes prácticas son las que se repiten en las guías publicadas:

  • Adelanta las pruebas. Involucrar a los evaluadores en la etapa de requisitos y diseño permite detectar ambigüedades antes de que se conviertan en código, que es donde resulta más económico corregir los defectos.
  • RevRevisa el código antes de que se fusione. La revisión por pares detecta errores de lógica, requisitos mal interpretados y fallas de diseño que no prueba de unidad fue escrito para buscar.
  • Automatice el conjunto de pruebas de regresión. Ejecutar comprobaciones en cada confirmación a través de integración continua Evita que los defectos antiguos reaparezcan mientras se escribe código nuevo.
  • Primero escribe las pruebas. Desarrollo guiado por pruebas obliga a que cada comportamiento se especifique antes de su implementación, y prueba de mutación De esta forma, se puede confirmar que las pruebas resultantes realmente afirman algo.
  • Utilice análisis estático. El escaneo automatizado de código detecta desreferencias nulas, fugas de recursos y puntos críticos de complejidad antes de que se ejecute una sola prueba.
  • Refactorizar los módulos densos. Una vez que Defect Density ha identificado los componentes más problemáticos, dividirlos y simplificarlos suele reducir tanto la complejidad como la cantidad de defectos.
  • Reintroduce los defectos en el proceso. El análisis de la causa raíz en las retrospectivas convierte los defectos individuales en soluciones de proceso en lugar de parches puntuales.

Traclanzamiento ked sobre lanzamiento junto con técnicas de prueba de software Con los datos de cobertura y la densidad de defectos, esta se convierte en un sistema de alerta temprana en lugar de un simple informe de calificaciones.

Preguntas Frecuentes

La mayoría de los equipos lo calculan al finalizar las pruebas del sistema, una vez que se han clasificado y confirmado los informes de defectos. Medirlo a mitad del ciclo subestima la cifra, ya que los informes aún están abiertos, y medirlo solo después del lanzamiento lo convierte en una métrica de fugas.

No. Solo se debe contar el código que el equipo escribió y que puede modificar. Incluir archivos generados, bibliotecas de proveedores o código de prueba aumenta el denominador y reduce artificialmente la densidad, lo que oculta los módulos que realmente necesitan atención.

Sí. Los equipos suelen informar una segunda cifra restringida a defectos críticos y de alta gravedad. Un módulo con una densidad general moderada pero con varios defectos críticos representa un mayor riesgo de lanzamiento que uno con muchos problemas estéticos.

Sí, con un denominador diferente. Equipos ágiles A menudo, los defectos se normalizan por historia de usuario, por punto de historia o por funcionalidad entregada. La unidad de medida es menos importante que usar la misma de forma consistente en todos los sprints.

Los modelos de predicción de defectos aprenden de métricas históricas de código y procesos, como la complejidad, la frecuencia de cambios y el número de defectos anteriores, para clasificar los archivos con mayor probabilidad de presentar defectos. Posteriormente, los evaluadores centran sus esfuerzos en los módulos de mayor riesgo antes de realizar las pruebas de compilación.

Indirectamente. Copilot genera rápidamente pruebas unitarias, escenarios de casos extremos y aserciones estándar, lo que aumenta la cobertura y detecta los defectos con mayor antelación. Además, genera código que requiere la misma revisión que cualquier otro, por lo que nunca elimina la necesidad de la revisión por pares.

Normalmente, el responsable de pruebas o el gerente de control de calidad lo notifica, pero las reglas de conteo deben acordarse previamente con el equipo de desarrollo y el gerente de proyecto. Sin una definición consensuada de defecto confirmado y de código contabilizable, la cifra no es justificable en una reunión de lanzamiento.

No necesariamente. Un pico suele indicar que las pruebas finalmente han llegado a un módulo que antes no se había probado, lo cual es una buena noticia cuando se llega tarde. Analícelo junto con la cobertura y la tendencia de defectos antes de considerarlo un fallo de calidad.

Resumir este post con: