ソフトウェアが仕様通りに動作するか確認したり、欠陥や想定外の動作を検出したりするのがソフトウェアテストです。顧客が望む品質を担保するためには、ソフトウェアテストの実施は不可欠となります。
そんなソフトウェアテストの手法の一つに「モンキーテスト」があります。
モンキーテストとは、事前にテストケースを用意せず、場当たり的に実施するテスト手法のことです。
本記事ではモンキーテストの概要と、効果的な実施方法やテスト実施のタイミングについてご紹介していきます。
1.モンキーテストとは?
モンキーテストとはソフトウェアテストの手法の一つです。
この章ではモンキーテストがどういったものなのか、他のテストとの違いについて解説していきます。
1-1 モンキーテストとは
モンキーテストは、事前にテストケースを用意せずに、その場の思いつきで行うテスト手法です。開発者が想定していない動作をテストすることによって、思いもよらない欠陥・不具合の検出につながります。
モンキーテスト誕生の経緯については諸説ありますが、そのうちの一つが1983年にアップルの「Macintosh」用ワープロソフト「MacWrite」とペイントソフト「MacPaint」で初めて実施されたという話です。
当時のMacintoshは、アプリを動かすために使えるメモリ数が少なく、どういう状況でクラッシュするのか調べる必要がありました。
そのために、アップル・コンピューター(現アップル)でMacintoshの開発に携わっていたスティーブ・キャップス氏は、人間よりも早くランダムにキーを叩き、ランダムにマウスを動かしてランダムにクリックするプログラムを製作。
このプログラムの名前が「The Monkey」で、モンキーテストの語源になったといわれています。
1-2 アドホックテスト・探索的テストとの違い
モンキーテストのように事前にテストケースを用意しないテスト手法はいくつかあります。それが「アドホックテスト」や「探索的テスト」です。
それぞれの違いは以下の通りです。
アドホックテスト
公式に定めたプロセス以外の方法で実施しますが、最低限の知識があるユーザーが使うことが前提となります。そのため、有効な文字列のみで行うなど、テスト内容に一定の制限があります。
JSTQBによる定義:
非公式に実施するテスト。公式なテストの準備をせず、実績のあるテスト設計技法を用いず、テスト結果も予測せず、毎回、テスト方法が変わる。テスト対象、非対象(機能一覧)
探索的テスト
全くランダムというわけではなく、経験・知見に基づいてテストを実施します。またテストの結果から再調査する箇所を決めて、再度テストを行うなど効率的にバグ・不具合を検出していきます。
JSTQBによる定義:
非公式なテスト設計技法の一つ。テストを実施する過程で、テスト担当者かテスト実施情報を活用しながらテスト設計をコントロールし、積極的に質の高い新しいテストケースを設計する。
モンキーテスト
当たり前の操作という固定概念がない人まで想定して実施します。経験・知見は必要ありません。テストで使う文字列や操作などに制限がなく、全くランダムに行われます。
JSTQBによる定義:
製品の使用法については全く考慮せず、広範囲の入力からランダムに選択し、ボタンをランダムに押すことでテストを行う方法。
2.モンキーテストの効果的な実施方法
実際にモンキーテストを実施する場合、開発者の想像の斜め上をいくような、通常ではまずしない操作をする必要があります。
ボタンの連打や2つのキーの同時押し、とにかくデタラメに、ひたすらキーボードを叩いてみたり、画面上の何もないところをマウスでクリックしたりすることは、まだ序の口です。
実際にあった事例として、200文字程度の入力項目に2万文字入れてみたところ、システムエラーが発生したということも。
このように、モンキーテストでは常識とはかけ離れた操作を試していきます。
そのため専門的な知識や技能は必要ありません。むしろ何も知らない人の方が適任で、想定するユーザーに近い属性の人に自由に触ってもらう方が良いともいえます。
ただし、モンキーテストは、必ずしもバグを発見できるというものではありません。
実施してすぐにバグを発見できるケースもあれば、逆に何時間続けても何も見つからないケースもあります。そのため実施する場合は、必ず事前に時間を決めておくと良いでしょう。
3.モンキーテストを実施するタイミング
モンキーテストは、テストケースを用意したテストをしっかり行った上で、プロジェクトの最終工程で実施するのが効果的です。
通常で想定できるエラーを十分に修正した後で、最後に念には念を入れて補足的に行うものなのです。他のテストをほとんど実施せずにモンキーテストだけを行うと、発生した不具合の切り分けが困難になるため、かえって非効率な開発工程になってしまいます。
一般的なアドホックテストを実施するプロジェクトや会社は、比較的多く存在する一方で、モンキーテストまで行っているケースは、それほど多くないのが現状です。エラーが起きても人がけがをするような大事には至らないソフトウェアや専門家だけが扱うような機器であれば、それでも一定の品質を担保できます。
しかし、老若男女を問わず幅広いユーザーをターゲットにしたソフトウェアや自動車のようにエラーが重大な結果を招くものに関しては、モンキーテストを実施する価値は十分にあるのです。
まとめ
モンキーテストとは、事前にテストケースを用意せずに、その場の思いつきでランダムに行うテスト手法です。
場当たり的に実施する点は、アドホックテストや探索的テストとも共通していますが、ある程度知識・経験に基づき実施していく両テストと違って、モンキーテストの場合は、常識とはかけ離れた操作を試していくため、知識・経験が必要になりません。
ソフトウェア開発においては、綿密な計画に沿ってしっかりとテストを重ねてきた上で、最後の一押しとしてモンキーテストを実施します。
それにより、ソフトウェアの品質を高めることができ、顧客満足度向上につながるのです。