¿Pero no voy a volver a hacer tonterías? Cómo y por qué implementar métricas de calidad

Hola Habr! Una vez que utilizamos la métrica "Parece ser mejor" para evaluar la calidad de nuestros lanzamientos. Pero luego decidimos confiar en algo más confiable. En este artículo, hablaré sobre cómo busqué una guía métrica, no la encontré y creé la mía.



¿Sucede que haces un trabajo aparentemente útil para un proyecto, pero no entiendes si esto trae beneficios? Así que una vez escribimos pruebas automáticas, pero no pudimos decir objetivamente si las versiones del monolito y otros servicios en los que el desarrollo activo es mejor han mejorado.

Buscando métricas


Busqué en Internet y, por alguna razón, no encontré artículos o guías preparadas sobre cómo elegir las métricas correctas, cómo recopilarlas y qué hacer a continuación con ellas. Pero mientras buscaba información, encontré videos y artículos útiles que me ayudaron a hacer frente a esta difícil tarea. Los enlaces a ellos aparecerán en el artículo.

Espero que este artículo sea útil para aquellos que están pensando en medir algo en su proyecto, pero no saben por dónde empezar. El artículo contiene experiencia personal, información de artículos, videos y cursos pagos.

Un segundo antes de crear un sistema de medición de calidad.
Antes de decidir crear un sistema de métricas de calidad, ya medíamos de manera continua:

  • El tiempo dedicado a la liberación del monolito (desde el momento en que se crea la rama de liberación hasta la fusión de esta rama en el maestro).
  • El número de retrocesos de lanzamiento de monolitos al maestro debido a errores.
  • Tiempo pasado en Stop the Line .
  • El número de lanzamientos de la etapa de canalización de monolitos en TeamCity con todas las pruebas automáticas hasta que se volvió verde.

Como puede ver, medimos solo lo que está conectado con el monolito. Para otros servicios, no midieron nada.

Implementamos un sistema de medición de calidad en 11 pasos.


Aquí hay una lista de verificación de 11 pasos que lo ayudarán a implementar todo y no perder nada.

Paso 1. Defina el propósito de sus mediciones


Comprende por qué quieres comenzar a medir algo. Medir así, por el bien de la medición, no tiene sentido.

Por ejemplo, queríamos saber cómo nos estamos moviendo hacia los objetivos de calidad que nos fijamos anteriormente. También queríamos ver la dinámica de los indicadores después del esfuerzo. Por sí mismos, los números del estado actual no significan nada. Estos son solo números. Pero, observando las figuras en dinámica, podemos ver la influencia de nuestras acciones.

Paso 2. Definir objetivos


Necesitas entender por lo que te estás esforzando. ¿Reducir el tiempo de prueba? ¿Reducir la cantidad de errores críticos en el producto? Aumentar la cobertura de la prueba?

En mi caso, no hubo problemas para establecer indicadores de objetivos, ya que nuestra empresa tiene objetivos de calidad. Estos objetivos se convirtieron en la base para futuras métricas. Nuestros objetivos:

  • Una liberación de monolito no toma más de 4 horas.
  • 0 revisiones y reversiones en el monolito, el sitio y las aplicaciones móviles.

Paso 3. Decidir sobre las métricas


Piensa en cómo te das cuenta de que te estás moviendo hacia tus objetivos.
En esta etapa del trabajo, el artículo " Las métricas de control de calidad más importantes " me ayudó.

Para nuestro sistema, elegí tales indicadores
  • Hora de estrenar . Este indicador mide el tiempo (en horas de trabajo) entre la fusión de la rama de versión anterior en el maestro y la fusión de la versión actual en el maestro.

    Dividimos este tiempo en 4 etapas: preparación del stand, paisajismo de la etapa de tubería, prueba de regresión manual, implementación en el producto.

    Dividimos este tiempo en etapas para ver en detalle las consecuencias de nuestras acciones y poder determinar con precisión el cuello de botella en nuestro proceso.

    Etapas de la métrica del tiempo de liberación
  • El coeficiente de "Liberación de problemas" para todos los servicios . Esta es la proporción de "lanzamientos problemáticos" al número total de lanzamientos, todo esto multiplicado por el 100%. Una "versión problemática" es una versión en la que hubo una reversión de una versión, un hotfix o un datafix.
    Relación entre emisiones problemáticas y emisiones totales
  • La densidad de las revisiones para un servicio para un monolito es la relación entre el número de revisiones para un servicio y el número total de revisiones.
  • Tiempo de regresión manual para la aplicación móvil . Este es el tiempo desde el comienzo de la regresión manual hasta su finalización.


