ChatGPT!テスト設計できるのかい?できないのかい?どっちなんだい!
(画像=Supatman/stock.adobe.com)

はじめましてTMです。私は普段ユーザー受入テストの設計、実装、実施まで一通り行う業務を担当しています。

この記事では、テスト分析・設計といったフェーズで、Chat GPTがどの程度活用できるのか実際に試したプロンプトと、得られた回答を紹介したいと思います。

AIにテスト設計をさせようと思った理由

  • 生成AIであるChat GPTを活用することでテスト分析・設計が楽になるのでは?
  • 人間が考えた事と同じ事ができるか?

今回AIを使って行なったこと

  • テスト分析において人間が抽出したテスト要素と同じレベルでAIがテスト要素を抽出できるかの検証
  • 人間がテスト設計し、同じようなアウトプットをAIが出力できるかの検証

ChatGPTがテスト分析・設計できるのか?できないのか?について先に結論を申し上げますと、今回の検証では分析はある程度上手くいきましたが設計では微妙な結果になりました。

上手くいったところだけ紹介したいところですが、上手くいかなかったところも参考になればと思います。

目次

  1. 環境
  2. テスト分析・設計をおこなう対象
  3. テスト分析において人間が抽出したテスト要素と同じレベルでAIがテスト要素を抽出できるかの検証
    1. テスト要素の抽出(人間)
    2. テスト要素を抽出していただく(AI)
  4. 要素の抽出において人間と同レベルの結果が得られたか?
  5. 人間がテスト設計し、同じようなアウトプットをAIが出力できるかの検証
    1. テスト観点を考える(人間)
    2. テスト観点を考えていただく(AI)
    3. 人間と同じような設計アウトプットが得られたか?
    4. まとめ
  6. おわりに

環境

SlackGPT(API)

AGESTではSlack経由でChatGPTのAPIを利用できる環境(SlacGPT)が提供されているので、こちらを利用しています。

API版はWeb版と異なりモデルのトレーニングや改善には原則使われないサービスです。

API data usage policies

テスト分析・設計をおこなう対象

AIにテスト分析・設計をおこなってもらう対象として、架空のECサイトのコンテンツ横断型ポイント還元キャンペーンを設定しました。

〇開催期間:7月25日(火)17:00〜8月7日(月)23:59

〇キャンペーンへの参加方法:

・キャンペーンに参加するためには、エントリーが必要です。

・ログイン後、特設ページ内のエントリーボタンからエントリーができます。

・キャンペーンの開催期間中に発生した購入(サービスご利用)であれば、エントリー前の購入(サービスご利用)もキャンペーンの対象になります。

〇キャンペーン内容:

①ポイント倍率最大50倍!ABCのサービスを複数ご利用でポイントアップ

2サービス以上のご利用でポイント倍率が15倍になるほか、3サービス以上のご利用でポイント倍率が5倍ずつ上昇します。期間中9サービス以上ご利用でポイント倍率が50倍になります。

※キャンペーン期間中に1サービスあたり500円(税込)以上のご利用が対象になります。

※ポイント倍率アップに最適な商品として、500円(税込)で販売する商品も多数ご用意しています。

②土日限定!ポイント倍率+10倍

「ABCポイント還元祭」期間中の土日にサービスをご利用いただくことで、ポイント倍率がプラス10倍になります。

※対象期間:7月29日(土)、7月30日(日)、8月5日(土)、8月6日(日)

③ABCゴールド会員限定!ポイント倍率+5倍

ABCゴールド会員限定で、ポイント倍率がプラス5倍になります。

※キャンペーン期間中にABCゴールド会員に登録していて、かつ還元ポイントの集計日である9月15日(金)までゴールド会員に登録していることが条件です。

※キャンペーン期間中から集計日までに一度でも解約された場合は、集計日にABCゴールド会員に登録していてもポイント付与の対象外とします。

※キャンペーン期間中であってもABCゴールド会員登録前の購入分は、本施策のポイント付与対象外になります。

④3日間限定!対象カード決済によるポイント還元

8月1日(火)~8月3日(木)の3日間限定で、対象カードによる決済額の合計に応じたポイント還元を行います。

【ポイント還元率】
・10,000円以上30,000円未満の利用で8%還元
・30,000円以上50,000円未満の利用で10%還元
・50,000円以上の利用で12%還元

〇対象サービス一覧:
・ABCトラベル
・ABC保険
・ABC外国語
・ABC証券
・ABCミュージック
・ABCカーシェア
・ABCTV
※レンタル・購入のみ対象、月額料金は対象外
・ABCアミューズメント
・ABC通販
・ABCコミックレンタル

〇注意事項:

※クーポンを利用した場合は、クーポン利用後の決済額を対象として還元ポイントを計算します。

※ABC保険での取り扱い商品の中には、一部キャンペーン対象外の商品があります。

※その他の注意事項につきましては、特設ページをご確認ください。

