Skip to main content

Aumento de la cobertura de pruebas en su empresa con GitHub Copilot

Comprenda las características, habilite a los desarrolladores y mida el impacto de Copilot.

¿Quién puede utilizar esta característica?

GitHub Copilot para empresas or GitHub Copilot para grandes empresas

La guía está inspirada en el Cuaderno de estrategias de éxito del sistema de ingeniería (ESSP) de GitHub, que recomienda estrategias y métricas para impulsar mejoras en los sistemas de ingeniería.

Si vas a iniciar un lanzamiento de Copilot, se recomienda definir los objetivos, planear el lanzamiento en consecuencia y comunicar claramente los objetivos al personal. Consulta Lograr los objetivos de ingeniería de tu empresa con GitHub Copilot.

1. Identificación de barreras para alcanzar el éxito

El primer paso que recomienda el ESSP es desarrollar una comprensión clara de los obstáculos que impiden mejoras en tu empresa. Al comprender la línea de base actual, el estado futuro deseado y las barreras que te impiden avanzar, puedes asegurarte de que los cambios están dirigidos al objetivo y son efectivos.

Muchos equipos de software se enfrentan a desafíos persistentes en el mantenimiento de código de alta calidad debido a una baja cobertura de pruebas unitarias. En entornos de desarrollo rápidos, la escritura de pruebas suele considerarse como lenta o no fundamental, especialmente cuando los equipos están bajo presión para ofrecer características con rapidez.

Como resultado, los errores críticos se pueden detectar tarde en el ciclo de vida de desarrollo, a menudo en entornos de almacenamiento provisional o producción.

Esto conduce a una cadena de resultados negativos:

  • Mayores tasas de errores y problemas notificados por el cliente
  • Mayor costo a la hora de corregir errores después de la implementación
  • Reducción en la confianza de los desarrolladores en la estabilidad de su código
  • Ciclos de versión más lentos debido a la depuración reactiva y la aplicación de revisiones

En los sistemas heredados, la cobertura de pruebas puede ser incluso más difícil de abordar debido a dependencias complejas o a código mal documentado. Los desarrolladores pueden no estar familiarizados con los código base más antiguos o con marcos de pruebas en general, lo que complica aún más el problema.

Mejorar la cobertura de pruebas es un procedimiento recomendado reconocido, pero requiere tiempo y experiencia y muchos equipos tienen dificultades al asignarlo.

2. Evaluación de las opciones

El siguiente paso consiste en evaluar y aceptar soluciones para abordar las barreras que has identificado en el paso uno. En esta guía, nos centraremos en el impacto que GitHub Copilot puede tener en el objetivo que has identificado. Los lanzamientos exitosos de una nueva herramienta también requieren cambios en la cultura y los procesos.

Ejecute pruebas de nuevas herramientas y procesos con grupos piloto para recopilar comentarios y medir el éxito. Para obtener información sobre los recursos de entrenamiento y las métricas que se usarán durante las pruebas, consulte las secciones 3. implemente cambios y Métricas a observar.

          <a href="https://github.com/enterprise/contact?ref_product=copilot&ref_type=engagement&ref_style=button" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">
          <span>Ponerse en contacto con ventas</span><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>

Cómo Copilot puede ayudar

          GitHub Copilot puede acelerar y simplificar significativamente el proceso de escritura de pruebas unitarias. Al comprender el código y el contexto circundantes, Copilot puede sugerir funciones de prueba que coincidan con la estructura y la lógica del código que se está probando.

          Copilot Las capacidades son útiles en varios escenarios:
  • A medida que los desarrolladores escriben nuevas funciones, Copilot puede sugerir automáticamente casos de prueba correspondientes en línea.
  • Al refactorizar código heredado, Copilot puede ayudar a generar scaffolding de prueba para evitar regresiones.
  • En el caso de los módulos no probados, los desarrolladores pueden solicitar Copilot que generen casos de prueba significativos, incluso cuando falta cobertura de pruebas o es incoherente.

Al hacer que las pruebas unitarias sean más fáciles, más rápidas y menos manuales, Copilot reducen la fricción que puede dar lugar a brechas en la cobertura de pruebas y ayudan a los equipos a adoptar una mentalidad de primera calidad.

Casos de uso

  • Generación de pruebas insertadas: los desarrolladores pueden pedir que Copilot generen pruebas para una función o módulo específicos sin cambiar el contexto.
  • Mejor cobertura de casos perimetrales: al solicitar Copilot escenarios perimetrales (como entradas nulas, listas vacías o estados no válidos), los desarrolladores pueden cubrir rápidamente más ramas de lógica.
  • Incorporación acelerada: los nuevos miembros del equipo pueden usar Copilot para comprender cómo se espera que se comporte una función examinando los casos de prueba generados.
  • Asistencia con CI/CD: Copilot puede sugerir cómo integrar las pruebas en la canalización de compilación del código, lo que garantiza que la optimización de los códigos validados fortalezca los controles de calidad.

