単体テストに結合テスト、アプリやゲーム、システム開発時には様々なテストが行われます。
テストするためにはテスト項目やらをずらっと作成しなければならず気が遠くなります。
さて最近モンキーテストという言葉を耳にしました。いったいどんなテストのことかみなさまわかるでしょうか?
モンキーテストとは
モンキーテスト(Monkey testing)とはテスト項目など設けず、ただテスト対象を触って使って動かしてみて、テストを行う方法です。
連打してみたり、文字入力を想定以上に入力してみたり(名前のところに30文字入力してみるとか)、特殊文字打ち込んでみたり、途中で戻ってみたり。
開発者の方が想定していないであろう動作をしてみてバグを探します。
似ているもので、ゲリラテスト(guerrilla test) 、アドホックテスト (ad-hoc test)、ゴリラテスト(Gorilla Test)などもあります。ゲリラとアドホックは同じものとして扱うこともあるようです。
ちなみにゲリラは不定期・不規則、アドホックは場当たり的なという意味です。
モンキーテストの起源
諸説あるようですが、MacがClassicだったころの1983年、MacWrite と MacPaint をテストされるためにモンキーテストが行われました。
アプリを動かすために使えるメモリ数が少なく、どういう状況でクラッシュするのかテストするためにSteve Cappsさんは、「The Monkey」というプログラムを作りました。通常の人より早い動作でランダムにキーを叩き、ランダムにマウスを動かしランダムにクリックします。
チームはその後、The Monkeyを特定のイベントやらを発生させたりできるようにして、効率的にテストしていったそうな。The Monkeyが書いた絵なんかを見て楽しくもあったけど、修正が進むにつれThe Monkeyでは原因がつきとめづらくなっていったそうです。
と、The Monkey がモンキーテストの起源とも言われています。
モンキーテストの良し悪し
長所と短所は何にでもあるのですね。
良い点
- 新しいバグが見つかる (テスト項目のない場所も触れることがあるため)
- 実行が簡単 (そんなに難しいことをするわけではない)
- スキルは必要いらない
- 低コスト(テスト項目を作ったりする必要なし)
悪い点
- バグを再現できないことがある(手順もなく作業していて起こるので原因不明になる)
- テストの精度が低い (テスト項目があいまい)
- 正確性を求めるなら技術も必要
- バグが少なく時間もかかる(効率が悪い)
モンキーテストの種類
モンキーテストにも種類があるようです。松竹梅のような違いでしょうか。
Dumb monkey test (ダムモンキーテスト / 間抜けな猿テスト)
- テスターは開発などの知識はない
- 入力が有効か無効か知らない
- テストの有効性に保証はない
- Dumb monkeyではなくIgnorant monkeys (無知な猿)とも呼ばれます
Smart monkey test (スマートモンキーテスト / 賢い猿テスト)
- テスターはアプリやシステムの知識がある
- テストに有効な入力を行える
Brilliant monkey test (ブリリアントモンキーテスト / 優秀な猿テスト)
- テスターはユーザーがどのように使用するか考慮しながらテストできる
- バグの発生を再現できる確率が上がる
どうせならブリリアントな猿としてテストを行えるようになりたいものです。
以前働いていた会社では、小さい子供たちも触れるような展示施設にちょっとしたソフトを収める際は、モンキーテストを行ってバグ出しを行いました。子供たちは大人が思っていないことをしますからねぇ。
個人的には、開発者がBeta版を公開するのもモンキーテストを実施しているようなものなのかなと思ったりしました。
参考サイト:http://tryqa.com/what-is-monkey-testing-advantages-and-disadvantages/
参考サイト : https://www.guru99.com/monkey-testing.html
モンキーテストの言葉を知った今となれば「モンキーしといて」と言われても対応できますね。