テスト分析において人間が抽出したテスト要素と同じレベルでAIがテスト要素を抽出できるかの検証

テスト要素の抽出(人間)

ChatGPT テスト設計

テスト分析では、まずステークホルダーにヒアリングして何を見て欲しいのか確認します。

以下の回答を得られたとします。

  • サービス横断しているので、複数サービス利用するケースを見てほしい
  • 還元するポイントが増減するので間違えていないか確認してほしい

上記を念頭にしたテスト分析ではポイントに関する要素が重要と判断しました。

この後のテスト設計に繋げるためにも、まずはポイントに関する要素をテスト対象として抽出します。

  • 開催期間(期間外/期間内)
  • 参加有無(エントリーあり/なし)
  • 複数サービス利用(ポイント倍率最大50倍、2サービス以上15倍/3サービス以上で5倍ずつ上昇)
  • 最低利用金額(500円)
  • 曜日(土日はプラス10倍)
  • ゴールド会員の倍率(会員はプラス5倍)
  • ゴールド会員の期間(キャンペーン期間中の入会/解約)x(サービス利用)
  • 対象カードの還元(8月1日(火)~8月3日(木)の3日間はABC 対象カードポイント還元(8%/10%/12%))
  • 対象サービス数(10サービス)
  • クーポン(割引後の金額と最低利用金額の考慮)

テスト要素を抽出していただく(AI)

ChatGPT テスト設計

今回は要素の抽出なので、結論などは記載して欲しくないため以下のようなプロンプトを実行します 参考URL

ChatGPT テスト設計

Chat GPTの回答

ChatGPT テスト設計

続いてポイントに関する要素を抽出してもらいます、いくつかプロンプトを試したところ以下のプロンプトで求めるものに近い結果が得られました。

ChatGPT テスト設計

Chat GPTの回答

ChatGPT テスト設計

要素の抽出において人間と同レベルの結果が得られたか?

Chat GPTの回答にあって私が抽出した要素になかったものが以下になります。

  • 一部キャンペーン対象外の商品に対する考慮
  • ポイント倍率アップに最適な商品として、500円(税込)で販売される商品がある

「一部キャンペーン対象外の商品」については、重要なテスト要素となりえるため考慮すべきでした。 次に「ポイント倍率アップに最適な商品」については、最低利用金額500円で考慮しており、特段わけて考える必要はないと判断しました。

逆に人間が抽出したものでAIが抽出できなかったものはありませんでした。

今回はある程度プロンプトがうまくいった成功例と言えます。

テスト分析時の要素の抽出において、プロンプトを工夫すれば有用な回答が得られました。

また、今回工夫した点は、ポイントに関する要素に絞った事です。

以下のような要素の絞り込みをしていないプロンプトの場合

ChatGPT テスト設計

人間があまり重要ではないと考えた要素(参加方法)も抽出してしまいます。

ChatGPT テスト設計

人間がテスト設計し、同じようなアウトプットをAIが出力できるかの検証

テスト観点を考える(人間)

ChatGPT テスト設計

①複数サービス利用のポイントアップ

  • 複数サービス利用(ポイント倍率最大50倍、2サービス以上15倍/3サービス以上で5倍ずつ上昇)
  • 対象サービス数(10サービス)
利用サービス数ポイント倍率
10
215
320
425
530
635
740
845
950
1050

境界値分析を用いて、ポイント倍率がつくケースとつかないケースを確認する
同値分割を用いる(1~2の15倍UPグループ、2~9の5倍ずつUPグループ 9~10は上限到達グループ)
テストデータ:1,2,3,8,9,10
対象サービス(10)は最低1回は利用する
利用サービス数ごとにポイント倍率が正しいことを確認する

②土日のポイントアップ

  • 曜日(土日はプラス10倍)
金曜土曜日曜月曜
7/287/297/307/31
8/48/58/68/7

境界値分析を用いて、土曜日になる前後の確認を実施する
テストデータ:7/28 23:59:59、7/29 0:00:00、8/4 23:59:59、8/5 0:00:00
境界値分析を用いて、月曜日になる前後の確認を実施する
テストデータ:7/30 23:59:59、7/31 0:00:00、8/6 23:59:59、8/7 0:00:00
最初の土日と2回目の土日でポイント10倍であることを確認する(2回目で20倍になったりしない)
土日以外の曜日でポイントがプラス10倍になっていないことを確認する

③ゴールド会員のポイントアップ

  • ゴールド会員の倍率(会員はプラス5倍)
  • ゴールド会員の期間(キャンペーン期間中の入会/解約)x(サービス利用)
会員非会員
=+5倍対象=+5倍非対象

サービス期間中の入会

入会前入会後
=+5倍非対象=+5倍対象

ポイント付与日までの解約

解約なし解約あり解約後入会
=+5倍対象=+5倍非対象=+5倍非対象

境界値分析を用いて+5倍対象、対象外の7ケースを確認する

