はじめに
最近、業界に生成AIが導入され、ソフトウェアの開発において開発品質を維持しながら生産性を向上させる新たな方法が提供されています。それに対して、QAの品質管理の生産性を向上させる方法はあまり取り上げられていないようです。一般的にQAの品質管理をテストに限定して自動化テストやレポートの作成に生成AIを導入しようとする取り組みが主流であり、全体的な品質管理の生産性を向上させる方向では取り上げられていません。この記事では、生成AIを活用してQAの品質管理の生産性を向上させる方法について紹介します。
LINEヤフーにおける品質管理
QA(quality assurance)の定義は、プロジェクトやサービスの性質によってその役割と範囲が異なる定義ができると思います。LINEヤフーでのQAエンジニアは、プロダクトの品質を改善するために、プロダクトの開発プロセスだけでなく、プロジェクトのプロセス全般にも携わり、プロダクトだけでなくプロジェクトの品質も向上させる役割をしています。プロジェクトの企画段階から参画し、プロジェクトメンバーと緊密に連携することで早期にリスクを識別し、リリースに成功するようにサポートします。
下図は、プロダクトを管理するための各段階を定義したものです。各段階でどのような品質管理を行うべきかを示しています。
通常は企画と開発段階の後から本格的 に品質管理を行いますが、LINEヤフーでのQAエンジニアは、すべての段階において品質管理を行います。そのため、従来より多くの活動を行うことになり、業務を効率的に処理する必要があります。
私たちはこのような厳しい状況の中、生成AIを活用して全体的な品質管理の生産性を向上させています。では、どのように生成AIを適用しているのか、どのように生産性を向上させているのか見てみましょう。
生成AIの活用策の検討
生成AIを活用する際には、まず社内のセキュリティ規定を確認する必要があります。LINEヤフーでは、インハウス版のChatGPTを使っています(ChatAIと呼ばれます)。ユーザーは社内で提供するデータのレベルに応じて、個人情報や機密情報を入力データとして使用しないようにセキュリティを遵守しなければなりません。社内のChatAI運用側では、機密情報が外部に流出しないようにフィルタリングも行っています。
次に検討が必要なのは、生成AIの限界を理解し、活用可能な業務範囲を把握することです。生成AIは分析や要約に優れていますが、まだその結果はすべて信頼できるものではありません。そのため、人がまったく関わらず、すべてのプロセスを生成AIに任せるよりは、補助的な手段として活用するのが生産性をより高められると思います。
では、生成AIを品質管理に適用するための手順を説明します。
品質管理に生成AIを適用する手順
まず、上記の「図1. プロダクト管理における各段階での活動」の内容を参考にして、分析と要約が必要な活動を選択します。これらは生成AIが最も得意とする領域であり、簡単に導入して大きな効果を得られます。下の表は、各段階で生成AIを活用できる品質管理を定義したものです。
企画 | 開発 | テスト | リリース |
---|---|---|---|
|
|
|
|
次に、各段階の品質管理で汎用的に使えるようにプロンプトを作成します。すでに広く知られているプロンプトの作成手法を活用しており、代表的に役割指定と形式指定を中心に作成しています。この記事ではプロンプトについて詳しく触れず、どのような品質管理に活用されているかを中心に説明します。私たちは各品質管理の目的に合わせて、以下のようなプロンプトを作成しました。
- Plan advisor:企画文書の内容の分析と要約を行い、ユーザーの質問によってさまざまな形で成果物を出力する
- Thread summarizer:Slackのスレッドの内容を要約し、決定事項や予想される問題点、アクションアイテムなどを導き出す
- Test designer:入力された情報を基にテスト設計や図式化を行い、基本的なテストケースを導き出す
- Test helper:入力さ れたバグ情報を分析してラベルを抽出し、追加のテストが必要なパスを提示する
- App reviewer:さまざまな言語でのレビューを一度に収集して希望の形で統計を作成し、主な問題を国別に要約する
以下は、各段階における主な品質管理と使用されるプロンプトを関連付けてまとめた表です。
企画 | 開発 | テスト | リリース | |
---|---|---|---|---|
Task |
|
|
|
|
Prompts |
|
|
|
|
プロンプトの作成まで終わったら、各段階で作成したプロンプトを適用して品質管理を行います。プロンプトを一度だけ実行し、その結果に満足するのではなく、よりさまざまな質問を試すことでより良い結果を得られます。また、その結果を基にプロンプトを改善し、より迅速で満足度の高い回答が提供されるように継続して管理します。
生成AIの活用事例の紹介
では、どのように品質管理の生産性を向上させたのか、実際の適用例を見てみましょう。
企画文書の整理
企画文書が定型化された構造でない場合や内容があまりにも複雑で膨大な場合、またはアップデートが頻繁に行われる場合、変更を追跡するのが大変でした。以前は、QAエンジニアが直接コア機能を把握し、アップデートごとの変更を比較・整理する必要がありました。Plan advisorのようなプロンプトを利用することで、要約整理と変更点の追跡時間を短縮できました。事前に定義された構造化形式で出力されるだけでなく、追加の会話を通じて特定の部分についてさまざまな形で整理することも可能です。
以下の例は、LINEアルバムに適用されたズームイン/アウト機能に関する企画文書の変更点をPlan advisorを利用して追跡したものです。
長い文章で説明されている複雑な仕様を以下のようにテーブルやチャートなど、希望する形で整理もできます。
現在のバージョンの企画文書だけでなく、参照となる過去の他の企画文書があれば、各文書の内容の中で互いに影響し合う可能性のある部分を洗い出し、早期にリスクを識別することも可能です。ただし、情報が不十分だったり、生成AIのTemperature値がCreativeに近かったりする場合、不正確な回答(hallucination)を出す可能性が高くなるため、生成AIの回答を検証できる方法を事前に考えておく必要があります。
Slackのスレッドの要約と分析
QAエンジニアが企画の初期段階から参画したとしても、一部の技術や仕様についての議論はすでに企画者と開発者、または開発者同士で行われた後、QAエンジニアに意見を聞いたり、チェックを依頼したりする場合があります。
LINEヤフーではSlackが代表的なコミュニケーションツールとなっており、普段そのような議論はSlackのスレッドで行われます。企画と開発の議論が終わってからQAエンジニアがそのスレッドで内容を理解しようとすると、内容の理解に多くの時間がかかることがあります。また、内容によっては追加の質問が必要な場合もあります。それを防ぐために毎回すべてのスレッドに参加したり、モニタリングしたりする手もありますが、それはQAリソースを多く消費することになり、現実的ではありません。
この場合は、Thread summarizerのようなプロンプトを利用して大量の会話を要約する方法を使用できます。生成AIを組み合わせた形の要約機能は、すでに多くの企業が導入している良い事例の一つです。
以下の例は、LINEアルバムに適用されたズームイン/ア ウト機能に関するスレッドの内容をThread summarizerを利用して議事録の形でまとめたものです。課題の発案者とスレッドの要約タイトル、主な議論、結論、問題点はもちろん、アクションアイテムまで導き出しました(セキュリティのため、参加者の実名や参照URLなど、一部の機密性の高い内容は削除しました)。
前述の事例と同様に、会話を通じてより多様な視点から追加の質問もできます。特に、テストの観点から考慮すべきことだけを導き出したり、既存の企画仕様と比較してアップデートが必要なところを追跡したりできます。
テストの設計とテストケースの導出
前述で紹介した企画文書の内容やスレッドの要約、または他の生成AIの会話を基に、生成AIを活用して新たなテストケースを導き出せます。このように導出されたテストケースの品質が高くないのは事実ですが、主なテストの流れを理解し、テストケースを迅速に作成するためのドラフトとしては適しています。
Test designerは、手順通りにユーザーからの入力を受けてマインドマップで図式化し、基本的なテストケースを導き出します。以下の例は、LINEアルバムのGreen dotという機能の仕様について、Test designerで各ステップを実行し、その結果をマインドマップで示したものです(セキュリティのため、一部の仕様は除外しています)。
その後、QAエンジニアに追加が必要なケースがあるかどうかを確認し、必要に応じて特定のケースを追加したり、再度以前の状態から図式化を行ったりできます。下記の例は、企画仕様と図式化された情報を基に作成したテストケースのドラフトです(実際に使用するテストケースとは違いがあり、セキュリティのために一部のケースは除外しました)。
上記までのプロセスが完了したら、テストケースをJSON形式でエクスポートして他のテストプラットフォームのテストケースを作成したり、テストケースのレビューを通じてテストケースをさらに強化したりできます。
生成AIとの会話を通じて境界値を分析し、より多くのデータを提供することで、より高度なテストケースを作成できます。ここで1つ注意すべき点は、完璧で精度の高いテストケースを作成するには、直接作成するよりも時間がかかる可能性があることです。そのため、生成AIの助けを借りて作成するテストケースの適正な品質レベルを事前に検討してみる必要があります。
バグの性質の把握と探索的テストへの拡大
登録されたバグとその特徴を把握して自動的にラベルを抽出し 、過去に似たような問題があったかどうかを確認することに利用できます。従来は、さまざまなフィルター条件によってバグの特徴を検出してきましたが、今はTest helperのようなプロンプトを利用することで過去の似たような問題をより簡単かつ便利に見つけられます。また、その問題を基に探索的テストから追加的にテストするパスを提供してもらい、より質の高いテストを行うことも可能です。
以下の例は、LINE Keepサービスのダウンロード機能について、既存に登録されたバグのラベルを抽出し、それに基づいて推奨のテストパスを作成するプロセスの一つです。
このように推奨された追加のテストパスは、その後すぐに探索的テストに適用できます。推奨されたテストパスのうち、テストに追加してみる価値があると判断したものを確認し、テストチャーター (Test charter)に追加します。
以下の例は、探索的テストを行うプロセスで、赤いノードが生成AIによって提案された追加のテストパスです。
探索的テストの欠点は、経験が少ないテスターの場合、バグを見つけるのが容易ではなく、設定したテストパスもバグを見つける のに適しているかどうか不明だということです。それを補うためにペアテスト(pair testing)を活用できますが、そうするとコストと時間がかかります。
生成AIはまだペアテスターほど効率的ではありませんが、ペアテスターが発見できなかった新しいテストパスを提案することで、従来よりコストと時間を削減できます。
アプリレビューの要約と分析
LINEヤフーではアプリレビューをさまざまな方法で分析しています。App StoreやGoogle Play上のアプリレビューやアプリに対するSNSでの反応を確認したり、そのレビューを収集・分析して結果を提供する社内ツールを運用して活用したりもします。問題は、さまざまな言語で書かれたレビューの内容を簡単に理解できず、毎回言語ごとに翻訳が必要になることです。
しかし、今はApp reviewerのようなプロンプトを利用することで、さまざまな言語が混在しているレビュー内容も希望の言語に素早く翻訳できます。さらに、レビューをポジティブなレビューとネガティブなレビューに分けて国別に分析したり、国別に主な問題の現状についてタグクラウド形式でまとめて見ることも可能になりました。また、レビューが機能改善についてなのか、機能エラーについてなのかなども区別でき、テストの観点からどの部分をさらにテストすべきかについての意見も得られます。
以下は、アジアの主要国を対象にLINEアルバムサービスに関するレビューを収集し、分析した内容の例です。
振り返り
リリース終了後、QAの品質管理について振り返りを行います。よくできている部分については引き続き発展させるよう促す一方、改善が必要だと判断した件については、追加のアクションアイテムを作成して実行するようにします。振り返りで交わされた長い会話は、前述で紹介したThread summarizerのようなプロンプトを利用して議事録の形式でまとめます。
おわりに
この記事で紹介した方法以外にもさまざまな形でQAの品質管理に生成AIを導入できます。定期的に作業を行う場合は、自動化された方法でさらに業務の効率化を図れるでしょう。
このように、生成AIは明らかに魅力的な生産性向上ツールですが、正確性やセキュリティといった注意すべき点も存在します。また、無理に生成AIを業務に導入すると、逆に生産性が低下したり、満足のいかない結果になったりする可能性もあります。そのため、生成AIを導入する際には、以下のような質問について自問自答してみる必要があります。これによって、より効果的に生成AIを導入できると思います。
- 現在の組織、プロジェクト、またはサービスで求められる品質管理は何か?
- その品質管理に分析や要約など生成AIを活用できる要素はあるか?
- もし生成AIを 導入するのであれば、どのレベルまで生成AIを活用するのか?
- これによって生産性は向上できるのか?
QAの品質管理に生成AIを導入・活用し、品質管理の生産性を向上させた事例がより多く共有されることを願って、終わりにしたいと思います。