🤥

MagicPodではAI要約のためにもコメントを入れようと思った話

に公開

AI要約機能

MagicPodで生成AIによるテストケース要約機能(以下、AI要約)が使えるようになり、約1年が経ちました。
https://prtimes.jp/main/html/rd/p/000000043.000027392.html

これまではテストの内容を確認するために、テストケース編集画面を開いてテストの内容を読み込むか、説明欄に手動で情報を記入する必要がありましたが、AI要約の登場によりこれらの手間が軽減されました。

うまく要約されないテストケース

ほとんどのテストケースはいい感じに要約されます。
ただ、1つだけうまくいっていない…どころかハルシネーションが起きているテストケースがありました。

それは、総ステップ数が1つだけで、コメントがないテストケースです。

総ステップ数1のテストケース誕生背景

具体的には、モバイルテストでビルドファイルが登録された時に実行される「スモークテスト」でハルシネーションが発生しました。

  • テストケースタイトル:スモークテスト
  • テストステップ:共有ステップ「起動できたことの確認」の、1つのみ
  • 「起動できたことの確認」の中身
    • 不定期で表示されるモーダルの回避
    • 最重要機能の要素がアクティブであることの確認

「スモークテスト」という単語はチームで認識合わせを行っています。
そのため、上記3つの情報だけでテストの意図と内容を十分理解できるだろうと考え、コメントも入れない共有ステップ1つのみで完成としていました。

実際に生成されたAI要約

ふと気づいたらハルシネーションが起きていた1回目、ステップに変更を加えてから戻すことによって再生成させた2回目、どちらもハルシネーションが発生しました。

1回目

1. モバイルアプリを起動すると、まずは画面が正常に表示されたか確認します。
2. ログイン画面に移動し、ユーザー名とパスワードを入力してログインします。
3. ログインが成功したら、ホーム画面に移動して、各種機能を試します。
4. メニューから特定の機能を選択し、その機能が正常に動作するか確認します。
5. 画面遷移やボタンクリックなど、ユーザーフローがスムーズに行えるかを確認します。
6. エラーやバグがないかを確認し、報告する必要があればフィードバックを送信します。
7. 最後に、アプリを閉じてから再度起動し、問題が発生しないことを確認します。

手順が列挙されています。
1番はあっていますが、2番以降は全くの出鱈目です。

2回目

アプリを起動し、正常に起動できるかを確認します。次に、ホーム画面に進み、各機能を順番にテストします。ログイン画面では、正確に情報を入力し、ログインできるかを確認します。その後、各機能や画面を使いながら、ユーザーフロー通りにアプリが動作するかを確認します。最後に、不具合やバグがないかを確認し、報告します。

こちらも一文目は正しいものの、それ以降は事実に反しており、1回目と同様の誤りが見られました。

まとめると

「起動できたことの確認」という共有ステップのタイトル情報だけを頼りに、生成AIが要約を作ろうとして「ソフトウェアテストで起動できることの確認といえば、各画面の機能確認したりログインしたりするよな…」と想像を膨らましてしまい、存在しない操作を含めた要約を生成したように見えます(かわいいですね)。
このままではAI要約が誤解を与える内容になってしまっているので、プロンプトを変える──即ちテストケースの内容を修正することで、解消を目指します。

AI要約のロジックを理解して修正する

https://prtimes.jp/main/html/rd/p/000000043.000027392.html からAI要約のロジックを把握して、修正を試みます。

要約のプロンプト

記事をじっくり読むと、詳細情報まで公開されていることが分かりました。

  • プロンプトは以下の通り
    以下のブラウザテストのユーザーフローを短く(300文字以内)日本語で要約してください。:
    [テキスト形式のテストスクリプト]
    
  • [テキスト形式のテストスクリプト]は、/v1.0/{organization_name}/{project_name}/test-cases/{test_case_number}human_readable_stepsで取得している

human_readable_stepsで取得できる内容

