【テスト】モンキーテストとは 概要とメリット・デメリット

アイキャッチ画像

導入

ソフトウェア開発において、テスト工程は非常に重要な工程の一つです。

品質を保つためには、バグの有無チェックや予期せぬ動作が起きないかを確認する必要があります。

一般的に、単体テスト・結合テスト・システムテストなどがありますが、「モンキーテスト」と呼ばれる少し特殊なテスト手法があります。この記事では、そのモンキーテストの概要とメリット・デメリットについて解説します。

モンキーテストとは

モンキーテスト(Monkey Testing)とは、意図的に無作為な操作や入力を行い、アプリケーション等が異常終了したりエラーが発生しないかを確認するテスト手法です。

名前の由来は「訓練されていない猿(モンキー)が、システムをめちゃくちゃに触っても落ちないかどうかを見る」というイメージから来ています。

特にWebアプリやスマートフォンアプリ等のユーザーがUIで自由に操作可能なシステムでは効果的となります。

私が実務で参画した案件でも、モンキーテストにより想定していないバグが発見される事例が多数ありました。

なお、少し似たものに「アドホックテスト(Adhoc Testing)」というものがあります。

モンキーテストとの違いは、システムの仕様を理解しているテスターが実施するという点です。ただし、特に事前準備をせず、めちゃくちゃな操作をするという点ではモンキーテストと同じです。

具体的な内容

モンキーテストの具体的内容は以下のようなものがあります。

  • 入力フォームで意味不明な文字列、スペース、特殊記号、絵文字等が入ったものを入力して送信する
  • 画面上のボタンやアイコンを連打する
  • ブラウザの「戻る」「進む」ボタン押下を繰り返す
  • 処理途中の状態でブラウザを閉じる/アプリを終了する/ネットワークを切断する
  • 複数のタブで同一ユーザーでログインし、同じ画面で異なる操作をする

このように、ユーザーが普通ならしないような操作をしても、異常が起きないかをチェックします。

私の実体験では、APIリクエストをcurlコマンドで行う際、設定されていないクエリパラメータを入力すると予期せぬエラーとなってしまい、意図していないステータスが返却されてしまう事案等がありました。

モンキーテストのメリット・デメリット

メリット

  • 準備が容易:システムの複雑な仕様やシナリオを考えなくても実施できる
  • 予期せぬバグの発見:モンキーテストで見つかったバグがきっかけでシステムの重大な欠陥や他のバグ発見につながることがある

デメリット

  • 再現性:再現性が乏しく、テストをした本人もどういう操作をしたか正確に覚えていない場合がある
  • 効率が悪い:ある程度ケース数が想定できる普通のテストとは違い、考え始めるとキリがないためどの程度までチェックするべきかの判断が難しい
  • 修正が難しい可能性:バグを発見できたとしても、原因の特定が困難な場合がある

まとめ

モンキーテストは、想定外のバグを発見できる可能性がある重要なテスト手法です。ただし、あくまで「補助的」なテストであることを意識しましょう。しっかりとした基本のテストケース(単体・結合テスト)や設計に加えて、「最後に少し荒っぽく触って確認する」くらいの使い方が理想的です。