生成AIでテストはどこまで自動化できるのか
言うまでもないが、近年のAI進化は著しい。生成AIといえばOpenAIのChatGPTの知名度が高いが、コードを扱うならAnthropicのClaudeも定評がある。
竹花氏はサンプルとして自社サイト「G-SAT(自動化ソリューション)」を対象に自動テストのためのPythonコードを生成AIに書かせてみた。竹花氏は「雑な指示でもいいテストを書いてくれたものの、品質担保に十分かというと疑問が残ります」と話す。
ソフトウェアテストで大事なことは(正確にはテスト分析やテスト設計と呼ばれる部分になるが、ここでは割愛)、いきなりテストを書くのではなく、何のためのテストか、どうやってテストするかを事前にきちんと検討するプロセスを踏むことだ。
そこでChatGPTに「テストの観点を教えて」と質問すると、UIテストでは「レスポンシブデザイン:各デバイスでレイアウトや表示が正常か」「リンクやボタンの動作:各ボタンが正しく機能し、ページ遷移が正常か」、機能テストでは「お問い合わせフォーム:フォームが送信でき、入力エラーの処理が正常か」、セキュリティテストでは「SSL証明書の確認:HTTP接続の設定が正常か」と回答できた。
そのまま「テスト設計をして」と依頼すると「テストケース1:各ページやセクションの表示確認。期待結果:画像やテキスト、ボタンが正しい位置に配置されている」などと回答した。さらに「テストケース(テスト計画)を書いて」と頼むと目的・手順・期待結果をきれいにまとめてくれた。今の生成AIはここまでできる実力を備えてきている。
竹花氏としては「これは僕らテストエンジニアが要らなくなるのではと震えるところですが、ただし十分かどうかの判断が必要です」と話す。正答を知る竹花氏だからこそ生成AIのアウトプットが正しいと判断できたものの、生成AIの提案が正しいか判断する必要があるということだ。また、いくら正しくてもスケジュールに制限があるなら、優先度の判断も必要になる。これはローコードやノーコードのサービスでも同様だ。AIであればハルシネーションのリスクも考慮しておく必要がある。
そのためテストでAIを使うのであれば「ブレストのように、アイデアの土台としてリストアップしてもらう。あるいは壁打ちのように、人間が考えた内容に対してフィードバックをもらうような使い方がいいのではないか」と竹花氏は言う。
最後に竹花氏はハサミとカッターに例えて次のように述べた。「目的は同じですが、状況により使い方は異なります。また安全性の観点もあります。カッターのほうが使いやすい状況でも、小さな子どもが使うならハサミを使わせることがあります。自動テストも同様で、状況に合わせて積み上げていくことがいいでしょう」