4つの生成系AIで試験問題を作って比較してみた

## 背景
　最近自動テストに興味を持っているため、ISTQBの資格であるテスト自動化エンジニア（TAE）を受けたいと考えています。この資格は日本では受けられないと思っていたのですが、日本の協会であるJSTQBで受けられないだけで、ISTQBで申し込めば自宅で受けられそうでした。（なお日本語はサポートしていないので英語で受ける必要があります。）
　私は基本的に①教科書は読まずに問題を解く②間違った問題を理解するために教科書を読む、といった形で理解を深めていくタイプなので大量の問題が欲しい！なら生成系AIに生成させよう！ということでやってみました。

## やりたいこと
生成系AIを使って問題を量産したい。
資格試験は難易度が上がるほど情報を得るのが難しくなったり、値段が爆上がりしたりする。生成系AIで問題が生成できれば今後の勉強にも流用できますし、間違ったときに解説をAIに任せやすいはず。

## やったこと
 生成系AIにTAEのシラバス1章のテキストとサンプル問題3問を渡して問題を生成してもらいました。
### ルール
* 質問は2回まで。1回目の質問に対する回答で微妙な点を1回だけ指摘する。 
* 生成する問題は4択問題（TAEがそうだから）
### 使用した生成系AI
* ChatGPT 3.5
* Perplexity
* Gemini
* Bing
### 入力
* TAEのシラバス1章（11502文字、186行）
* サンプル問題3問（1996文字、23行）
### 出力サンプル
```
Question #1
（問題）
テスト自動化の目的ではないものは次のうちどれですか?
a) トータルテストコストの削減
b) テスト効率の向上
c) テストサイクルに必要な時間の増加
d) テスト実施期間の短縮
1つ オプションを選択します。

（正解）
c

（問題を作る際に参考にしたシラバスの記載内容）
テスト自動化の目的には次のようなものがあります。
・テスト効率の向上
・より幅広い機能をカバー
・トータルテストコストの削減
・手動試験では不可能な試験を行う
・テスト実施期間の短縮
・ テスト頻度の増加/テストサイクルにかかる時間の短縮
```
※「問題を作る際に参考にしたシラバスの記載内容」は私が勝手にGoogle翻訳しています。
　試験を受ける際は英語なので、シラバスはあえて翻訳してもらいませんでした。

## 結果
### 全体
||ChatGPT|Perplexity|Gemini|Bing|
|:-----------|:-----------|:-----------|:-----------|:-----------|
|生成した問題数|3|2|8|2|
|フォーマットに即した回答|〇|〇|×|△|
|問題の正当性|〇|△|△|×|
|問題の難易度|×|△|△|〇|
|1回目の回答に対する指摘|記載が不足している|記載が不足している|フォーマットとあっていない|問題が誤っている|

### ChatGPT
生成した問題は以下です。良くはない。
1回目はシラバスの記載がなかったので訂正してもらいました。
* シラバスの内容と問題があっていない
* 書いていることはあっているがだれでも解ける。選択bとか戦略の欠如が成功要因のわけがない。
```
（シラバスの記載内容）
テスト自動化フレームワーク (TAF)
使いやすく、十分に文書化され、保守しやすいテスト自動フレームワーク (TAF) は、テストを自動化するための一貫したアプローチをサポートします。

（問題）
次のうち、テスト自動化プロジェクトの成功要因はどれですか？
a) ソフトウェアエンジニアの関与の不足
b) テスト自動化戦略の欠如
c) 旧式のテストスクリプトのメンテナンス
d) 一貫したテスト自動化アーキテクチャ
1つ オプションを選択します。

（正解）
d
```

### Perplexity
生成した問題は以下です。悪くない。しかしよくもない。
1回目はシラバスの記載が最初の1問だけしかなかったので訂正してもらいました。
* シラバスと問題の内容が違う。
* 問題が妥当か微妙。テスト環境が必須じゃないことがあるのだろうか。ただこれぐらい悩ましい問題も実際に出る気がする。
* 以下の問題以外にもう一つ生成されたが、知識なくても解ける残念な問題。
```
（シラバスの記載内容）
テスト自動化戦略
SUT の保守性と一貫性に対処する、実用的で一貫したテスト自動化戦略。

（問題）
テストウェアの必須要素は何ですか？
a) テストケース
b) テスト環境
c) テストデータ
d) テスト実行
1つ オプションを選択します。

（正解）
a
```
### Gemini
生成した問題は以下です。微妙。cは重要だけど、戦略の話ではない。
最初に生成したときは選択問題ではなく自由記述の問題だけだったので訂正させましたが、2回目も選択問題は1問だけでした。
* シラバスのどの部分から持ってきたかが適当
* 10問生成してもらったが、フォーマットに即したのは以下の1問だけ。ほかは選択問題でないのがほとんど。ほかの選択問題は質もよくない。
* 他の生成系AIと比べて生成してくれた量はかなり多い
```
問題:
以下のうち、優れたテスト自動化戦略の重要な要素ではないものはどれですか？
a) 自動化の明確な目標と目的を定義すること
b) 適切なテスト自動化ツールとフレームワークを選択すること
c) 構造化された、保守可能な、再利用可能なテストスクリプトを書くこと
d) テスト自動化を継続的インテグレーションとデリバリー (CI/CD) パイプラインに統合すること
Select ONE option.

正解: d)

参考にしたシラバスの内容:
Test Automation Strategy
```

