Skip to main content

Increasing test coverage in your company with GitHub Copilot

Understand features, enable developers, and measure Copilot's impact.

Wer kann dieses Feature verwenden?

GitHub Copilot Business or GitHub Copilot Enterprise

Der Leitfaden ist inspiriert vom Engineering System Success Playbook (ESSP) von GitHub, das Strategien und Metriken für die Verbesserung von Engineeringsystemen empfiehlt.

Wenn du mit dem Rollout von Copilot beginnst, empfehlen wir, deine Ziele zu definieren, den Rollout entsprechend zu planen und die Ziele klar an Mitarbeitende zu kommunizieren. Weitere Informationen findest du unter Achieving your company's engineering goals with GitHub Copilot.

1. Identify barriers to success

Der erste Schritt, der vom ESSP empfohlen wird, besteht darin, ein klares Verständnis der Hindernisse zu entwickeln, die Verbesserungen in deinem Unternehmen verhindern. Wenn du die aktuelle Baseline, den gewünschten zukünftigen Zustand und die Hindernisse für Fortschritt kennst, kannst du sicherstellen, dass Änderungen gezielt und effektiv sind.

Many software teams face persistent challenges in maintaining high-quality code due to low unit test coverage. In fast-paced development environments, writing tests is often seen as time-consuming or non-essential, especially when teams are under pressure to deliver features quickly.

As a result, critical bugs can be discovered late in the development lifecycle, often in staging or production environments.

This leads to a chain of negative outcomes:

  • Higher bug rates and customer-reported issues
  • Increased cost of fixing bugs after deployment
  • Reduced developer confidence in the stability of their code
  • Slower release cycles due to reactive debugging and patching

In legacy systems, test coverage can be even harder to address because of complex dependencies or poorly documented code. Developers may lack familiarity with older codebases or with testing frameworks in general, further compounding the problem.

Improving test coverage is a recognized best practice, but it requires time and expertise that many teams struggle to allocate.

2. Evaluate your options

Der nächste Schritt besteht darin, Lösungen für die in Schritt 1 identifizierten Hindernisse zu bewerten und auszuwählen. In diesem Leitfaden konzentrieren wir uns auf die Auswirkungen, die GitHub Copilot auf das von dir identifizierte Ziel haben kann. Denke daran, dass erfolgreiche Rollouts eines neuen Tools auch Änderungen an Kultur und Prozessen erfordern.

Du führst Testversionen neuer Tools und Prozesse mit Pilotgruppen aus, um Feedback zu sammeln und den Erfolg zu messen. Informationen zu Schulungsressourcen und Metriken, die in der Testversion verwendet werden sollen, findest du in den Abschnitten 3. Implementieren von Änderungen und Zu überwachende Metriken.

Sign up for Copilot

How Copilot can help

GitHub Copilot can significantly accelerate and simplify the process of writing unit tests. By understanding the surrounding code and context, Copilot can suggest test functions that match the structure and logic of the code being tested.

Copilot's capabilities are useful across multiple scenarios:

  • As developers write new functions, Copilot can automatically suggest corresponding test cases inline.
  • When refactoring legacy code, Copilot can help generate test scaffolding to prevent regressions.
  • For untested modules, developers can prompt Copilot to generate meaningful test cases, even when test coverage is missing or inconsistent.

By making unit testing easier, faster, and less manual, Copilot reduces the friction that can lead to gaps in test coverage, and helps teams adopt a quality-first mindset.

Use cases

  • Inline test generation: Developers can ask Copilot to generate tests for a specific function or module without switching context.
  • Better edge case coverage: By prompting Copilot for edge scenarios (such as null inputs, empty lists, or invalid states), developers can quickly cover more branches of logic.
  • Accelerated onboarding: New team members can use Copilot to understand how a function is expected to behave by looking at the generated test cases.
  • Assistance with CI/CD: Copilot can suggest how to integrate tests into your build pipeline, ensuring that coverage improvements directly support quality gates.

Cultural considerations

Neben dem Rollout von GitHub Copilot solltest du auch alle sozialen oder kulturellen Faktoren angehen, die dich daran hindern könnten, deine Ziele zu erreichen.

