情報セキュリティやIT運用、テクノロジーに関する最新の動向、
弊社商品の情報などをご紹介するサイト

Sky株式会社

モンキーテストとは? 3つの特徴や効果的な実施方法を紹介

著者:Sky株式会社

モンキーテストとは? 3つの特徴や効果的な実施方法を紹介

ソフトウェアテストには多種多様な手法があります。リリース後に不具合が発覚する事態を避けるためには、可能な限りさまざまな角度からテストを行うことが求められます。その中で、事前準備をほとんど行わずに、一般的な手法では見逃されやすい不具合を発見できる手法として活用されているのが「モンキーテスト」です。この記事では、モンキーテストの特徴や実施方法、似た特徴を持つ「アドホックテスト」や「探索的テスト」との違いなどを解説します。

「モンキーテスト」とは何か

モンキーテストとは、ソフトウェアテストの一種で、事前に詳細を決めずにその場の思いつきでテストを実施する手法のことです。製品の使い方や仕様などを考慮せず、幅広い選択肢からランダムに操作を選択することで、開発者の想定から外れた動作までをテストし、隠れた不具合を検出することを目的としています。

ソフトウェアテストの資格認定団体・JSTQBの「ソフトウェアテスト標準用語集Version 2.3.JO2」では、「製品の使用法についてはまったく考慮せず、広範囲の入力からランダムに選択し、ボタンをランダムに押すことでテストを行う方法」と定義されています。

アドホックテストや探索的テストとの違い

手順や観点、期待値などをまとめた「テストケース」を事前に作成しないテスト手法は、モンキーテスト以外にも存在しており、「アドホックテスト」や「探索的テスト」がその代表例です。いずれも場当たり的に実施するテストではありますが、詳しい進め方や目的、テスト実施者に求められるスキルなど、それぞれに違いがあります。

ここでは3種類のテストの比較と、アドホックテストや探索的テストの概要についてご紹介します。

テストの狙い タイミング 事前準備の必要性 実施者のスキル・経験値の必要性
モンキーテスト 開発者の想定外の操作で起こる不具合を検出 想定内の動作では不具合が起きないことが確認できた後 不要 不要(仕様を把握していない第三者が実施するほうが効果的)
アドホックテスト あたりをつけた部分の重点的なチェック(詳細は場合により異なる) 狙いや目的に応じて決定する 必要な場合がある(狙いや目的を確認するため) ある程度は必要(ソフトウェアの仕様を最低限は理解する必要がある)
探索的テスト 仕様書にとらわれない、効率的な不具合の検出(詳細は場合により異なる) 狙いや目的に応じて決定する 必要な場合が多い(テストの目的や、目的達成のための指針を記した「テストチャーター」というドキュメントを作成するため) 高いスキルと経験が必要(動作や仕様を確認しながら次の確認内容を考えるため、テストの設計と実行を同時に行えるスキルが必要)

1.アドホックテスト

アドホックテストは、公式な情報を基にした分析やテスト設計を行わず、結果の予測もせずに実施するテストです。モンキーテストとほぼ同じ意味のように扱われる場合もありますが、厳密には「ランダム性」が求められるか否か、という違いがあります。

モンキーテストでは何も考慮せず完全にランダムな操作を行いますが、アドホックテストは「バグを起こしやすい操作」や「通常は行わない操作」を行って重点的に確認するなど、目的や意図が存在します。ただし、それを確認するための詳しい方法や期待値は事前に定めないため、テスト方法はテストのたびに変わります。

2.探索的テスト

探索的テストは名前の通り、「探索」しながら進めていくテストです。実際にテストを実行した結果や感触から「次にテストすべき箇所」がどこにあるのかを探っては、必要だと感じたテストを実行する、という過程を繰り返します。テストの目的や範囲、観点などはあらかじめ定めてから実施します。

事前にテストケースの作成は行わないものの、テストを実行しながら新しいテストケースを作成しなければならず、質の高いテストケースを考えるには経験や知識が必要です。そのため、実施者には高度なスキルが求められます。

モンキーテストの3つの特徴

数あるテストのなかでモンキーテストを実施するメリット・デメリットとは、どのような点にあるのでしょうか。ここでは、モンキーテストの主な特徴を3つご紹介します。

①通常のテストでは見つけにくい不具合を見つけられる

一般的なテストでは、仕様を基にテストケースを作成してテストを実施するため、仕様書で考慮されにくい部分は見逃されてしまいます。ランダムに操作するモンキーテストであれば、仕様書では想定されていない動作まで確認でき、通常のテストでは見つけにくい不具合を検出可能です。

