Skip to main content

Augmenter la couverture de tests dans votre entreprise avec GitHub Copilot

Comprendre les fonctionnalités, les expliquer aux développeurs et mesurer l’impact de Copilot.

Qui peut utiliser cette fonctionnalité ?

GitHub Copilot Business or GitHub Copilot Enterprise

Le guide est inspiré par Playbook pour la réussite des systèmes d'ingénierie (ESSP) de GitHub, qui recommande des stratégies et des indicateurs pour améliorer les systèmes d'ingénierie.

Si vous démarrez un déploiement de Copilot, nous vous recommandons de définir vos objectifs, de planifier votre déploiement en conséquence et de communiquer clairement les objectifs au personnel. Consultez Atteindre les objectifs d’ingénierie de votre entreprise avec GitHub Copilot.

1. Identifier les obstacles au succès

De nombreuses équipes logicielles rencontrent des difficultés persistantes pour maintenir un code de haute qualité en raison d'une faible couverture des tests unitaires. Dans les environnements de développement au rythme soutenu, l'écriture de tests est souvent perçue comme chronophage ou non essentielle, en particulier lorsque les équipes sont sous pression pour livrer rapidement des fonctionnalités.

Par conséquent, des bugs critiques peuvent être découverts tard dans le cycle de vie du développement, souvent dans des environnements de préproduction ou de production.

Cela entraîne une série de conséquences négatives :

  •           **Taux de bugs plus élevés** et problèmes signalés par les clients
    
  •           **Coût accru** de la correction des bugs après le déploiement
    
  •           **Confiance réduite des développeurs** dans la stabilité de leur code
    
  •           **Cycles de publication plus lents** en raison du débogage réactif et de l'application de correctifs
    

Dans les systèmes hérités, la couverture de tests peut être encore plus difficile à améliorer en raison de dépendances complexes ou d'un code mal documenté. Les développeurs peuvent manquer de familiarité avec les bases de code plus anciennes ou avec les frameworks de test en général, ce qui aggrave encore le problème.

L'amélioration de la couverture de tests est une bonne pratique reconnue, mais elle nécessite du temps et une expertise que de nombreuses équipes peinent à mobiliser.

2. Évaluez vos options

L’étape suivante consiste à évaluer et à accepter des solutions pour résoudre les obstacles que vous avez identifiés à l’étape 1. Dans ce guide, nous allons nous concentrer sur l’impact que GitHub Copilot peut avoir sur l’objectif que vous avez identifié. Les déploiements réussis d’un nouvel outil nécessitent également des modifications apportées à la culture et aux processus.

Exécuter des essais de nouveaux outils et processus avec des groupes pilotes pour recueillir des commentaires et mesurer la réussite. Pour connaître les ressources et les métriques d’apprentissage à utiliser pendant les essais, consultez 3. Implémentez les modifications et les métriques pour surveiller les sections.

          <a href="https://github.com/github-copilot/purchase?ref_product=copilot&ref_type=trial&ref_style=button&ref_plan=enterprise" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">              <span>Inscrivez-vous à Copilot</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>

Comment Copilot peut vous aider

GitHub Copilot peut considérablement accélérer et simplifier le processus d'écriture de tests unitaires. En comprenant le code environnant et le contexte, Copilot peut suggérer des fonctions de test qui correspondent à la structure et à la logique du code testé.

Les capacités de Copilot sont utiles dans plusieurs scénarios :

  • Lorsque les développeurs écrivent de nouvelles fonctions, Copilot peut suggérer automatiquement des cas de test correspondants directement dans le code.
  • Lors du remaniement de code hérité, Copilot peut aider à générer une structure de tests pour éviter les régressions.
  • Pour les modules non testés, les développeurs peuvent demander à Copilot de générer des cas de test pertinents, même lorsque la couverture de tests est absente ou incohérente.

En rendant les tests unitaires plus faciles, plus rapides et moins manuels, Copilot réduit les frictions pouvant entraîner des lacunes de couverture, et aide les équipes à adopter une approche axée sur la qualité.

Cas d'utilisation

  •           **Génération de tests en ligne** : les développeurs peuvent demander à Copilot de générer des tests pour une fonction ou un module spécifique sans changer de contexte.
    
  •           **Meilleure couverture des cas limites** : En demandant à Copilot des scénarios en limite (comme des entrées nulles, des listes vides ou des états non valides), les développeurs peuvent rapidement couvrir davantage de branches de logique.
    
  •           **Intégration accélérée** : Les nouveaux membres de l'équipe peuvent utiliser Copilot pour comprendre la façon dont une fonction est censée se comporter en consultant les cas de test générés.
    
  •           **Aide à la CI/CD** : Copilot peut suggérer comment intégrer des tests à votre pipeline de build, en veillant à ce que les améliorations de couverture renforcent directement les garde-fous qualité.
    

Considérations culturelles

En plus de votre déploiement de GitHub Copilot, résolvez tous les facteurs sociaux ou culturels qui pourraient vous empêcher d’atteindre vos objectifs.

Les exemples suivants sont tirés de la section « Anti-modèles » de l’ESSP.

  • Les équipes peuvent s'appuyer sur des tests manuels ou sur des tests automatisés insuffisants. Cela peut être dû à des contraintes de ressources pour l'automatisation ou à un manque d'expérience avec des outils de test modernes.
  • Les équipes peuvent attendre trop longtemps pour publier, en déployant de gros lots de code d'un seul coup, ce qui rend plus difficiles la détection des bugs et des régressions. Cela peut être dû à un manque de maturité du pipeline CI/CD, à des exigences de conformité strictes ou à de longs cycles de révision entre la PR et le déploiement.

3. Mettre en œuvre des changements