Die folgenden Beispiele stammen aus dem Abschnitt „Anti-Patterns“ im ESSP.

  • Teams might rely on manual testing or insufficient automated testing. This could be caused by resource constraints for automation or a lack of experience with modern test tools.
  • Teams might wait too long to release, deploying large batches of code at once, which makes bugs and regressions harder to detect. This could be caused by a lack of CI/CD pipeline maturity, strict compliance requirements, or long review cycles between PR and deployment.

3. Implement changes

Wenn du den richtigen Ansatz zur Überwindung der Hindernisse identifiziert hast, skaliere die von dir identifizierten Lösungen. Damit der Rollout eines neuen Tools oder Prozesses erfolgreich ist, ist es wichtig, Besitz für jeden Teil des Rollouts zuzuweisen, deine Ziele transparent zu kommunizieren, effektive Schulungen anzubieten und deine Ergebnisse zu messen.

Dieser Abschnitt enthält Beispielszenarien, bewährte Methoden und Ressourcen für Entwickelnde. Wir empfehlen die Verwendung dieses Abschnitts, um die Kommunikation und Schulungssitzungen zu planen, damit Mitarbeitende Copilot entsprechend deiner Ziele nutzen können.

Generate tests inline

  1. In VS Code, select the function you want to test and prompt Copilot: Generate a unit test for this code.
  2. Copilot generates a test inline or in a separate test file, depending on the language and structure.
  3. Review, refine, and accept the suggestion.

Cover edge cases

  1. After writing a test, ask Copilot: What are some edge cases I should test for this function?

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

  2. Copilot suggests additional test cases to cover boundary conditions.

  3. Review the tests and incorporate them into your test suite.

Understand new code

  1. Select a legacy function and ask Copilot: Explain what this function does and generate a test to validate it.
  2. Copilot explains the function's purpose and suggests corresponding test cases.
  3. Look at the test cases to understand the expected behavior and quickly build context.

Get assistance with CI/CD

  1. Review your test cases and commit them to the codebase.
  2. Ask Copilot: Where should I place this test if I want it to run in CI?
  3. Based on the structure of the codebase, Copilot will suggest where to place test files and how to update pipeline configurations.

Best practices for developers

Developers should:

  • Use descriptive comments or prompts when chatting with Copilot. For example: Generate unit tests for a function that calculates discounts based on user type and purchase amount.
  • Use Copilot to explore logic coverage. For example: What branches or conditions does this function have that should be tested?
  • Explore different prompt techniques and compare results from different AI models.

Developers should not:

  • Accept generated tests without reviewing logic. Make sure the tests reflect actual requirements and handle realistic inputs and outputs.
  • Skip asserting edge behavior. If you only test "happy paths," you risk missing regressions.
  • Rely on Copilot to guess undocumented business rules. Always provide context through prompts or comments.
  • Treat Copilot as a substitute for human code reviews. Copilot accelerates the process, but you still need to apply engineering judgment.

Resources for developers

Metrics to watch

Um Testversionen neuer Tools zu bewerten und sicherzustellen, dass deine vollständigen Rollouts konsistente Verbesserungen bieten, solltest du die Ergebnisse überwachen und bei Bedarf Anpassungen vornehmen. Im Allgemeinen empfehlen wir, die Schlüsselbereiche Qualität, Geschwindigkeit und Entwicklerzufriedenheit zu berücksichtigen und zu prüfen, wie diese Bereiche zusammen zu Geschäftsergebnissen beitragen.

Hier sind einige Metriken, die du anschauen solltest, um die Auswirkung von Copilot auf dieses bestimmte Ziel zu bewerten.

  • Test coverage: Track increases in line and branch coverage after Copilot adoption. If possible, look at test coverage reports from your CI pipelines.
  • Bug rate after deployment: Fewer bugs should be reported in production environments.
  • Developer confidence: Use surveys or retrospectives to assess how confident developers feel shipping new code.
  • Time to write tests: Measure reduction in time spent creating unit tests.