Importante! No tome muchas métricas a la vez. Tres o cuatro son suficientes para empezar. Cuando el proceso mejora, puede agregar más si es necesario.

Muchas métricas son difíciles de administrar. La probabilidad es cada vez mayor de que el sistema no despegue. Y si el proceso no despega la primera vez, la próxima vez será más difícil comenzar, ya que usted y los empleados tendrán una experiencia negativa.

Paso 4. Decidir sobre las unidades


Se pueden leer diferentes indicadores en diferentes unidades. Inmediatamente debe elegir para que todas las métricas tengan una unidad de medida; de lo contrario, puede encontrar malentendidos e interpretaciones erróneas.

Tenemos problemas con este artículo. Contamos el tiempo de lanzamiento en horas, incluidas las horas nocturnas, pero excluyendo los fines de semana. Al mismo tiempo, el valor objetivo fue liberado en 4 horas. Muy a menudo hubo situaciones en las que creamos la rama release-xxx a las 16:00 hoy y terminamos a las 10:00 del día siguiente. En nuestra métrica, se consideró 18 horas, pero de hecho, las acciones activas se llevaron a cabo solo 3 horas, si no menos.

Si continuamos contando de esta manera, nunca habríamos alcanzado el indicador de "4 horas" en nuestra métrica. Después de confrontar la elección, aumentar el objetivo a 12 horas o tener en cuenta solo las horas de trabajo, elegimos la segunda.

Paso 5. Análisis de las métricas seleccionadas para la idoneidad


En el video " Simple Practice Testing Metrics " , el orador sugirió una forma genial de analizar las métricas de idoneidad. Debe responder 9 preguntas para cada métrica y tomar una decisión.

Tiempo para liberar el análisis métrico sobre idoneidad
  • El propósito de la medición . Este indicador debe estar relacionado con el objetivo comercial. La métrica "Tiempo de lanzamiento" está relacionada con el objetivo comercial: lanzamiento en 4 horas.
  • Para quién está destinada esta métrica . ¿Quién mirará esta métrica? Producto oouner, desarrolladores, gerentes, probadores, maestros scrum?

    El componente del producto (porque es importante para él comprender cuántas versiones por sprint logramos lanzar), desarrolladores (porque quieren entender cuándo su código estará en el producto) y probadores (ya que ha llegado el momento la prueba afecta directamente esta métrica).
  • Qué pregunta responde la métrica del usuario . Formule las preguntas que recibirá respuesta con esta métrica. La métrica "Tiempo de liberación" responde a la pregunta, "¿Con qué frecuencia lanzamos?"
  • Indique la idea de la métrica y su descripción. Describa breve pero claramente la métrica. Describí la métrica "Tiempo de lanzamiento" de la siguiente manera: "Queremos ser lanzados con la mayor frecuencia posible, esta métrica mostrará qué tan rápido lanzamos. El tiempo de liberación es el horario de atención de 9:00 a 18:00, excepto fines de semana y feriados. El comienzo de un lanzamiento se considera la creación de una rama de lanzamiento o la fusión del lanzamiento anterior en el maestro, el final del lanzamiento es la inyección de la rama de lanzamiento en el maestro. Divida el tiempo en etapas separadas, por ejemplo: preparación para el lanzamiento, aprobación de pruebas automáticas, prueba manual, cálculo para producción "
  • Condiciones necesarias Enumere las condiciones o restricciones para recopilar métricas aquí. Quién, cuándo y de dónde vendrán los datos para las métricas. En mi caso, sé dónde ver los lanzamientos de todas las partes. Monolito: fusiona las ramas release-xxx en el maestro. Sitio web: papas en Kaiten.io en el tablero de lanzamiento. Aplicaciones: aún no lo sé, pero lo descubriré "
  • Mediciones iniciales Pero no entendí este punto y no sé cómo describirlo. Quien entendió o sabe lo que se puede discutir aquí, escriba en los comentarios.
  • Indique la fórmula para calcular la métrica. Para la métrica "Tiempo de liberación": cuánto tiempo ha transcurrido en horas de trabajo desde la fusión de la versión anterior con la maestra hasta la fusión de la versión actual con la maestra (excluyendo fines de semana y feriados). Como resultado, obtenemos las horas de trabajo que dedicamos al lanzamiento.
  • Criterios de decisión. Determine qué hará cuando vea cambios en esta métrica. Describe tu reacción. Mi respuesta en la métrica es "Tiempo de lanzamiento": "Debe responder a la métrica buscando cuellos de botella y eliminando estos cuellos de botella"
  • Frecuencia ¿Con qué frecuencia recogeremos la métrica? Íbamos a verificar nuestra métrica semanalmente, pero de hecho lo hacemos con más frecuencia.


