経験ゼロのQA担当が生成AIを使ってみた話
はじめに
こんにちは。
GO株式会社 プロダクトマネジメント本部 クオリティマネジメント部の二河です。
GO株式会社でも生産性向上目的に生成AIを利用することが推奨され始めています。
まずは触って慣れるところから、ということで希望者に対して社内向けに提供する生成AIシステムを自由に使える権限が付与されます。
自分も人並みに生成AIを業務に使うことについては大いに興味があり、やってみるべきかなとはずっと思っていたものの、以下の点についてはよく分かっていませんでした。
そもそも生成AIで何ができるのか?
効率化するためには、どのポイントで使えば良いのか?
どのようなプロンプトでどんな結果が出るのか?
そこで今回は、経験も知識もない状態でAIがどれくらい業務に使えるかを試した際のお話をさせていただきます。
※とりあえず一度はAIに触ってみようという感覚で始めた時の話ですので、所謂「活用術」的なものではないです。
まずは課題設定
まずは、解決できそうな課題をいくつかブレインストーミングで考えてみました。
過去の不具合分析に役立つ方法はないか?
市場の不具合を分析する方法はないか?
テスト関連の工数を削減できる方法はあるか?
テスト準備工数は多いけど、生成AIを使って何か機械的にできるポイントもあるのかも?
生成AIに情報を読み込ませて辞典感覚で仕様を調べることができないかと考えました。
実践:過去の不具合分析
まず最初に試みたのは、定常的に行っている不具合分析です。会社では基本的にJIRAで不具合チケットを管理していますが、過去の不具合をすべてスプレッドシートに一覧化して分析しています。
具体的には、スプレッドシート上で不具合の発生頻度や傾向を視覚化し、どの部分に問題が集中しているのかを分析します。例えば、特定の機能に関するチケットが多発している場合、その機能に重点を置いて改善策を考えることができます。
ただ、ChatGPTを使った程度の経験しかないので、生成AIを使って大量のデータを分析する必要性が高いかは疑問です。ピボットテーブルで十分な場合も多く、AIを使うなら何億というデータ量がないと割に合わないかもしれません。
実践:テスト関連の工数削減について
今回は、テスト関連の工数についてどのように管理し、効率化を図るかについて皆さんと共有しますね。
サービス開始から約4年半分の各開発案件の工数データが整理されているので、まずはそのデータから課題を見つけていきましょう。
まず、取得している工数の内訳としては以下のような分類があります。
インスペクション
テスト設計(テスト要求分析も含む)
項目書作成
テスト実施
管理
終了 etc…
テスト設計のように人間の思考が必要な作業については効率化の対象外にし、機械的に行える作業を探索してみると、まず真っ先に思いついたのが「項目書作成」です。
ここで頼れるのがGoogle Apps Script(GAS)。
細かい手順や期待結果までを含むフルセットを作るのではなく、詳細化された観点をもとに項目書を転記するイメージで進めることにしました。
例えば「画面表示確認」の観点を以下のように整理し、オーソドックスな形の項目書にしたいとなった場合。。。
リクエスト設定
└画面表示
└レイアウト確認
部品表示順序
└日にち
時刻+リクエスト範囲
└画面部品
└カレンダー(60日前~Today)
└時刻選択プルダウン(時・分)
簡単なGASであれば生成AIがサクッと実行してくれると聞き、試してみることに。
お試しに、「シートAからデータをシートBに転記し、その後に空セルを上位のセルで埋める処理を行うGASを作成してください」と入力してみました。
AIは確かにスクリプトを提示してくれましたが、実際に動かしてみると「こういうのじゃないんだよなぁ…」と感じる結果に。
何度か指示内容を細かくして再試行してみたものの、満足のいく結果は得られませんでした。
そこで、指示内容を見直してみると、要件が曖昧だったことに気づきました。
やはり自然な話し言葉でのお願いは通じないですね。
最終的に指示内容をもっとスクリプト思考で組み立てたところ、ようやく想定通りのスクリプトが完成しました。
ポイントは、スクリプトの設計自体は自分で行い、実装だけをAIに任せるという考え方ですね。
トライ&エラーを繰り返しながらにはなりましたが、結果的に、自分がやりたかったスクリプトを作ることができました。
スクリプト脳で上手に指示を出せば、大きな手間も省けるものということを実感。
実践:仕様逆引き辞典の作成
サービスをリリースしてから早いもので4年半が経ちましたが、その間に数えきれないほどの新機能が追加され、既存の機能もアップデートされてきました。
これら全ての画面構成や機能の仕様は随時 Confluenceのwikiにまとめているので安心…と思いきや、ここに問題が。
なんだかんだでwikiのページ数は約130ページにもなります。
これでは、機能単位で勉強するには便利かもしれませんが、検索するとなるとかなり手間がかかります。
そこで「逆引き辞典を作る」というアイデアがひらめきました。生成AIを活用した逆引き辞典なら、この悩みも解消できるはず…
まず、生成AIにすべてのwikiを読み込ませてみることに。
ところが、URLを直接指定して読み込ませる方法には非対応でした。
いっそのこと、各wikiページをPDF形式でダウンロードし、それを全て生成AIにナレッジとして読み込ませてみました。
結果から言いますと、それはそれで正解だったようです。
生成AIがしっかりと情報を読み込んでくれて、逆引き辞典が無事に完成しました。
これにより、別の機能でも同一データを参照するケースも含め、正確な情報を一気に提示してくれるようになったのです。これには大いに助かりましたよ。
例えば、以下のような質問にもスムーズに答えてくれます。
ログインで失敗してしまうが、一体どうなっているのか?
なぜ特定の機能が使えないのか?
これにより、仕様や機能に関する疑問が一目で解決できるようになりました。
調べものの作業が効率化され、トラブルシューティングも楽々こなせるようになれば、時間の節約とストレスの軽減になります
ただ問題がないわけではないです…
毎回答えが異なることや、質問の仕方によって回答が変わることもあるので、プロンプトのコツをまとめる必要があります。
例えば以下のように同じようなことを質問しているつもりでも、回答が微妙に違ってきてしまいます。
例1:質問内容「ログインが失敗しちゃうけど、原因は?」
ログインが失敗する原因として考えられることは以下の通りです:
1. **企業コードに問題がある場合:**
-登録されていない企業コードを入力したとき。
2. **ログインIDに問題がある場合:**
- 登録されていないログインIDを入力したとき。
3. **パスワードに問題がある場合:**
- 登録されていないパスワードを入力したとき。
- パスワードの文字種別が1種類以下のとき。
- パスワードが5文字以下のとき。
- 使用不可な記号文字を入力していたとき。
4. **企業コードとユーザーコードの関連性に問題がある場合:**
- 企業コードとユーザーコードが紐づいていないとき。
これらのケースに当てはまると、ログインに失敗することがあります。
例2:質問内容「ログインが失敗する理由は?」
ログイン失敗の主な理由は以下の通りです:
1. OPSのcompaniesに登録されていない企業コードを入力した場合
2. OPSのusersに登録されていないユーザーコードを入力した場合
3. OPSのusersに登録されていないパスワードを入力した場合
4. 企業コードとユーザーコードが紐づいていない場合
5. パスワードの文字種別が1種類以下の場合
6. パスワードが5文字以下の場合
7. 使用不可な記号文字を入力していた場合
エラーが発生すると「企業コード/ログインID/パスワードに誤りがあります。」と表示されるので、
入力情報を再度確認してみてください。
このように、同じような質問しても、回答内容の粒度や分かりやすさに差が出てきたりします。
まとめと課題
生成AIを活用することで多くの効果が得られましたが、いくつかの課題も発生しました。
質問の仕方によって回答が異なる
ハルシネーションの問題
複数原因がある質問には対応しきれない場合がある
生成AIを効果的に使うためには、プロンプトの工夫や設計が重要です。
今後も試行錯誤を続け、さらに便利で効率的なツールに成長させていきたいと思います。
最後になりますが、品質管理を担うクオリティマネジメント部は、課題や難しい局面を、共感しながらともに成長・チャレンジしてくれる仲間を探しております!
少しでもご興味があれば、カジュアル面談も受け付けていますので、お気軽にお声掛けください。
■GO株式会社 採用情報