皆さんはソフトウェアのテストについてどのような印象をお持ちでしょうか。綿密な計画を立てて不具合を計画的に探していく、高度な知識が必要な作業と考えた方も多いでしょう。多くの場合、綿密な計画や高度な知識が求められることは間違いありません。しかし知識を用いず行き当たりばったりで実行することが求められるテスト手法もあります。そのような手法はどのような目的で、どのような場面で実施されるのでしょうか。今回は「モンキーテストとは何か」について解説します。
モンキーテストとは
「モンキーテスト」は事前にテスト内容を定めず、テスト対象に対してランダムな操作を行うことで、予期せぬ不具合が発生しないかを確認するテストのことです。
他の手法では効率的に不具合の発見を行うために、テストの詳細な流れを決定してからテストを実施しますが、モンキーテストはあえて流れを決定せずに行き当たりばったりで動作を行います。テスト実行者が、システムに関する知識を持たない「サル」のように不規則な操作をすることが名前の由来です。手順を決めずに実行するという性質から「ゲリラテスト」とも呼ばれます。
モンキーテストの目的
モンキーテストの目的は、計画的なテストでは発見することが困難な予期せぬ不具合を発見することです。
例えば、ECサイトにおいて、「商品販売の画面で空白部分を10回連続でクリックすると、商品が販売停止になる。」という不具合が発生しているとします。
通常の使い方では画面の空白部分をクリックし続けるという動作は起こりえないため、計画的なテストで前述のような不具合を発見することは困難です。しかしランダムな操作を行うモンキーテストであれば発見できる可能性があります。
前述のような不具合が存在したままリリースしたとしても、通常あり得ない動作であるため発生することがなく問題がないようにも思われますが、幼い子どもが誤って操作をしてしまう場合などを考慮すると発生する可能性がゼロとはいえません。
アドホックテスト、探索的テストとの違い
モンキーテストは、事前にテスト内容を定めないという点で「アドホックテスト」や「探索的テスト」と似ておりしばしば混同されます。しかし一般的にモンキーテスト、アドホックテスト、探索的テストには、以下のような違いがあります。
モンキーテスト | アドホックテスト | 探索的テスト | |
---|---|---|---|
特徴 | ・完全に無作為に操作を行う。 ・ユーザーの操作を想定しない。 | ・公式のテストとは 別で行うテスト。 ・ある程度ユーザーの 操作を想定する。 | テストを実施していく中で、 次にどのようなテストを 行うべきかを考え、 適宜実行する。 |
目的 | 予期せぬ不具合を発見する。 | 特に不具合が発生しやすい 部分において、 公式のテストでは 発見されなかった 不具合がないかを 確認する。 | テスト実施によるシステムの 挙動を加味して、 内容を決めることで、 質の高いテストを行う。 |
モンキーテストでは一切の情報を考慮せずランダムに操作を行いますが、アドホックテストでは過去の不具合の発生履歴などの情報を参照しますし、探索的テストではテスト実施中のシステムの反応を考慮してその時々に必要なテスト手順をとります。アドホックテストや探索的テストは、テスト実施者が場面においてテスト内容を考える必要があるため、テストを効果的に実行できるかどうかはテスト実施者の経験や知識によって左右されます。
モンキーテストのメリット
・通常のテストでは発見しにくい予想外な不具合を発見できる。
モンキーテストでは、予期せぬ操作や想定されていない文字の入力によって発生する不具合など、通常のテストでは発見しにくい不具合を発見することが目的です。リリース前にモンキーテストを行うことで、不具合の発生を減らしてユーザーの満足度を高められるだけでなく、思いがけない不具合に対応する手間が省けるためコストの削減にもつながります。
・準備に手間がかからない。
モンキーテストは事前に綿密な計画を立てたうえで実行するテストではないため、気軽に実行することが可能です。テスト実行者に専門的な知識が必要ないため、人材の準備にもあまり手間がかからず、低いコストや短い期間で品質を底上げすることが可能です。その反面効果的に実施するためには、実施のタイミングや実施期間に注意する必要があります。
モンキーテストのデメリット
・システムの品質保証にはつながりにくい。
モンキーテストでは操作をランダムに行うため、テストで一切不具合が発生しなかったとしても、たまたまその時の手順では発生しなかっただけとも考えられ、システム全体の品質を保証することにはつながりません。品質を保証する目的であれば、想定されるユーザーの操作に対するテストを完了することが重要です。
・発見したバグを再現することが難しい。
モンキーテストではランダムな操作を連続して行うため、不具合が発生したとしてもどの動作が原因となって発生したか、が明確にならない場合があります。不具合の原因を明確にするには、テスト実施者が実施内容を記録しておくことや、操作手順を記録することができるツールを導入することが効果的です。
・不具合が必ず発見できるわけではない。
モンキーテストでは操作をランダムに行うため、不具合が見つかる保証がありません。不具合が見つかるまでテストを実施するのであれば、途方もない時間がかかる可能性もあります。必要以上にコストをかけないためにも、実施前にモンキーテストを実施する期間を決めておくことが重要です。
モンキーテストの知っておくべきポイント
・先入観を捨てて、無作為な操作を行う。
モンキーテストを行う際には「ユーザーは普通このように操作するだろう」という先入観を捨てて、通常では起こりえないパターンについても確認する必要があります。先入観を持っていないという点で、まったくシステムについて知らない第三者にテストを実施してもらうことも有効です。
・プロジェクトの最終工程で実施する。
モンキーテストは、通常のテストが完了し一通り不具合の修正が終わったプロジェクトの最終段階で行うことが効果的です。通常のテストで検知される不具合を修正する前にモンキーテストを実施すると、想定される動作による不具合と想定されていない動作による不具合の両方が同時に発見されることになり、効率的な修正ができなくなります。
まとめ
「モンキーテスト」は事前にテスト内容を定めず、テスト対象に対してランダムな操作を行うことで、予期せぬ不具合が発生しないかを確認するテストのことです。
モンキーテストを行うことで、思いがけない不具合を発見することが可能になりますが、モンキーテストを行っただけでは、システムの品質を保証したことにはならないため、他のソフトウェアのテストと併せて実施する必要があります。
株式会社GENZでは、モンキーテストも含めたITに関するお困りごとに幅広く対応しております。自社のシステムに不具合がないか確認したいけれど、どのようなテスト手法が最適なのかわからない、という場合でも大丈夫です。テスト経験豊富な専門家がお客様のシステムに合ったテスト実施案を提案させていただきます。システムの機能に関するテストと、セキュリティに関するテストを一括でご依頼いただくことも可能です。
GENZと共にお客様のシステムをより良いものにしてみませんか。