このガイドは、エンジニアリング システムの改善を推進するための戦略とメトリックを推奨する GitHub の「Engineering System Success Playbook (エンジニアリング システム サクセス プレイブック)」(ESSP) からヒントを得ています。
Copilot のロールアウトを開始する場合は、目標を定義し、それに応じてロールアウトを計画し、スタッフに目標を明確に伝えることをお勧めします。 「GitHub Copilot を使って会社のエンジニアリング目標を達成する」をご覧ください。
1. Identify barriers to success
ESSP が推奨する最初の手順は、会社の改善を妨げている障害を明確に理解することです。 現在のベースライン、目的とする将来の状態、進歩を妨げる障壁を理解することで、的を絞った効果的な変更を行うことができます。
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
次の手順は、手順 1 で特定した障壁に対処するための解決策を評価し、同意することです。 このガイドでは、GitHub Copilot で特定した目標に与える影響に焦点を当てます。 新しいツールの導入を成功させるには、カルチャやプロセスの変更も必要であることに留意してください。
パイロット グループで新しいツールとプロセスの試験を実施し、フィードバックを収集して成功を測定します。 試用版で使うトレーニング リソースとメトリックについては、「3. 変更を実装する」と「監視するメトリック」セクションを参照してください。
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
GitHub Copilot のロールアウトに加えて、目標を達成できない可能性のある社会的または文化的要因にも対処する必要があります。
次の例は、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
障害を克服するための適切なアプローチを特定したら、特定したソリューションを拡大します。 新しいツールやプロセスのロールアウトを成功させるには、ロールアウトの各部分に所有権を割り当て、目標について率直にコミュニケーションを取り、効果的なトレーニングを提供し、成果を測定することが重要です。
このセクションでは、開発者向けのシナリオ例、ベスト プラクティス、リソースについて説明します。 このセクションを使って、従業員が目標に沿った方法で Copilot を使用できるように、コミュニケーションとトレーニング セッションを計画することをお勧めします。
- Generate tests inline
- Cover edge cases
- Understand new code
- Get assistance with CI/CD
- Best practices for developers
- Resources for developers
- Recommended features
Generate tests inline
- In VS Code, select the function you want to test and prompt Copilot:
Generate a unit test for this code.
- Copilot generates a test inline or in a separate test file, depending on the language and structure.
- Review, refine, and accept the suggestion.
Cover edge cases
-
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.
-
Copilot suggests additional test cases to cover boundary conditions.
-
Review the tests and incorporate them into your test suite.
Understand new code
- Select a legacy function and ask Copilot:
Explain what this function does and generate a test to validate it.
- Copilot explains the function's purpose and suggests corresponding test cases.
- Look at the test cases to understand the expected behavior and quickly build context.
Get assistance with CI/CD
- Review your test cases and commit them to the codebase.
- Ask Copilot:
Where should I place this test if I want it to run in CI?
- 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
- Writing tests with GitHub Copilot
- How to generate unit tests with GitHub Copilot: Tips and examples
- GitHub Copilot is EVERYWHERE in Visual Studio (video content with a section on testing)
- Copilot Chat のプロンプト エンジニアリング
- Copilot Chat の AI モデルを変更する
Recommended features
Metrics to watch
新しいツールの試用版を評価し、完全なロールアウトによって一貫した改善が実現されていることを確認するには、結果を監視し、必要に応じて調整を行う必要があります。 一般に、品質、速度、開発者の満足度という主要なゾーンを考慮し、これらのゾーンがどのように連携してビジネス成果に貢献するかを検討することをお勧めします。
この特定の目標に対する Copilot の影響を評価するために、検討することをお勧めするメトリックをいくつか示します。
- 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.