ソフトウェアテストの中には大きく分けて、スクリプトテスト(scripted testing)とアンスクリプトテスト(unscripted testing)があります。
要はテストケースを作成するかしないかの違いです。ここではunscripted testingであるモンキーテストについて深堀りし、アドホックテストとの違いについて解説していきます。
モンキーテストとは?
モンキーテストとは、ユーザーの想定しない操作や無作為な入力を行い、ソフトウェアの予期しない動作やクラッシュを検出するテスト手法です。
そのため、事前にテストケースを作成しないで実施をするunscripted testingの一つに分類されます。
また、世界版のwikipedia(https://en.wikipedia.org/wiki/Monkey_testing)によると、モンキーテストの中でも以下の2種類に分けられます。
- スマートモンキーテスト(smart monkey)
- ダムモンキーテスト(dumb monkey)
要は「賢い猿がやるか」「間抜けな猿がやるか」の違いです。
スマートモンキーテスト(賢い猿が行う)は、アプリやシステムへの一般的な事前知識を持ち、自分が今何をしているか何が必要かを認識し、システムを壊す想定で操作し、出てきたバグを報告します。
具体的な操作としては、画面の空白部分をたたいたり、環境依存文字をひたすら入力したり、ランダムにボタンを押してみたり…などです。
一方、ダムモンキーテスト(間抜けな猿が行う)は、アプリやシステムについての一般的知識や仕様の理解がなく、行う操作について有効無効の分別もつかず、自分が今何をしているかも認識できていない状態で操作します。
ダムモンキーテストの場合、スマートに比べ発見できるバグは少ないですが、重要なバグを発見することができるという特徴があります。
モンキーテストとアドホックテストとの違い

モンキーテストと似たテストで、「アドホックテスト」があります。
モンキーテスト同様に事前にテストケースを用意せずに行うテストです。
モンキーテストとアドホックテストの大きな違いは、実施者のそのアプリケーションに対する見識の深さの違いです。
モンキーテストの場合、そのアプリケーションについてよく知らない人が行うことが多いですが、アドホックテストの場合はそのアプリケーションのことを理解している開発者やテスターが行います。
そのため、モンキーテストでは通常はしないような操作を完全にランダムでテストし、アドホックテストでは仕様を考慮した上で思い付きでのテストを行います。
モンキーテストのメリット
モンキーテストのメリットとしては、既成概念にとらわれないバグを見つけることができるという点です。
前提知識が何もわからない人に操作してもらうと、思わぬバグが出てくることがあります。
また、テストをスクリプト化(テストケース化)しないので実行までに時間がかからない、テストに精通した人でなくとも実行可能という点もメリットとして挙げられます。
モンキーテストのデメリット
モンキーテストのデメリットとしては、バグがあまり見つからないことです。
また、バグが見つかったとしても再現するのが難しく、解析が困難で時間がかかる場合があります。
「なんか出てきた…」というバグは、起票ができないので開発者側との連携に時間もかかります。仮に(操作方法不明という形で)起票できたとしても、開発者も再現できないのでどう修正すればいいかわからないという事態に陥ります。
そのため、モンキーテストを実施する際は、詳細なログの取得やクラッシュレポートの仕組みをあらかじめ整備しておくことが重要です。あわせて、モンキーテスト単体ではなく、シナリオベースのテストや機能テストと組み合わせて実施することで、品質向上に効果的な補完的手法として活用できるでしょう。
まとめ
モンキーテストは、テストケースを用意せず、無作為な操作によってソフトウェアの予期せぬバグを検出するunscripted testingの一種です。スマートモンキーとダムモンキーに分類され、実施者の知識の有無によりテストの性質が異なります。
アドホックテストとは一見似ていますが、実施者のアプリケーション理解度や記録の有無が異なります。
モンキーテストは、実行が容易でバグの思わぬ発見が期待できる一方、バグの再現が困難で分析に時間がかかるなどのデメリットもあります。
ログ取得などの事前準備や、他のテスト手法との併用が有効です。
当サイトでは、テスト技法を学びたい方、アジャイル開発やマイグレーションのテスト手法について知りたい方、テストアウトソーシングサービスに興味のある方へ、ダウンロード資料を多数ご用意しております。ぜひダウンロードいただき、資料をご活用ください。