### Bing
生成した問題は以下です。ダメでした。
最初に生成されたのが間違っていたので訂正させたのですが、次に生成されたものも間違っていました。
* 問題と正解が正しくないと思う。自己文書化されている必要があるのはテストツールであってSUTではないはず。「TAAは学習性を持つように設計されている必要がある」は適切なはず。
* 「問題を作る際に参考にしたシラバスの記載内容」が問題とあってない。
```
（問題）
重要な技術的成功要因として、どれが適切ですか?
a) TAAは学習性を持つように設計されている必要がある
b) TAAはすべての手動テストを自動化できる能力をサポートする必要がある
c) SUTは自己文書化されている必要がある
d) GUIの相互作用とデータはグラフィカルインターフェースと結合されている必要がある
1つ オプションを選択します。

（正解）
c

〇問題を作る際に参考にしたシラバスの記載内容
テスト自動化戦略
保守性と一貫性を実現する実践的で一貫したテスト自動化戦略SUTの。
テスト自動化戦略を新旧両方に同じように適用することはできない可能性がある
SUT の一部。自動化戦略を作成するときは、自動化のコスト、メリット、リスクを考慮してください。
それをコードのさまざまな部分に適用します。
自動テストを使用してユーザー インターフェイスと API の両方をテストすることを考慮する必要があります。
結果の一貫性をチェックする場合。
```

## 結局
間違っている問題が多いし、間違っているかどうかも判断がつかないとさすがに使い物にならないので、以下の文章を加えて難易度を下げ、根拠となるシラバスを提示するようにしました。
```
問題はシラバスに即した形で出してください。例えばシラバス記載の一部を穴抜けにして出すとか、シラバスに4つ列挙されているうちの1つを間違った回答にして出すとか。
また「問題を作る際に参考にしたシラバスの記載内容」に記載されている内容を読めば、確かにその正解が正しいということが客観的にわかるようにしてください。
```
### 結果
ChatGPT：難易度が低いが正しくて、シラバスの参照も正しい
Perplexity：なんか回答返ってこなくなった・・・
Gemini：フォーマット合わせないし、シラバスの参照も適当
Bing：問題が間違ってる

### ChatGPTの回答
```
Question #1
提供されたシラバスによれば、テスト自動化の目的の1つは何ですか？
a) トータルテストコストの増加
b) テスト効率の低下
c) テスト効率の向上
d) テスト実施期間の延長
[1つ] オプションを選択します。

(正解)
c

〇問題を作る際に参考にしたシラバスの記載内容
Objectives of test automation include:
・ Improving test efficiency

Question #2
シラバスによれば、テスト自動化アーキテクチャ（TAA）の重要な成功要因は何ですか？
a) TAAは保守性、パフォーマンス、および学習性のために設計されている必要があります
b) TAAはすべての手動テストの自動化をサポートする必要があります
c) SUTは自己文書化する必要があります
d) GUIの相互作用とデータは、グラフィカルインターフェースから切り離されている必要があります
[1つ] オプションを選択します。

(正解)
a

〇問題を作る際に参考にしたシラバスの記載内容
Test Automation Architecture (TAA)
The Test Automation Architecture (TAA) is very closely aligned with the architecture of a software product. It should be clear which functional and non-functional requirements the architecture is to support. Typically this will be the most important requirements.
Often TAA is designed for maintainability, performance and learnability.

Question #3
シラバスによれば、テスト自動化の制限は何ですか？
a) 全ての手動テストが自動化できない
b) テスト自動化は手動結果しか確認できない
c) テスト自動化は探索的テストの代替となる
d) テスト自動化は一貫してテストを実行できない
[1つ] オプションを選択します。

(正解)
a

〇問題を作る際に参考にしたシラバスの記載内容
Limitations of test automation include:
・ Not all manual tests can be automated
```

## 感想
* ちゃんとした難易度の問題を生成するのは現時点では難しそう
* 固い文章読むのが苦手でクイズ形式にしてくれた方が覚えやすい私みたいなタイプにはChatGPTの生成内容は有効かもしれない
* いろんなAIに聞くよりもChatGPTに聞いてもっとやり取りを繰り返して精度を上げたほうがよいのかもしれない