Después de un análisis tan simple, inmediatamente queda claro si necesita esta métrica o no. Existe una comprensión más profunda de la métrica en sí y de su valor para la empresa y para usted.

Paso 6. Alinear las métricas con las partes interesadas


Mostrar las métricas seleccionadas a las que afectarán. Discuta las limitaciones que descubrió durante la fase de análisis, así como las formas de eliminarlas, o al menos reducirlas. Es especialmente importante obtener el consentimiento y la aprobación de quienes recopilarán y completarán estas métricas.

Discutí mis métricas en 3 etapas: con probadores, desarrolladores y mejoras de producto. Solo después de que todos estuvieron de acuerdo explícitamente en que estas métricas muestran la calidad del sistema, pude pasar al siguiente paso.

Paso 7. Visualiza los resultados


La gente no leerá las tablas y verá la dinámica por sí misma. Por lo tanto, debe cuidar la visibilidad.

Hice una tabla en Hojas de cálculo de Google, escribí fórmulas y me complació presentar la tabla a mis colegas. Nuestro CTO sugirió visualizar estas métricas. Más precisamente, para asegurarse de que el estado actual del sistema sea claro en 15 segundos: ¿ha mejorado en comparación con el sprint anterior o ha disminuido la calidad?

Juntos, visualizamos los indicadores. Luego le pedí a la gente que dijera lo que vieron en este cuadro. A juzgar por las respuestas, hemos logrado el objetivo.



Así es como se ve la visualización de la métrica de calidad de lanzamiento. Todo está claro, puede ver inmediatamente cómo está ahora y cómo estaba, si el número de problemas excede el número de lanzamientos, ha mejorado o empeorado en comparación con lanzamientos anteriores. En un horario ideal, la línea azul debería tender al infinito, y la línea roja debería ir a 0.


Visualización de la relación de "lanzamientos problemáticos" con el número total de lanzamientos

Paso 8. Observe la frecuencia de recopilación de métricas


Es importante establecer el proceso de recopilación de métricas para trabajar en la frecuencia. Si no hay ningún proceso, su tablero perderá su relevancia y morirá. Es importante que haya partes interesadas que hagan esto. Pero si le preocupa esto, entonces la persona en cuestión ya está allí.

Paso 9. Una y otra vez informar a las personas sobre los resultados.


No importa cuán hermoso sea su tablero, la gente no irá allí y mirará las métricas. Una vez que todos lo vean, ya que esto es algo nuevo, pero no de manera continua.

Resolvemos este problema de tres maneras.
  • Una historia sobre métricas en la parte común de nuestra revisión de sprint.
  • Conclusión de los gráficos en el monitor en el corredor, que todos ven todos los días, para que los números y los gráficos siempre estén ante sus ojos.
  • Publicar resumen de panel de barra diagonal. Lo principal es mostrar la dinámica al publicar dichos informes: se ha vuelto mejor o peor en comparación con el sprint anterior. Y si publica esto antes del equipo retro, puede darles a los chicos temas para discutir.


Paso 10. Analiza y toma decisiones


Debe mirar las métricas, tomar decisiones basadas en ellas. Puede utilizar las métricas como argumento adicional a favor de escribir pruebas adicionales o centrarse en la deuda técnica, en lugar de las características comerciales, etc.

Paso 11. Automatizar


Automatice la recopilación de métricas tanto como sea posible. Si utiliza los populares sistemas de control de versiones TaskMS y TestMS, sistemas CI / CD, lo más probable es que todos tengan una API abierta con la que puede extraer fácilmente esta información. Si no puede hacerlo usted mismo, solicite ayuda a los desarrolladores. Es posible que deba cambiar algunos procesos para esto. Esto es normal Y este es un precio bajo por los beneficios que obtiene al comenzar a recopilar métricas.

Por ejemplo, tenemos un bot que ayuda a los lanzadores a lanzar y reduce su rutina.

Resumen y conclusiones


Tomar decisiones que afectan la calidad del producto en función de sus sentimientos internos es una mala idea. Los sentimientos pueden engañarte y llevarte a la decisión equivocada. Así que solo obtenga las métricas y el sistema de evaluación de calidad.

Pero recuerde que un establecimiento métrico es como un establecimiento para mascotas. Además del beneficio de comunicarse con un nuevo amigo, usted tiene una cierta responsabilidad y obligaciones con él. Por lo tanto, comience las métricas conscientemente, con una comprensión de su necesidad y disposición para superar las dificultades que le esperan en el camino.

Source: https://habr.com/ru/post/468007/


All Articles