Lorsque vous avez identifié la bonne approche pour surmonter vos obstacles, mettez à l’échelle les solutions que vous avez identifiées. Pour un déploiement réussi d’un nouvel outil ou d’un processus, attribuez la propriété à chaque partie du déploiement, communiquez de manière transparente sur vos objectifs, fournissez une formation efficace et mesurez vos résultats.

Cette section fournit des exemples de scénarios, des bonnes pratiques et des ressources pour les développeurs. Utilisez cette section pour planifier des sessions de communication et de formation pour aider les employés à utiliser Copilot d’une manière qui s’aligne sur votre objectif.

  •           [Générer des tests en ligne](#generate-tests-inline)
    
  •           [Couvrir les cas limites](#cover-edge-cases)
    
  •           [Comprendre le nouveau code](#understand-new-code)
    
  •           [Obtenir de l'aide pour la CI/CD](#get-assistance-with-cicd)
    
  •           [Bonnes pratiques pour les développeurs](#best-practices-for-developers)
    
  •           [Ressources pour les développeurs](#resources-for-developers)
    
  •           [Fonctionnalités recommandées](#recommended-features)
    

Générer des tests en ligne

  1. Dans VS Code, sélectionnez la fonction que vous souhaitez tester et faites un prompt à Copilot : Generate a unit test for this code.
  2. Copilot génère un test en ligne ou dans un fichier de test distinct, selon le langage et la structure.
  3. Examinez, affinez et acceptez la suggestion.

Couvrir les cas limites

  1. Après avoir écrit un test, demandez à Copilot : What are some edge cases I should test for this function?

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

  2. Copilot suggère des cas de test supplémentaires pour couvrir les conditions aux limites.

  3. Examinez les tests et intégrez-les à votre suite de tests.

Comprendre le nouveau code

  1. Sélectionnez une fonction héritée et demandez à Copilot : Explain what this function does and generate a test to validate it.
  2. Copilot explique l'objectif de la fonction et suggère les cas de test correspondants.
  3. Consultez les cas de test pour comprendre le comportement attendu et établir rapidement le contexte.

Obtenir de l'aide pour la CI/CD

  1. Examinez vos cas de test et validez-les dans la base de code.
  2. Demandez à Copilot : Where should I place this test if I want it to run in CI?
  3. En fonction de la structure de la base de code, Copilot suggérera où placer les fichiers de test et comment mettre à jour les configurations du pipeline.

Bonnes pratiques pour les développeurs

Les développeurs doivent :

  • Utiliser des commentaires ou des prompts descriptifs lorsqu'ils échangent avec Copilot. Par exemple : Generate unit tests for a function that calculates discounts based on user type and purchase amount.
  • Utiliser Copilot pour explorer la couverture de la logique. Par exemple : What branches or conditions does this function have that should be tested?
  • Explorer différentes techniques de prompt et comparer les résultats provenant de différents modèles d'IA.

Les développeurs ne doivent pas :

  • Accepter des tests générés sans examiner la logique. S'assurer que les tests reflètent les exigences réelles et gèrent des entrées et sorties réalistes.
  • Sauter l'assertion du comportement en limite. Si vous ne testez que les « cas nominaux », vous risquez de passer à côté de régressions.
  • Compter sur Copilot pour deviner des règles métier non documentées. Fournir toujours du contexte via des prompts ou des commentaires.
  • Considérer Copilot comme un substitut aux revues de code humaines. Copilot accélère le processus, mais vous devez tout de même faire preuve de jugement d'ingénierie.

Ressources pour les développeurs

  •           [AUTOTITLE](/copilot/using-github-copilot/guides-on-using-github-copilot/writing-tests-with-github-copilot)
    
  •           [Comment générer des tests unitaires avec GitHub Copilot : Conseils et exemples](https://github.blog/ai-and-ml/github-copilot/how-to-generate-unit-tests-with-github-copilot-tips-and-examples/)
    
  •           [GitHub Copilot est PARTOUT dans Visual Studio](https://learn.microsoft.com/en-us/shows/github-copilot-for-visual-studio/github-copilot-is-everywhere-in-visual-studio-miniseries) (contenu vidéo avec une section sur les tests)
    
  •           [AUTOTITLE](/copilot/using-github-copilot/copilot-chat/prompt-engineering-for-copilot-chat)
    
  •           [AUTOTITLE](/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat)
    
  •           [Chat de Copilot sur GitHub](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github)
    
  •           [Suggestions en ligne de Copilot](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot)
    
  •           [Tchat Copilot dans l'IDE](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide)
    
  •         [Copilot, agent de codage](/copilot/concepts/about-copilot-coding-agent)
    

Mesures à surveiller

Pour évaluer les essais de nouveaux outils et vous assurer que vos déploiements complets offrent des améliorations cohérentes, surveillez les résultats et apportez des ajustements si nécessaire. Nous vous recommandons de prendre en compte les zones clés de la qualité, de la vélocité et du bonheur des développeurs, et la façon dont ces zones se réunissent pour contribuer aux résultats métier.

Voici quelques métriques permettant d’évaluer l'impact de Copilot sur cet objectif spécifique.

  •           **Couverture de tests** : Suivez les augmentations de la couverture de lignes et de branches après l'adoption de Copilot. Si possible, examinez les rapports de couverture de tests issus de vos pipelines CI.
    
  •           **Taux de bugs après le déploiement** : Moins de bugs devraient être signalés dans les environnements de production.
    
  •           **Confiance des développeurs** : Utilisez des sondages ou des rétrospectives pour évaluer le niveau de confiance des développeurs lorsqu'ils livrent du nouveau code.
    
  •           **Temps d'écriture des tests** : Mesurez la réduction du temps consacré à la création de tests unitaires.