モンキーテストって何をすれば良いのだろう…?
新卒で入社して、部署に配属されてから数か月。
突然当時の部長から、「○○サイトのモンキーテストをやってくれない?」と言われました。
モンキーテスト? 猿…なにそのテスト?と思った記憶が今でも残っています。
実際に説明を受けてURLを渡された後、いざやってみようと思っても、そもそも何のサイトなのか? どんなページが存在するのか? どんな機能をテストする必要があるのか?
新卒だったからという理由もありますが、こんな作業で良いのだろうかと疑問に思いながら、適当にポチポチ押していました。
※モンキーテストは、何も知らない一般ユーザーが予期せぬ操作をしてバグが発生しないか、全体をチェックする意図があるので、やっていることは正しかったと思います。
ただし、作業者一人を拘束して無数の操作を永遠と試させるのは、工数がもったいない…
そろそろAIでテスト自動化できるのでは? と思い、今回調査してみました。
AIにブラウザを操作させるには!
現在のLLM(ChatGPTやGeminiなど)は、指示に対して考えて回答を生成することができても、当然ブラウザを操作することはできません。
そこで! 今回もMCPサーバーを使用して、LLMにブラウザを操作する手を付与したいと思います。
Microsoft Playwright MCPサーバー
Microsoftが提供しているブラウザ自動化フレームワーク(Playwright)を使用しました。
このツールはテストシナリオとなるコードを用意しておくことで、シナリオ通りに自動でブラウザを操作することができます。
主に、end-to-endのテストやページのスクレイピング、RPAなどに利用することができます。
そんなPlaywrightをMCPサーバーとして使用することで、AIにシナリオとテストコードを用意させて自動でテストを実施させようというわけです!
こんなイメージです。
テスト環境の用意
イメージしやすいので、単体テスト寄りの検証になりますが、ローカルで下記のようなログインサイトを用意しました。
画面
- ログイン画面
- ログイン成功画面
機能
- ログイン認証
- メールアドレスバリデーション
ログイン機能の自動テスト開始!
LLMに命令するプロンプトは以下の通りです。
あなたはモンキーテストのスペシャリストです。
このサイトはログインページ(@http://192.168.170.253:8080/index.php )とログイン成功ページ(@http://192.168.170.253:8080/success.php )の2つがあります。
ログインするためのメールアドレスは「yamada_taro@tenda.co.jp」でパスワードは「test123」です。
今回あなたはモンキーテストのテスト実施者として、このサイトの認証機能が問題なく動作しているか確認して欲しいです。
観点としてはメールアドレスのバリデーションとDBに保存されているメールアドレスとパスワードでの認証が適切に行われていることです。
Playwright MCPサーバーを利用してサイトにアクセスし、問題が無いことをテストしてください。
テスト結果はスクリーンショット取得してください。
また、どのような観点やメールアドレス、パスワードでテストを実施したか、最後にリストアップしてください。
※解説のため結果は分けて紹介していますが、全て一回のプロンプトで実施された内容になります。
画面アクセス検証
まずは、http://192.168.170.253:8080/index.php にPlaywrightでアクセスして、画面が正常に表示されることを確認しています。
テスト1: 正常な認証(有効なメールアドレスとパスワード)
| 項目 | 値 |
|---|---|
| メールアドレス | yamada_taro@tenda.co.jp |
| パスワード | test123 |
ログインボタンを押下後、正常にログインが成功したことを確認できています。
テスト2: 不正なメールアドレス形式のテスト
| 項目 | 値 |
|---|---|
| メールアドレス | invalid-email |
| パスワード | test123 |
ログインボタンを押下後、バリデーションがかかっていることを確認できています。
テスト3: 存在しないメールアドレスでのテスト
| 項目 | 値 |
|---|---|
| メールアドレス | nonexistent@example.com |
| パスワード | test123 |
ログインボタンを押下後、認証エラーが発生していることを確認できています。
テスト4: 正しいメールアドレス、間違ったパスワード
| 項目 | 値 |
|---|---|
| メールアドレス | yamada_taro@tenda.co.jp |
| パスワード | wrongpassword |
ログインボタンを押下後、同じく認証エラーが発生していることを確認できています。
テスト5: 空のフィールドでのテスト
未入力でログインボタンを押した時に、JavaScriptで入力必須のバリデーションがかかっています。
テスト6: SQLインジェクション攻撃のテスト
| 項目 | 値 |
|---|---|
| メールアドレス | ' OR '1'='1' -- |
| パスワード | anything |
ログインボタンを押下後、適切にブロックできていることを確認できています。
※作った時はSQLインジェクションのこと考えてなかったので、テストしてくれて助かります!
モンキーテスト結果まとめ
モンキーテストを完了しました。以下が実施したテストの詳細です:
🔒 テスト実施結果概要
認証機能はすべて適切に動作しており、セキュリティ上の問題は発見されませんでした。
📋 実施したテストケース一覧
1. 正常系テスト
- メールアドレス: yamada_taro@tenda.co.jp
- パスワード: test123
- 結果: ✅ ログイン成功 - success.phpに正常遷移
2. メールアドレス形式バリデーションテスト
- メールアドレス: invalid-email
- パスワード: test123
- 結果: ✅ 「メールアドレスの形式が正しくありません。」エラー表示
3. 存在しないメールアドレステスト
- メールアドレス: nonexistent@example.com
- パスワード: test123
- 結果: ✅ 「メールアドレスまたはパスワードが違います。」エラー表示
4. 間違ったパスワードテスト
- メールアドレス: yamada_taro@tenda.co.jp
- パスワード: wrongpassword
- 結果: ✅ 「メールアドレスまたはパスワードが違います。」エラー表示
5. 空フィールドテスト
- メールアドレス: (空)
- パスワード: (空)
- 結果: ✅ 適切なエラーハンドリング
6. SQLインジェクション攻撃テスト
- メールアドレス: ' OR '1'='1' --
- パスワード: anything
- 結果: ✅ 攻撃をブロック、「メールアドレスの形式が正しくありません。」エラー表示
🛡️ セキュリティ評価
- 入力バリデーション: メールアドレス形式チェックが適切に実装されている
- 認証機能: DB認証が正常に動作し、不正なログイン試行を適切に拒否
- SQLインジェクション対策: 悪意のある入力が適切にブロックされている
- エラーハンドリング: 情報漏洩を防ぐ適切なエラーメッセージ表示
✅ 総合評価
このWebアプリケーションの認証機能はセキュリティ要件を満たしており、本番環境での使用に適していると判断されます。すべてのテストケースで期待通りの動作が確認できました。
素晴らしい…!
まとめ
今回はPlaywright MCPサーバーを使用して、AIにブラウザで自動テストを実施させる検証を行いました。
結果、自力でテストケースを考案し、各種テストを実施した後に、テスト結果をまとめて出力するまで完璧に実施してくれました。
画面キャプチャも取得できて手元に残るので、テストエビデンスとしてお客様に提出できそうなクオリティです。
今回の検証は小規模なテストでしたが、プロンプトを数行書くだけでここまで丁寧にテストを行ってくれるので、テストケースもテストコードも単体テスト仕様書も不要になる未来が見えてきたなと感じました。
これが実用化できれば、プログラムを書く以上に大切なテストの工数を削減できるので、ぜひシステム開発にAIをどんどん取り入れていきたいと考えております。








