Microsoft と OpenAI は、GitHub と協力して、AI を活用したコード最適化および補完ツールである Copilot 拡張機能を開発しました。利用可能な既存のコードに基づいてブロックまたはコード行を提案することで、開発者を支援します。ソフトウェア開発における単体テストとは、コードのユニットまたはブロックが適切に機能することを確認するためにテストすることを指します。コード テストに AI を統合すると、ソフトウェア開発の生産性が向上するだけでなく、全体的な品質も向上します。この投稿では、その方法について説明しますCopilot を使用して単体テストを生成する。
GitHub Copilot の概要
GitHub Copilot は、コードのコンテキストに基づいてコード スニペットを提案する、AI を活用したコーディング アシスタントです。 OpenAI と Github は、GPT-3 モデルと Codex を使用して AI を活用した言語処理ツールを開発しました。これはコンテキスト ベースのコード提案を提供します。公開されているコードでトレーニングされており、Visual Studio などの一般的なコード エディターと統合できます。
Copilot による自動単体テスト生成の利点
- 時間効率が良い:Copilot は、言及した説明やコメントに基づいて単体テスト コードを即座に自動的に生成できます。これにより、テスト コードを手動で記述するよりも時間を大幅に節約でき、ソフトウェア開発サイクルが改善および最適化されます。
- 人的エラーの削減:自動化はプロセスをスピードアップするだけでなく、一般的な人的エラーを大幅に減らすのにも役立ちます。書かれたコードを確認することで、Copilot は目的を簡単に理解し、手動でエラーを起こすことなく、それに応じたテストを生成できます。
- 一貫性:Copilot は、単体テストの生成中にテスト構造とパターンの均一性を強制する傾向があります。このようなアプローチは、コードベース全体に対して同様のテストアプローチを維持するのに役立ち、プログラム全体を理解しやすくなります。
- テスト駆動開発:ソフトウェア テスト環境におけるテスト駆動開発は、ソフトウェア コード テストをフィードバックとして使用して、開発者がソフトウェアを作成または変更するのを支援する方法です。 Copilot は、テスト ケースの動的なコード提案を通じて TDD プラクティスをサポートします。同時に、コードを記述し、コードを実装する前にテストを作成する、テストファーストのアプローチを奨励します。
Copilot を使用して単体テストを生成する方法
テストを生成するには、Copilot がテストを開始できるようにする前に、GitHub Copilot 拡張機能をインストールし、プログラムを作成することから始めます。テスト ケースを生成するには、次の手順に従います。
1] Github Copilot Extensionをインストールする
を開きますVisual Studio マーケットプレイス、GitHub Copilot 拡張機能を検索し、クリックしますインストール。
2] 関数を作成する
Copilot を使用した単体テストの生成をデモンストレーションするために、Python のユーザー作成のプログラムを使用して、特定の数値が素数かどうかをチェックするプログラムを作成します。関数 is_prime()。
まず Python スクリプト ファイルを作成します。素数.py、上記の関数と素数をチェックするために必要なコードが含まれています。ファイルが作成されたら、素数をチェックするロジックに基づいてコードを作成できます。
3]単体テストを実行する
Copilot が上記のプログラムの単体テストを生成する方法を説明するには、以下の手順に従います。
- という名前のテスト関数を作成します。ユニットテスト_プライム番号()をテストするis_prime()関数。
- 作成したら、関数の目的またはドキュメント文字列を記述し、アサーション条件を追加します。ドキュメント文字列が言及されると、Copilot はテストのアサーション条件の提案を開始します。
効果的なユニットコード生成のためのヒント
- 明確な説明:Copilot は主に、ユーザーがファイル内に提供したコメントまたはドキュメント文字列を確認することによってユニット コードを生成します。したがって、意味のある単体テスト コードを生成するには、適切に記述された記述コードが不可欠です。
- 変数の名前付け:コードの目的を説明する変数名を使用すると、テスト ケースの生成に役立ちます。変数名を明確にすることで、自動生成されたテスト ケースが期待と一致することが保証されます。
- モックおよびスタブ手法の使用:モッキングとスタブは、コードの機能を調べるためにダミー環境を作成するために使用されるテスト手法です。モッキングではデータベースや Web サービスなどの実際のオブジェクトのクローンが作成され、スタブではテスト対象のコードが依存する関数の簡略化されたバージョンが作成されます。
- 推奨されるコードを確認します。Copilot の提案は、テスト要件とコーディング標準を満たしていることを確認するために検討される必要があります。
GitHub Copilot を使用した単体テストの制限
GitHub Copilot Chat は、質問に対して最も適切な回答を提供することを目的としています。ただし、必ずしも求めている答えが得られるとは限りません。 Copilot Chat のユーザーは、システムによって生成された応答をレビューおよび検証して、応答が正確かつ適切であることを確認する責任があります。
この投稿が役に立ち、GitHub を使用して単体テストを生成する利点と制限を理解していただければ幸いです。
Copilot によって生成された単体テストは特殊なケースをカバーしていますか?
Copilot は単体テストに役立つツールですが、すべてのシナリオをカバーできるわけではありません。その提案を徹底的に確認し、異常な入力やエラーを考慮する必要があります。包括的なテストを確実に行うために創造性を発揮してください。 Copilot を使用する場合でも、確実な単体テストには専門知識が不可欠です。
テスト ケースの場合、Copilot は複雑なアルゴリズムを処理できますか?
コパイロットは複雑なアルゴリズムのテストに苦労しています。基本的なテストを作成できますが、専門知識に代わることはできません。複雑なアルゴリズムの場合は、独自のロジックを対象とした特定のテストを作成します。 Copilot は役立ちますが、複雑なテストには常に専門知識が必要です。