④対象カード決済のポイントアップ

  • 対象カードの還元(8月1日(火)~8月3日(木)の3日間は対象カードポイント還元(8%/10%/12%))
利用金額還元率
~9,999円0%
10,000円~29,999円8%
30,000円~49,999円10%
50,000円~12%

境界値分析と同値分割を用いて8%、10%、12%の還元率になる金額をテストする
テストデータ:9,999円、10,000円、29,999円、30,000円、49,999円、50,000円、50,001円

⑤条件適合性

  • 開催期間(期間外/期間内)
  • 参加有無(エントリーあり/なし)
  • 最低利用金額(500円)
  • クーポン(割引後の金額と最低利用金額の考慮)

コンディションとアクションなのでデシジョンテーブルで整理してみる

ChatGPT テスト設計

テストデータNo.1,3,4,5
No.1:クーポンを利用してポイント倍率UPされるケース
No.3:クーポンを利用したら金額が500円未満になってしまったケース(他条件は対象)
No.4:エントリーを忘れてしまったケース(他条件は対象)
No.5:対象期間前に利用してしまったケース(他条件は対象)

※今回はプログラムが処理される順序が不明なブラックボックステストを想定して、デシジョンテーブルの動作単位で整理はしていません。 そのうえで、ひとつの条件で対象外になるケースは各条件が想定どおり動作する確認のために必要と考えました。

テスト観点を考えていただく(AI)

ChatGPT テスト設計

AIには、先ほどAIが抽出した後に以下のプロンプトで指示をだしました。

ChatGPT テスト設計

Chat GPTの回答

ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計
ChatGPT テスト設計

7つのグループにわけてテスト設計してくれましたが、グループ2:ポイント倍率アップに最適な商品は、ポイント倍率アップに最適な商品として500円の商品が多数ラインナップされることであり、ポイントの増減の観点ではあまり有効とは思えません。

また、「開催期間」や「エントリーの有無」といった条件がどのグループにも現れていない結果になりました。

人間と同じような設計アウトプットが得られたか?

今回の設計アウトプットを比較すると下図のようになりました。

ChatGPT テスト設計

グルーピングについて

あまり有効ではない「グループ2:ポイント倍率アップに最適な商品」をグルーピングしています。また、人間が設計した場合は⑤条件適合性として複数条件をまとめてテスト設計していますが、(プロンプトを与えていないので当然ですが)個別の考慮にとどまっています。

考慮漏れ

要素で抽出した「開催期間」と「エントリーの有無」がなぜか欠落しました。

テスト技法について

AIのテスト設計では、7グループ中6グループでデシジョンテーブルが提案されています。

しかしながら、デシジョンテーブル技法は複数の条件のもと、それぞれの場合の振る舞いを整理するために活用する技法で、今回AIがグルーピングしてくれた単位では、条件が少なすぎて有効ではないと考えられます。

具体例として、AIがテスト技法にデシジョンテーブル(と同値分割)を提案したグループ1で、デシジョンテーブルを作成してもらいました。

グループ1に対するデシジョンテーブル作成のプロンプト

ChatGPT テスト設計

Chat GPTの回答

ChatGPT テスト設計

グループ1で作成してくれたデシジョンテーブルでは条件が「上限値未満」と「上限値超過」しかないので有効ではない結果となりました。

まとめ

今回の検証方法では、テスト分析では期待したアウトプットに近い結果が得られましたが、テスト設計では人間と同等のアウトプットは得られませんでした。原因は、テスト分析でAIが抽出した要素(グループ分け)をそのままテスト設計のインプットとした事です。

AIはあくまでプロンプトに従って結果を生成しているので、テスト分析の結果から、テスト設計に落とし込む過程で人間が考えた事をプロンプトに明確に指定する必要があると感じました。

ChatGPT テスト設計

おわりに

ECサイトの期間限定ポイント還元という、比較的わかりやすいシステムを対象にした今回の検証結果、いかがでしたでしょうか?
概要レベルで出してくれるアウトプットがそのまま使えそうじゃないか!?と飛びついて使用してみた生成AIですが、実際に活用しようとすると人間側の指示がかなり重要で、テスト分析やテスト設計といったフェーズ事に一気通貫で活用するのは難しい結果になりました。 フェーズごとに人間が介入して訂正する事を前提に考えると、テスト分析の結果はJSON形式などの人間にもわかりやすく、かつAIにも一定の形式になっていて加工しやすいデータ形式でアウトプットすることで、テスト分析からテスト設計への移行が楽になるかもしれません、うまく活用してQCD改善していきたいですね。

最後まで読んでいただき、ありがとうございました。

力こそパワー

【注目コンテンツ】
DX・ESGの具体的な取り組みを紹介!専門家インタビュー
DX人材は社内にあり!リコーに学ぶ技術者リスキリングの重要性
サービタイゼーションによる付加価値の創造と競争力の強化