CopilotによるテストとコードQA

GitHub Copilot を使ったソフトウェア開発

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

学習内容のまとめ

 

  • コード補完 — 入力中に候補を提示
  • Copilot Chat — 質問・説明・リファクタリング
  • エージェントモード — 自律的なマルチステップタスク
  • カスタムツール — Copilotの機能拡張
GitHub Copilot を使ったソフトウェア開発

実践に応用する

nanobanana: half: テスト・セキュリティ・パフォーマンスのマイルストーンを経てアプリをデプロイする開発者の道のりを示すフラットベクターイラスト

 

  • テスト — 本番前にバグを検出
  • セキュリティ — 早期に脆弱性を発見
  • パフォーマンス — スケールするコードを記述
GitHub Copilot を使ったソフトウェア開発

Copilotでテストを効率化

nanobanana: half: AIアシスタントがテストコードを生成し、テスト結果の横に緑のチェックマークが表示されるフラットベクターイラスト

 

  • テストスイートを自動生成
  • 💡 エッジケースを検出
  • 🤖 ボイラープレートを処理
GitHub Copilot を使ったソフトウェア開発

見落とされやすいエッジケース

 

def calculate_discount(price, discount_pct):
    discount = price * (discount_pct / 100)
    return price - discount

calculate_discount(50, 20)  # → 40.0 ✓

 

しかし、こんなケースは?

  • 負の price
  • discount_pct > 100
  • 数量ゼロの注文
GitHub Copilot を使ったソフトウェア開発

[screencast]

GitHub Copilot を使ったソフトウェア開発

[screencast]

GitHub Copilot を使ったソフトウェア開発

より深く掘り下げるタイミング

nanobanana: half: AIチャット画面でメッセージを入力する開発者

単純なケース

  • /tests

 

特殊なケース

calculate_discount のpytestユニットテストを作成してください。対象:負の価格、割引率100%超、空アイテムリスト。エッジケースにはparametrizeを使用すること。

GitHub Copilot を使ったソフトウェア開発

ユニットテストを超えた活用

nanobanana: half: テストピラミッド:下層がユニットテスト、中層が統合テスト、上層がE2Eテスト

 

  • ユニット/tests またはシンプルなプロンプト
  • 統合 — コンポーネントの連携を説明する
  • E2E — コードベース全体のコンテキストを使用する
GitHub Copilot を使ったソフトウェア開発

統合テスト

 

  • 関連ファイルを #file: で添付する
  • 連携モック戦略を説明する
  • テスト失敗時は /fixTestFailure を使用する

 

チェックアウトフローの統合テストを作成してください。#file:cart.py#file:payment.py を使用し、決済ゲートウェイをモックして、注文ステータスが正しく更新されることを検証すること。

GitHub Copilot を使ったソフトウェア開発

E2Eテスト

 

  • @workspace が関連コードを自動検出
  • Playwright および Cypress と連携
  • #terminalLastCommand で失敗をデバッグ

 

@workspace ユーザー登録フローのPlaywright E2Eテストを作成してください。確認メールが送信されることを検証すること。

GitHub Copilot を使ったソフトウェア開発

[screencast]

GitHub Copilot を使ったソフトウェア開発

練習してみましょう!

GitHub Copilot を使ったソフトウェア開発

Preparing Video For Download...