Consideraciones culturales

Junto con el lanzamiento de GitHub Copilot, considere los factores sociales o culturales que podrían impedirle lograr sus objetivos.

Los ejemplos siguientes se extraen de la sección "Antipatrones" del ESSP.

  • Los equipos pueden basarse en pruebas manuales o pruebas automatizadas insuficientes. Esto podría deberse a restricciones de recursos para la automatización o a una falta de experiencia con las herramientas de pruebas modernas.
  • Los equipos pueden esperar demasiado tiempo para lanzar, implementando lotes grandes de código a la vez, lo que hace que los errores y las regresiones sean más difíciles de detectar. Esto podría deberse a la falta de madurez de la canalización de CI/CD, requisitos de cumplimiento estrictos o ciclos de revisión largos entre la solicitud de cambios y la implementación.

3. Implementación de cambios

Cuando haya identificado el enfoque adecuado para superar las barreras, escale las soluciones que identificó. Para un lanzamiento correcto de una nueva herramienta o proceso, asigne la propiedad a cada parte del lanzamiento, comunique de forma transparente los objetivos, proporcione entrenamiento eficaz y mida los resultados.

En esta sección se proporcionan escenarios de ejemplo, procedimientos recomendados y recursos para desarrolladores. Use esta sección para planear las comunicaciones y las sesiones de aprendizaje para ayudar a los empleados a usar Copilot de una manera que se alinee con el objetivo.

Generar pruebas en línea

  1. En VS Code, seleccione la función que desea probar y preguntar Copilot: Generate a unit test for this code.
  2.        Copilot genera una prueba en línea o en un archivo de prueba independiente, según el idioma y la estructura.
    
  3. Revisa, ajusta y acepta la sugerencia.

Cobertura de casos extremos

  1. Después de escribir una prueba, pregunta a Copilot: What are some edge cases I should test for this function?

    O bien: Write test cases for when the input is null or empty.

  2.        Copilot sugiere casos de prueba adicionales para cubrir las condiciones de límite.
    
  3. Revisa las pruebas e incorpóralas al conjunto de pruebas.

Descripción del nuevo código

  1. Seleccione una función heredada y pregunte a Copilot: Explain what this function does and generate a test to validate it.
  2.        Copilot explica el propósito de la función y sugiere los casos de prueba correspondientes.
    
  3. Examina los casos de prueba para comprender el comportamiento esperado y crear rápidamente el contexto.

Obtención de ayuda con CI/CD

  1. Revisa los casos de prueba y confírmalos en el código base.
  2. Pregunte Copilot: Where should I place this test if I want it to run in CI?
  3. En función de la estructura del código base, Copilot sugerirá dónde colocar los archivos de prueba y cómo actualizar las configuraciones de canalización.

Procedimientos recomendados para desarrolladores

Los desarrolladores deben:

  • Use comentarios descriptivos o avisos al chatear con Copilot. Por ejemplo: Generate unit tests for a function that calculates discounts based on user type and purchase amount.
  • Use Copilot para explorar la cobertura lógica. Por ejemplo: What branches or conditions does this function have that should be tested?
  • Explorar diferentes técnicas de solicitud y comparar los resultados de diferentes modelos de IA.

Los desarrolladores no deben:

  • Aceptar pruebas generadas sin revisar la lógica. Asegurarse de que las pruebas reflejen los requisitos reales y controlar las entradas y salidas realistas.
  • Omitir el comportamiento perimetral de aserción. Si solo pruebas "rutas de acceso felices", corres el riesgo de que falten regresiones.
  • Confíe en Copilot para adivinar reglas de negocios no documentadas. Proporciona siempre contexto mediante solicitudes o comentarios.
  • Considere Copilot como un sustituto de revisiones de código humano. Copilot acelera el proceso, pero aún debes aplicar el criterio de ingeniería.

Recursos para desarrolladores

Métricas a monitorizar

Para evaluar las pruebas de nuevas herramientas y asegurarse de que los lanzamientos completos proporcionan mejoras coherentes, supervise los resultados y realice ajustes cuando sea necesario. Se recomienda considerar las zonas clave de calidad, velocidad y felicidad del desarrollador, y cómo estas zonas se unen para contribuir a los resultados empresariales.

Estas son algunas métricas para evaluar el impacto de Copilot en este objetivo específico.

  • Evaluación de pruebas: realice un seguimiento de cuántas líneas de código y ramas se verifican tras implementar Copilot. Si es posible, consulta los informes de cobertura de prueba de las canalizaciones de CI.
  • Tasa de errores después de la implementación: se deben notificar menos errores en entornos de producción.
  • Confianza del desarrollador: usa encuestas o retrospectivas para evaluar la confianza de los desarrolladores al enviar código nuevo.
  • Tiempo de escritura de pruebas: mide la reducción del tiempo dedicado a crear pruebas unitarias.