黒柴的ソフトウェアテスト考 #17

生成AIで、テスト項目を作成する(その3)

ソフトウェアテスト考#15、#16の続きである。
今回は、Copilotに質問し、生成されたテストケースを確認していこうと思う。

Copilot自身に質問したが、バージョンは回答してくれなかった。

申し訳ありませんが、私のバージョン情報を提供することはできません。ただし、私はMicrosoft Copilotとして、あなたの質問に答えたり、情報を提供したりするためにここにいます。何か他にお手伝いできることがありましたら、お知らせください。よろしくお願いいたします。😊

Copilot

Copilotを使用した人ならわかると思うが、会話のパターンは「厳密」を選択している。
次に、ChatGPT、Geminiに質問した内容と同じものを質問してみた結果が、以下のようになる。

test_cases = [
    # 第一勤務
    ("07:30", "07:30"),  # 勤務開始時刻
    ("12:00", "07:30"),  # 勤務中
    ("15:29", "07:30"),  # 勤務終了直前

    # 第二勤務
    ("15:30", "15:30"),  # 勤務開始時刻
    ("18:00", "15:30"),  # 勤務中
    ("23:29", "15:30"),  # 勤務終了直前

    # 第三勤務
    ("23:30", "23:30"),  # 勤務開始時刻
    ("03:00", "23:30"),  # 勤務中
    ("07:29", "23:30"),  # 勤務終了直前
]

Copilotは、テストケースの説明として、以下のように回答している。

以下に、入力値と期待値をペアにしたテストケースのリストを示します。これらのテストケースは、各勤務帯の開始時間、終了時間、および中間の時間をカバーしています。

Copilot

ソフトウェアテスト考#15、#16を見てきた人ならわかると思うが、このテスト設計で肝心なところは、日付を跨るケースを認識できているかということである。
そこで、会話を継続させて以下のように質問した。

このテストケースでは、日時を確認する際に日付を跨るケースが考慮されていないと思われます。 日付を跨るケースを追加してください。

追加の会話

結果は、以下のとおりである。

test_cases = [
    # 第一勤務
    ("07:30", "07:30"),  # 勤務開始時刻
    ("12:00", "07:30"),  # 勤務中
    ("15:29", "07:30"),  # 勤務終了直前

    # 第二勤務
    ("15:30", "15:30"),  # 勤務開始時刻
    ("18:00", "15:30"),  # 勤務中
    ("23:29", "15:30"),  # 勤務終了直前

    # 第三勤務
    ("23:30", "23:30"),  # 勤務開始時刻
    ("03:00", "23:30"),  # 勤務中
    ("07:29", "23:30"),  # 勤務終了直前

    # 日付を跨ぐケース
    ("00:00", "23:30"),  # 真夜中(前日の第三勤務)
    ("06:00", "23:30"),  # 早朝(前日の第三勤務)
]

やっつけ的に日付を跨るケースを追加しているのだが、入力値、期待値ともに日時となっていないため、このケースでは正しいテストは難しいと思う。特に0:00~7:29までの入力が、前日の23:30を期待値とする確認が重要である。
そのため、入力値、期待値に日付を含めるように会話してみた。

日付を跨るケースでは、時刻だけでなく、日付を入力値、期待値に含めてください。

追加の会話

結果は、以下のようになった。

test_cases = [
    # 第一勤務
    ("2024-06-15 07:30", "2024-06-15 07:30"),  # 勤務開始時刻
    ("2024-06-15 12:00", "2024-06-15 07:30"),  # 勤務中
    ("2024-06-15 15:29", "2024-06-15 07:30"),  # 勤務終了直前

    # 第二勤務
    ("2024-06-15 15:30", "2024-06-15 15:30"),  # 勤務開始時刻
    ("2024-06-15 18:00", "2024-06-15 15:30"),  # 勤務中
    ("2024-06-15 23:29", "2024-06-15 15:30"),  # 勤務終了直前

    # 第三勤務
    ("2024-06-15 23:30", "2024-06-15 23:30"),  # 勤務開始時刻
    ("2024-06-16 03:00", "2024-06-15 23:30"),  # 勤務中
    ("2024-06-16 07:29", "2024-06-15 23:30"),  # 勤務終了直前
]

Copilotは、以下のように回答している割には、直前の会話で追加した日付を跨るケースが消えている。

ご指摘の通り、日付を跨ぐケースでは日付も考慮に入れるべきです。以下に、日付を含むテストケースを追加しました。

Copilot

なんかできの悪い後輩を相手にしているような気分になってきたので、検証はここまでとした。

今回検証をしてみてわかったのは、やはり生成AIは使い方次第なのだと思う。
生成AIは、いわゆるビッグデータを一定の重みづけで集約して回答としているため、その重みづけを行うための入力が重要な要素の一つとなる。
使いこなせれば生産性を向上させることもできると思うが、適切な入力(質問)ができない場合は、誤った内容を回答することもある。
そのため、回答が正しいのか、誤ってるのかをきちんと判断できる人ではないと使いこなすのは難しいのではないか?
すなわち

「うそはうそであると見抜ける人でないと(掲示板を使うのは)難しい」

ひろゆき

ということは、生成AIにも当てはまる。
昨今、「生成AIを使用することで生産性の向上を」を訴えるビジネス系の記事も増えているが、生成AIの回答が常に正解であると思わずに、きちんと使いこなせるだけのスキルを持つことが重要であると感じた。

この記事が気に入ったらサポートをしてみませんか?