ブログ AIと機械学習 GitLab Duoを使用した自動化シリーズパート2:複雑なテスト
更新日:May 2, 2025
4分で読めます

GitLab Duoを使用した自動化シリーズパート2:複雑なテスト

コードテストが標準に準拠していることを確認するなど、GitLabチームが、GitLab DuoのAI機能を使用して、通常より複雑なテスト状況にどのように対処したかをご紹介します。

checkmark - cover - security

GitLab Duoを使用したテスト生成に関する3部構成シリーズの最初の記事では、コードテストを自動化する方法に焦点を当てました。この記事では、テスト生成にAIを使用する中で学んだ教訓をご紹介します。

直面した状況とその対処方法

全体的に見て、GitLab Duoを使用してコードテストを生成した結果には満足しています。他の言語生成の場合と同様に、インポートパスを修正したり、データセット内の内容を編集したりするなど、微調整が必要な場合もありました。より複雑なケースでは、AIが提示したソリューションでは、多くの場合、コンテキストが欠けていることを念頭に置いておく必要がありました。それでは、GitLab Duoを使用して、より複雑なテスト状況にどのように対処したかを説明します。

既存のテストケースの更新

ソフトウェア製品の開発時にソフトウェア製品の開発時にはよくあることですが、既存のテストの更新が必要になる状況が発生しました。私たちは、一般的な問題に対してテスト機能全体を手動で調整するのではなく、VS CodeのGitLab Duo Chatウィンドウを最大限に活用しました。たとえば、テストをリファクタリングするために、「Please update the provided tests to use unittest rather than pytest. (日本語:提供されたテストをpytestではなくunittestを使用するように更新してください。)」とChatプロンプトを入力してから、GitLab Duoに更新してもらいたいテストを貼り付けました。

テスト生成の自動化



pytestではなくunittestの使用をリクエストするChatプロンプト

:GitLab Duoの推奨事項をコードにコピー&ペーストしています。

レガシーコードのテスト作成

正常に動作しているとわかっていたレガシーコードのテストを作成するのも、困難な問題でした。こういった状況では、失敗したテストと一緒にエラースニペットを提供し、GitLab Duoに新しいテストを作成するようリクエストすると非常に便利でした。ターミナルウィンドウから記録された失敗とエラーをすべてコピーしてChatに貼り付け、「Please explain and fix this failing test.(日本語:この失敗しているテストを説明して修正してください。)」といったプロンプトを入力してリクエストしたところ、テストで発生した問題の概要と、問題に対処した新しいテストが生成されました。新しいテストでも失敗が何度か特定されたため、その後、複数回のリファクタリングが必要となる場合がありました。しかし、そういった場合でも、GitLab Duoのおかげで、さまざまなリファクタリングされたソリューションを迅速かつ効率的に得られたため、チーム全体とデベロッパーの効率性が向上する結果となりました。

複雑なコードや抽象化されたコードの処理

その他の例では、コードのモジュール化や複雑さにより、GitLab Duoの結果にばらつきが生じました。たとえば、GitLab Duoは、テストアプローチの違い(モックの使い方や、どのオブジェクトをモッキングするかなど)によって、成功するテストと失敗するテストを次々と生成することがありました。これに対処するため、GitLab Duoに成功したテストの例を提供し、一貫性を維持するために成功したテストのスタイルに合わせて個々のテストを1つずつ変更するようリクエストしました。また、同様のオブジェクトやタスクのテストがうまく行っているファイルをGitLab Duoに提供して、構造をミラーリングできるようにしました。

生成されたコードが当社の基準に準拠していることを確認

Pythonモジュールの開発中、GitLab Duoを活用して、モックを用いた多くのテストを生成しましたが、多くの場合、特に命名標準化に関するリファクタリングが必要となりました。こうしたケースでは、GitLab Duo Chatを活用し、どの特定のテストコンポーネントを更新するかといった手順を指示すれば、テストをリファクタリングできました。GitLab Duoにこれらの変更を行うよう指示するほうが、今まで行っていたように、テストを個別にリファクタリングするよりもはるかに高速でした。

対象外のテストケースへの対処

GitLab Duoを使用することで、当社チームが今までは検討していなかった他のテストケースのテストを生成できたため、カバレッジが向上しました。幸いなことに、GitLab Duoを使用して、これらのエッジケースに迅速かつ効率的に対処し、テストカバレッジを拡大できました。これは、当社チームにとって、開発速度の向上、および堅牢な製品開発につながる重要な付加価値となりました。

学んだ教訓

GitLab Duoをうまく活用して成功を収める中で学んだ、重要な教訓をいくつかご紹介します。

  • 迅速で効率的な開発とイテレーション - 自動テストの生成作業におけるGitLab Duoの役割は、チームの開発プロセス内での重要なアクセラレーターとなり、変更をより迅速かつ自信を持って行うことができました。
  • 適切なプロンプトを使用することの重要性 - GitLab Duoを当社のユースケースで使用する際には、機械学習の最適化における重要なトピックであるプロンプトエンジニアリングに触れました。理想的な回答を得るためには、いくつかのキーワードを使用して質問を修正する必要があることもわかりました。
  • 基盤となるフレームワークとコードを理解する必要性 - テストとして使用される場合であっても、製品に組み込まれるAI生成コードに関しては、どのように機能するかを理解して、適切にデバッグし、情報に基づいた変更をリクエストできるようにすることが重要です。
  • 望ましい最終的な状態と標準を把握しておく必要性 - AIを使用せずに開発する際に、フォーマットやライブラリの使用に関するコーディング標準に従うのと同様、AIを使用する際も意図する結果がどのようなものであるか、どのような標準に準拠すべきであるかというビジョンを持つことが重要です。GitLab Duoは、コード標準を理解するためにコンテキストを必要とします。そのため、GitLab Duoを使用するチームメンバーは、品質やその他の期待が確実に満たされるように、出力を適切に監視することが重要です。
  • GitLab Duoはすべてのテストの代わりとなるものではない - 自動化されたテストを生成する際は、GitLab Duoを多用していますが、他のテストや人間による監視に代わるものではありません。機能テスト、統合テストなどは、QAプロセスとソフトウェア開発ライフサイクル全体において以前として重要な役割を果たします。

このシリーズの次回の記事では、チームの自動テストプロセスにおけるGitLab Duoの影響を検証するために実行したテストと、これまでに達成した素晴らしい結果について説明します。



監修:川瀬 洋平 @ykawase
(GitLab合同会社 カスタマーサクセス本部 シニアカスタマーサクセスマネージャー)

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成して、ご意見をお聞かせください。 フィードバックをお寄せください

始めてみましょう

統合されたDevSecOpsプラットフォームによって、チームで何が実現できるかご確認ください。

無料トライアルを開始する

チームに最適なプランを見つけましょう

価格設定を見る

GitLabがチームにもたらすメリットをご覧ください

お問い合わせ