モンキーテストとは?特徴・実施タイミング・実施時のポイントも
COLUMN
最終更新日:2023年12月19日 / 投稿日:2023年12月19日
モンキーテストは、あらかじめ定められたテストケースやテスト計画なしに、ランダムなデータや操作をシステムに送り込むテスト手法です。これにより、開発者が予期しないようなエッジケースや隠れたバグを発見できる可能性があります。
モンキーテストは、特に開発の後半段階で、システムの耐久性や予測不可能なユーザー行動による問題を発見するために役立つ手法です。
当記事では、モンキーテストとは何か、モンキーテストのメリット・デメリットなどについて分かりやすく解説します。
1. モンキーテストとは
モンキーテストは、ソフトウェアのテスト手法の1つです。特定の操作手順や機能を指定せずにランダムな操作を行うことによって、システムを試験します。
モンキーテストは、開発者が意図しないようなユニークなバグや問題点を発見できるため、システムの耐障害性を評価するのに役立ちます。開発初期のMacintosh用のソフトウェアテストで用いられたことからその名がついたとされ、ランダムなキー入力やマウス操作を自動化するプログラムが使用されました。一方で、モンキーテストと反対に、ユーザーの利用手順を想定して行うテストを「シナリオテスト」と呼びます。
1-1. モンキーテストとアドホックテストの違い
アドホックテストとは、テスト担当者が事前の準備をせずに、直感や経験に基づいて潜在的な問題が発生しそうなエリアに集中してテストを実施する手法です。「アドホック」という言葉は、ラテン語の「特別の」や英語の「その場しのぎ」といった意味です。
モンキーテストとアドホックテストは、いずれも正式なテストケースに基づかないテスト手法ですが、実施のアプローチには違いがあります。
アドホックテストは開発者の経験に基づいて、問題を探す目的で行われます。対して、モンキーテストは、目的を定めることなく、ランダムな操作を通じてシステムの耐障害性を試験します。ここでのランダムな操作は、テスト担当者の主観や予測を一切排除し、システムが不規則な行動や予期せぬ入力にどう対応するかを評価するために行われます。
要するに、アドホックテストは開発者の知見を活用し、特定の問題点を探るために行われるのに対し、モンキーテストは全くの無作為性に基づいてシステムの未知の弱点を探る手法です。
1-2. モンキーテストと探索的テストの違い
探索的テストとは、テスト実施者がシステムを確認しながらテストの実行手順を考えて、テストを実行し結果を報告する手法です。
モンキーテストと探索的テストも、ともに事前に詳細なテストケースを設計しないソフトウェアテストの方法ですが、目的は異なります。
探索的テストは、より構造化されたアプローチを取ります。テスト実施者がシステムの動作を観察しながら、リアルタイムで次のテストステップを決定し、必要なテストを動的に実施するのが探索的テストの手順です。探索的テストではテストチャーター(テスト目的を達成するための指針を設定するもの)などを用意し、テストの目的や範囲、観点をあらかじめ決定してからテストを進めます。
よって、探索的テストは、テスト実施者の判断力やシステムに対する理解が非常に重要です。システムの特定の部分を深く探り、問題を特定するためのスキルが要求されます。モンキーテストが無作為性に重きを置くのに対し、探索的テストはテスト実施者の専門知識とスキルに基づく、属人性が高いテスト手法です。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
2. モンキーテストを実施するメリット・デメリット
モンキーテストのメリットには、予期せぬバグの発見・ユーザビリティのチェック・自動化の容易さなど、さまざまなメリットがあります。デメリットも併せて、確認してみましょう。
2-1. メリット(1)テスト準備の作業が不要ですぐ着手できる
一般的なテスト手法では、テストケースの設計やテストデータの作成、テスト環境の構築など、実際のテスト実施に先立って多くの準備作業が必要です。
一方で、モンキーテストではこれらのプロセスが不要です。特定の事前知識や想定シナリオに基づかないため、テスト実施者はテストを直ちに開始できます。特に時間が制約されている状況や、迅速なフィードバックが求められる開発サイクルの中では、大きな利点となるでしょう。
2-2. メリット(2)思いもよらないバグが見つかる可能性もある
モンキーテストの利点の1つに、予期せぬバグの発見があります。
モンキーテストは、テスト実施者の主観や予測を超えたランダムな入力やクリックを行うことで、開発者が考慮しなかった不具合を見つけられます。たとえば、あるアプリケーションにおいて、ユーザーが同時に複数のボタンを押すというような通常では考えられない操作をランダムに行った結果、意図しないコマンドが実行されてしまうというバグが発見されるかもしれません。
正規のテストシナリオでは見落とされがちな、ユーザーの予測不可能な行動によって引き起こされる問題を発見するのに特に有効です。
2-3. デメリット(1)検出したバグの再現が困難となりやすい
モンキーテストは計画されたシナリオに基づかず、予測不可能な方法でシステムに入力を与えるため、同じバグを再び引き起こす正確な条件を特定することが難しいです。
たとえば、ユーザーインターフェースにおいて、特定の順序でのランダムなクリックが原因でアプリケーションがクラッシュするバグが見つかったとします。しかし、それらのクリックの正確なタイミングや順序を記録していない場合、開発者はバグを修正するために必要な情報を再現できないかもしれません。
このようにモンキーテストでは、バグの特定はできても、その原因を解明し解決策を見つける過程が複雑になる傾向があります。
2-4. デメリット(2)品質の評価に活かしにくい
モンキーテストが提供するランダムな入力によるテスト結果は、ソフトウェアの総合的な品質評価に直接的に活かすのが難しいというデメリットがあります。
モンキーテストはランダムな操作によって生じる不具合を検出できても、それがシステムの全体的な信頼性やパフォーマンスにどのように影響するかを体系的に評価するものではないためです。
これらの特徴から、モンキーテストは通常、ほかのより構造化されたテスト手法と併用することが推奨されます。
3. モンキーテストの主な実施タイミングと特に有効なケース
モンキーテストはテストの最終段階で実施することが基本です。
単体テストで個々の機能が正しく動作すること、結合テストで複数の機能が連携して問題なく動作すること、システムテストで全体としてのシステムが仕様を満たすことが確認された後であれば、既知の問題や基本的な機能の不具合はほぼ解決されている状態です。
この段階でモンキーテストを行うと、ユーザーが予期しない方法でシステムを使用した際に起こりうるエッジケース(異常なバグ)や、従来のテストでは捉えきれないバグを発見できます。これにより、リリース前の製品の品質をさらに高められます。
モンキーテストが特に有効となるケース
- エッジケースの発見
- ユーザーインターフェースの障害発見
- ストレステスト
- 異なるデバイスやOSでの互換性チェック
4. モンキーテストを実施するときのポイント
モンキーテストを実施する際のポイントとして、以下の2点が挙げられます。
●仕様を理解していない第三者に実施してもらう
開発者やテスト設計者は、意図せずとも自分たちの知識や期待に基づいたテストを行いやすいです。仕様に詳しくない人がテストを行うことで、より実際のユーザーの行動に近いランダムなテストを実現できます。これにより、開発チームが予見しなかったようなユニークなバグが明らかになることがあります。
●実施した操作をなるべく記録しておく
特定のバグがどのような操作の結果として発生したのかを追跡するために、クリックや入力などの操作を詳細に記録しておくことが重要です。たとえば、スクリーンショット、ビデオキャプチャ、ログファイルの収集などが挙げられます。
まとめ
モンキーテストは、ソフトウェアのテスト手法の1つであり、ランダムな入力や操作を通じてシステムの耐障害性を評価することに特化しています。
モンキーテストは、開発プロセスの後期で行うことが多く、仕様で想定された動作に対する不具合が解消された後に有効です。早い段階で実施すると、まだ対処されていない予定のバグとモンキーテストによって明らかにされる予期せぬバグが混在し、テストの焦点がぼやけてしまう恐れがあります。モンキーテストで行った操作は、できる限り記録しておくようにしましょう。