生成AIを使用したテスト業務の取り組み

この記事は [レコチョク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/recochoku)の18日目の記事です。

### はじめに
株式会社レコチョクでQA推進グループをリードしている清崎です。
ここ最近は体力の衰えを感じながら、フェスやライブへ足を運んでおります。
今年のベストアクトはGREENROOM FESTIVAL '24の[Jungle](https://greenroom.jp/jungle_24/)です。
ステージはエレクトロ・ファンク、ソウル、ディスコなど多様なジャンルを融合させたスタイルで非日常感を味わいました。

本記事では、テスト業務のライフサイクルに沿った生成AIの活用を進める中での事例をご紹介します。現在は初期導入段階でまだ試行を重ねている状況です。


### 背景
- チーム内でのスタッフのテスト経験やドメイン知識の違いが、テスト対象の分析や観点の抽出にばらつきが起こっております。特にテストベースに記載されていない観点の導出が困難という課題があります。
- 特にリスクの高い部分を見逃したくないため、これを解決する手段として、過去の不具合チケット情報を[RecoChat](https://recochoku.jp/corporate/news/20230807-recochat-with-ai/)（生成AI）に学習させて再利用できる仕組みを作成しました。

### RecoChatとは
レコチョクでは、業務生産性向上の一環として、2023年6月より生成AIの積極的な活用を目的に「with AI プロジェクト」を発足、1カ月後には「RecoChat」として、ChatGPTを社内で安全に利用できる環境を構築しました。
[プレスリリース](https://recochoku.jp/corporate/news/20230807-recochat-with-ai/)

### 作成したGPTsプロンプト
**1. シナリオサジェスチョン（過去不具合チケットの再利用）**

   - 過去のテストで蓄積した不具合チケット（自社の独自データ）を学習し、AIへ質問することでテストケースの抜け漏れを迅速に検出・予測する。

**2. 不具合チケット校正**

   - 記載内容の一貫性とレベルの平準化を図ることで可読性を高め、再利用を容易にする。

**3. 不具合分析**

   - 不具合チケットを再利用する際に、重要度やリスクの識別を容易にして、効率化を促進する。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2303466/88f7ff59-4f95-80d2-0e31-557ea029de7f.png)

### 特徴
**1. シナリオサジェスチョン**

  - サービス名称に対する辞書を用意し、略称や呼称の表記揺れを吸収しています。キーワード（画面、機能、不具合事象内容など）を入力するだけで、テストシナリオや注意点、期待値、環境情報を出力し、どの製品特性に属するかまで自動的に提供します。

**2. 不具合チケット校正**

  - QAチーム内で使用するテンプレートに沿って起票した不具合チケットを"6つのステップ"で評価し、修正案を提供します。

    - Step1: 記載項目のチェック
    - Step2: 文法と表現の確認
    - Step3: 具体的かどうかの確認
    - Step4: 複数事象の混在チェック
    - Step5: 機微情報の有無
    - Step6: [RIMGEN](https://bbst.courses/rimgen/)基準への準拠

**3. 不具合分析**
  内容抜粋：

    - 内容：
    欠点値（5:致命、4:重、3:中、2:軽、1:仕様確認）
    市場影響度（5:大、3:中、1:小）
    手順（5:通常、3:限定、1:イレギュラー）
    再現性（5:常、3:頻繁、2:稀、1:1回のみ）など

対応が完了した不具合チケットを評価し、欠点の重大度、市場影響、手順の複雑性、再現性などに基づきリスク評価を行います。これにより、市場への影響を判断して、より的確に情報を得られるようにしてます。

### 活用範囲
レコチョクの基準にしているテスプロセス以下の通りで、生成AIを適用しているのは一連の流れすべてが該当します。

   - テストプロセス

    - テスト計画
    - テスト分析／設計／実装
    - テスト実行
    - テスト報告／判定〜終了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2303466/e94e6f28-14d1-5dbd-ab74-19d30ae90f9c.png)


### テストプロセスにおける生成AIの活用シーン
具体的な入出力イメージは割愛しますが、活用シーンは次のとおりです。

- テスト計画段階（シナリオのサジェスチョン）
テストの対象をもとに過去の不具合からリスクや再発が予想される問題を重点的に洗い出して提案してくれる

- テスト分析／設計／実装（シナリオのサジェスチョン）
過去に検知した不具合やインシデントからテストケースの補完や注意すべき観点を提案してくれる
テストレビュー段階で過去のテスト結果や不具合チケットと照らし合わせて、ヌケモレがないかチェックする

- テスト実行（不具合チケットの校正）
不具合チケットの起票スピードと精度が向上
読み手の理解スピードが高くなり、やり取りのコストが下がる内容の充足度が高くなり情報の再利用がやりやすくなる

- テスト実行（探索的テストのヒント）
探索的テストを実施する際にリスクがありそうな部分のヒントを得てテストチャーターへ追加する

- テスト完了／レポート（不具合チケットの分析評価支援）
問題の特定、優先順位の設定、および影響範囲と影響度などを分析して不具合チケットに関連付けておくことで、テストだけではなく開発段階でも有効利用可能

### まとめ（使ってみた評価）
#### 良い点
- 生産性向上
過去不具合チケットから関連する情報を整理する時間が約7割〜8割削減され手段として有効でした。
- プロセス改善
開発 〜 テスト完了後に次のテストのために情報を再利用することに自然と意識向くようサイクルが作れました。
- テストレビュー効率化
テスト設計レビュー時に観点のヌケモレを補完することができた（補完した観点で不具合が見つかったというエピソードはありません）
- 不具合チケット起票
不具合チケット校正を利用することで、テンプレートに沿ってドラフトを作成するだけで一貫性を保った内容を作成することが可能になりました。
効果は利用者や事象内容について異なりますが、最低でも作成時間の30%以上削減されました。
- 探索的テスト
テストを実施しながらプロンプトへ過去の不具合から観点を導出して進められたセッション時間内に効率的に進められました。

#### 改善点
- 学習データの問題
過去の不具合チケット内容の不足情報や冗長な表現が見られるので、補完や修正が必要（優先を決めて修正）
不具合チケットへ「原因」と「対応」が不十分であるため、問題の傾向分析まで掴めない（チケットクローズの必須条件とするなど）
不具合が発生するOSやデバイス・環境が抜け落ちている情報がある（情報の補完が必要）

- 出力内容の問題
質問内のキーワードに対して、過去の不具合チケット情報では候補が見つからないがあった場合、ハルシネーションが発生して架空の不具合を捻出して回答してしまう。（データの質向上、インストラクションの見直しなど）

### 次のステップ
引き続き改善点に対して試行を繰り返しますが、初期導入段階から定着へ一歩ずつ進めてまいりたいと思います。
すべてを生成AIへ任せるのではなく、あくまで効率化と位置づけてどの範囲を活用するのか目標を決めて見極めるというのも大事だと思います。
また、生成AIは日々進化を続けていますが、ハルシネーションはゼロは難しいと考えており、評価軸をより明確にして正解率を向上させるという点にフォーカスするという考え方が現状は良いと考えています。
****
明日の [レコチョク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/recochoku)は19日目「AWSでURLリダイレクトを設定する方法」です。お楽しみに！

この記事はレコチョクのエンジニアブログの記事を転記したものとなります。

https://techblog.recochoku.jp/?p=11416