すべてのユーザーがソフトウェアの扱いに慣れているわけではないため、実際の稼働では、専門知識のある開発者が想像しないような操作が行われる可能性も十分にあります。モンキーテストを行っておけば、そのような操作によって予想外の不具合が起きる可能性を減らせます。

②準備作業が不要

仕様の確認やテストケースの作成が不要で、専門スキルを持たない第三者に依頼することも可能なため、テスト実行までにかかる手間やコストを削減できます。準備期間が短縮され、すぐにテストを実行できる分、テスト結果からフィードバックを得るまでの期間も短いのが特徴です。

③ほかのテストと組み合わせることで品質が向上する

モンキーテストは想定外の動作を確認できるというメリットがある一方で、逆に想定内の動作の確認には不向きという注意点があります。また、起こり得るすべてのパターンを端から試すようなテストとは異なり、網羅性に欠けるのも欠点の一つです。

そのため、仕様書の内容や、開発者が想定した操作パターンを網羅できるようなテストを併せて行うことが推奨されます。苦手な範囲をカバーし合えるテストと組み合わせることで、より幅広い状況についてテストをしておくことが可能になり、品質の向上が見込めます。

モンキーテストを実施する際のポイント

モンキーテストの実施には、一般的なテスト手法とは異なる部分も多々あります。以下のようなポイントを踏まえて実施することで、より効果的なテストが行えます。

専門スキルを持たない第三者が実施する

モンキーテストはその性質上、開発関係者には思いつかないような操作をすることが求められます。開発者や専門知識のある担当者が実行するケースもありますが、なるべく先入観を排除して想定外の操作を行うために、仕様を知らず、専門スキルを持たない第三者に依頼するほうが良いとされています。

プロジェクトの最終工程で実施する

モンキーテストは、プロジェクトの最終工程で行うのが望ましいとされています。まずは仕様から想定できる内容について、テストケースを用意して十分にテストを行い、不具合をすべて修正してからモンキーテストを行うことが推奨されるためです。

想定内の不具合の修正が不十分な状態でモンキーテストを行って、何らかの問題が起きた場合、それが想定外の操作によるものなのか、通常の操作でも起こるものなのかを見極めるのは困難です。原因の切り分けに手間取れば、かえって開発の効率が悪くなるほか、本来モンキーテストで検出されるはずだった不具合を見落としてしまう要因にもなりかねません。

記録を残す

モンキーテストを実施する際は、テストした内容を記録しておくことが大切です。場当たり的に行うことを前提とするモンキーテストは、事前に操作内容を定めた資料は作成されません。そのため、実際にどのような操作を行ったのかを記録していないと、後から手順を再現できず、問題を検出しても「何がきっかけで不具合が起きたのか」を確かめられません。

テストを実施する者が操作内容を記憶しておくことが難しい場合は、操作手順を記録しておくツールを導入したり、ログファイルを収集したりすることで、後から操作内容を確認できる状態にしておきましょう。

常識とはかけ離れた操作を試す

モンキーテストを実施する際は、開発者の想像の斜め上をいくような操作をすることを心掛けます。基本的な操作の例としては、でたらめなキーボード操作やボタンの連打、同時押し、画面上の何もない場所をクリックするなどが挙げられます。

しかし実際はこれ以上に、とにかく常識とはかけ離れたさまざまな操作を試すことが重要です。文字列や操作方法に制限はなく、なかには「想定の100倍に及ぶ文字数を入力したら初めてエラーが起きた」という事例もあるほどです。

とはいえ、モンキーテストは「時間や手間をかければ不具合が見つかる」というものではない点に注意が必要です。あくまで想定内の不具合を排除した上で補足的に行われるテストであり、エラーに必ず遭遇できるという保証はありません。何時間も実施しても何も見つからないケースもあるため、事前に実施時間を決めてから実行するのが良いとされています。

また、モンキーテストで不具合が検出されなかったとしても「品質を保証できる」とは言い切れません。そのため、あらかじめ品質保証のためのテストを別途実施しておくことが大切です。

まと

この記事では、モンキーテストの概要や特徴、類似するテストとの違い、実施時のポイントについてご紹介しました。一般的なテストとは異なる手順を踏むモンキーテストですが、だからこそ検出できるような意外な不具合が見つかるケースもあります。より効果的なテストを実施するためには、実施するタイミングや実施者の選択、ほかのテストとの組み合わせなどに気を配ることが大切です。ぜひ今回ご紹介したポイントも参考にしながら、プロジェクトへの導入を検討してみてください。

Sky株式会社では、評価 / 検証業務のサポートからテスト自動化ツール「SKYATT」の提供まで、ソフトウェアテストの進め方に関するさまざまな支援を行っています。お困りの際はぜひ一度お問い合わせください。