自然言語で操作を記述してE2E自動テストができる、はいいんだけど、
— Yoshiki Ito/伊藤由貴 (@yoshikiito) February 22, 2025
それで品質が担保できるというのは違うのよな
最近OpenAIの「Operator」などAIエージェントがブラウザの操作をしてくれるということで、「テスト自動化できるじゃん!」や「QAエンジニアはこれ使うべき」などのコメントが飛び交っているのを見ました。
ひとによっては「これはQAエンジニアの仕事がなくなるな」などと考えているようです。
これらの意見には正直懐疑的で、「そうはならんやろ」と思っていて、それが冒頭のつぶやきにつながっています。
人間が指示したシナリオや手順の妥当性と、操作の信頼性が気になる
もしAIエージェントによるブラウザ自動操作でなんらか「機能が正しく動作していること」などを保証しようと思うと、
- 人間がAIエージェントに入力したテストシナリオや操作が妥当なものか
- (仮に上記が妥当だとして)指示通りにAIエージェントが操作をしていることをどのように担保するのか
あたりが気になるところです。
シナリオの妥当性
これは別にAIエージェントに限らず人間がPlaywright等で自動化するときも同じです。そもそものテストの質が悪かったら自動化したとて効果は薄いよね、という話。
先の「QAエンジニアはAIエージェントを使って自動操作できるといいよね」という話は、良いテストシナリオを考えられる人が自動テストのコーディング等の手間を削減できるという意味では合っているように思います。一方で「AIエージェントが自動操作してくれるならQAはいらなくなる・仕事がなくなる」というのは間違いで、テスト自体は誰かが考えなければなりません。
テストケース考えるのもLLMにやらせればいいじゃん、は確かにそうなのですが、LLMが出してきたテストが求める品質(特性)に対して妥当かどうかは、結局人が介在しつづけるのでは・・・と思っています。素人なのでハズレるかもしれませんが。
操作の信頼性
仮に「必要十分なよいテストシナリオ」がリスト化できたとすると、それをAIエージェントに実行させればOKでしょうか。ここも、まだそれほど信頼してはいけない気がしています。
AIエージェントに渡すテストの記載粒度によるのですが、
- 粒度が細かい場合:人間がテストを書き下す際に誤りを含む可能性がある
- 必ずTrueになるアサートを入れてしまう、とか
- 粒度が荒い場合:AIエージェントの操作が毎回一定ではなく、確認観点が実行のたびに変化する可能性がある
のではないか、思っています。つまりAIエージェントが「指定の通り操作しました!」と言っていてもそれってほんとに?が信頼しきれない。
この点に関しては、たとえば自動テストコードの生成をAIエージェントにやらせる、というのが一つの解かも、と思いました。つまり、自然言語で書いたテストシナリオをPlaywrightなりなんらかのテストコードに変換するところをAIエージェントにやらせるイメージです。
Copilot等でも近いことはできるかもしれませんが、AIエージェントであれば実際にブラウザ操作してPassしたケースをコード化できそうなので、単純にLLMに生成させるよりも動作する可能性が高いのでは?と考えています。
AIエージェントに自動テストをさせて効果があるのは、物量で攻めるパターンでは
いつかマシンパワーでゴリ押しした、AIエージェントによる大規模探索的テストでなんとかする時代が来るのかもしれない、とは思う
— Yoshiki Ito/伊藤由貴 (@yoshikiito) February 22, 2025
モンテカルロ法で囲碁ソフト強くなったときみたいに
これは記事冒頭のつぶやきのつづきです。 AIエージェントにブラウザ自動操作させて何らかの機能が正しく動いていることを担保しよう、は厳しいと思っています。 一方で、AIエージェントを1000人分くらい並列に動かして、実ユーザーのようにサイトやシステム内を色々と触りまくるような「AIを使ったパワー系探索的テスト」なんかは意味があるかも、と考えています。
いわゆるゲームのデバッガーみたいに人をたくさん集めて壁に激突してもらう、みたいなアレに近そうです。
物量ではないですが、探索的テストにLLM活用できる論文とかもあったので、このあたりは色々調べてみますこれから。