MagicPodのWeb APIの利用手順に従って内容を確認したところ、以下のことが分かりました。

  • 共有ステップは、共有ステップのタイトルがそのまま返ってくる
    • 入れ子にしている場合、子要素は取得できない
  • コメントコマンドは、コメントの内容がそのまま返ってくる

たった1ケースのAI要約のために、共有ステップのタイトルを変えるのは良い改善策ではありません。となると、自由に入力できるもの…といえばコメントコマンドです。
ここまで調べたところで、「共有ステップの前にコメントコマンドを置くだけで解決しそう」ということが分かります。

コメント追加により改善

なぜこの確認を行うのか、がAIにも理解しやすいよう「新しいビルドファイルが登録される度に、スモークテストを実施」というコメントを置いてみました。

テストケースの中身を

1 (コメントコマンド)新しいビルドファイルが登録される度に、スモークテストを実施
2 (共有ステップ)起動できたことの確認

としたことで、AI要約が

新しいビルドファイルが登録されるたびに、スモークテストを実施します。テストのステップは、アプリを起動できるかの確認です。

に変わり、AIが迷わなくなったためかハルシネーションが起きなくなりました。
コメントを変えたり、コメント行数を変えても同様の結果を得られました。

少なくとも2025年5月15日時点のMagicPodのAI要約では、コメントが不十分だとハルシネーションを起こしやすいと言えそう[1]です。

結論:AI要約でのハルシネーションを防ぐためにも、コメントを入れよう

MagicPodのAI要約でハルシネーションが発生するのを防ぐには、コメントを入れるのが効果的だということが分かりました。

ちゃんと公式ドキュメント読もう(反省)

新たに発見したみたいに書いてますが、要約精度を上げる方法の1つとしてコメントが有効であると、 https://prtimes.jp/main/html/rd/p/000000043.000027392.html に書いてあるんですよね😇

要約の精度が上がるMagicPodテストの書き方

人間にとって理解しやすいテストスクリプトにすることで、生成AIにとっても扱いやすいスクリプトになり、要約の精度が上がります。具体的には、次の3つが効果的です。

  • テストスクリプト内を空行で区切っていくつかのセクションに分け、各セクションの先頭行にそのセクションで何をしているかを表す概要コメントを入れておく
  • テストステップ内で使用している画面要素名が「領域1」のようなわかりにくい名前になっている場合は、「登録ボタン」のような読みやすい要素名に変更しておく
  • 同じテストスクリプト内の表記は、「日本語」または「英語」で統一する

そもそも、ヒトのためにもコメントを入れよう(反省)

AIのためだけではなく人間のためにも、自分のためだけではなく他人のためにも、コメントを適切に使うことはMagicPodに限らずソフトウェア開発全般で重要です。
やはりコメントは大事なんだなと再認識できた出来事でした。

2025年5月26日 追記

記事を公開してすぐに、MagicPod全社でシェアされ改善に向けた議論をしていただいたそうです!
https://x.com/TagamiJunko/status/1923567737802289653

議論していただいただけでもありがたいのですが、なんとバージョン1.39.0(2025/5/25)に、以下の変更が含まれています。

Fix AIで生成されるテストケースの要約の品質を向上させました。

MagicPod社に確認したところ、AI要約用のGPTモデルをGPT-4o miniにアップグレードしたそうです!
2025年5月15日の記事公開からわずか10日間で改善が実現しています。スピード感すごい

AI要約用のGPTモデルアップグレード後の再挑戦結果

ブログの題材にした「たった1行だけのテストケース」に戻してAI要約させたら、モデル変更前と同様ハルシネーションが起きてしまいました。
ですが、コメント追加により改善セクションの通りのコメント付き+共有ステップ化したテストケースでは、より丁寧で詳細な要約になっていました。

AI要約の精度は向上したが、コメントが重要であることは変わらず

モデルアップグレードによりコメントが不要になったら、この記事どうしようかと不安だったのですが(小声)、やはりコメントが重要であるという結論は変わらずでした!

脚注
  1. GPT-4o miniでコメントなしのプロンプトを試したところ、ハルシネーションが発生しませんでした ↩︎

MIXI DEVELOPERS Tech Blog

Discussion