現役エンジニアが教える!モンキーテストとは?観点と実際のテスト項目を紹介

テスト

今回は、モンキーテストのやり方や観点について紹介します。

私自身、QAエンジニアとしてテスト仕様書を作成したりテストを実施する立場にあるので、「この記事の内容に沿って実施すれば網羅性の高いテストが実施できる」というのを目標に、記事を作成したいと思います。

モンキーテスト(アドホックテスト)とは

モンキーテストとは、名前の通り、内容を何も分からないサルが動かすかのように、無作為にシステムを操作するテストです。アドホックテストとも呼ばれます。

モンキーテストはいつやるの?

モンキーテストは、単体テストや結合テストが一通り終わったタイミングで実施するのが一般的です。

モンキーテストの目的は?

システムを無作為に動かすことで、テスト項目の実施では見つからなかった思わぬ不具合を見つけたり、実際の運用で発生しうるエラーをいち早く見つけることができます。

モンキーテストの必要性は?

モンキーテストは必ずしも行うわけではありません。むしろ、体感的にはやらないことのほうが多いです。しかし、個人的にはモンキーテストってけっこう重要じゃないかなと思います。

特に、単体テストなんかは単調な内容が続いたりして「めんどくさい」「どうせエラーでないっしょ・・・」という気持ちが出てきたりします。そんなときこそモンキーテストをやるべきです。

テスト項目書自体に抜け漏れがある場合にもそれをカバーできますし、あらゆるユーザー(高齢者やPC操作に慣れてない人)の操作を想定したテストをすることで、 ユーザビリティ(操作性)の観点からも改めてこの実装でいいか?というのをチェックできます。

難易度は?

モンキーテスト自体は、決まった項目はなく無作為に動かすため難しくはありませんが、実施する人によってテストの質に大きな差が出やすいテストでもあります。

ある程度経験がある人は、バグが起こりやすい箇所に当たりをつけて効率的に実施することができますが、経験が浅い人は「何をテストすればいいのか分からない」という事態に陥りがちです。本記事では、モンキーテストを行う上で、具体的にどんなテストをすれば良いのかを紹介します。

モンキーテスト(アドホックテスト)の観点

テスト観点というのは、「どんな視点でテストをするか?」という、テストを実施する上での方向性や着眼点のことです。モンキーテストにおいても、テスト観点を明確にしておくことが大事です。以下に例を記載します。

  • GUI (画面表示やレイアウトが仕様通りであるか)
  • 画面遷移 (ボタンやリンク押下時の画面遷移が仕様通りであるか)
  • 入力チェック(フォーマット、データ形式が仕様通りであるか)

どんなテストをしているかによって観点は異なる

単体試験もしくは結合試験がどんな目的で行われたのかを確認します。

ページのデザインを変更した場合であればGUIを中心に確認する必要がありますし、画面にボタンを追加した場合であれば画面遷移に関する確認を重点的に行います。データベースのバージョンアップであれば全体的な確認(リグレッションテスト)を行っているかと思います。

この観点が分からないまま、闇雲にモンキーテストを行っても効果は低いでしょう。デザインの変更に関するテストなのに、入力フォームに様々な値を入れて正しくエラーが出るか確認しても、入力チェック処理に関して何も変更していなければ無意味になってしまいます(既存バグが発見できることはあるかもしれませんが・・・)。

以下に、モンキーテストで確認すべき項目を記載します。既に単体or結合テストで実施済の項目は省いてください。

入力フォーム

大項目小項目確認内容
テキストボックス文字数・指定した文字数で入力
・指定した文字数でない範囲の値を入力
・未入力
フォーマット不正な半角英数字、メールアドレス、電話番号、日付
不正なメールアドレス例:
test@test
test@.com
改行エディタで作成した改行つきの文字列を
コピー&ペーストする
ホワイトスペース未入力、半角スペース、全角スペース
特殊記号!"#$%&'()=~|-^\@[;:],./`{+*}<>?_
絵文字🙂
パスワード・マスキングの確認
(●●●のように文字が伏せられていること)
・単純な文字の並びを許容していないこと
HTML<br>
<font color=”red”>
HTMLタグが反映されずに上記のまま表示・登録されること
HTML特殊文字&amp;
上記のまま表示・登録されること
プレースホルダ
(テキストボックスに予めうっすらと
表示されている入力例のこと)
文言が正しく設定されていることを確認
登録ボタンボタン連打重複登録されないことを確認
モーダル
(ある場合のみ)
モーダルエリア外を押下正しい挙動になることを確認
(閉じる or 開いたまま)

文字列の操作は、以下のツールを使うと便利です。

文字数制限がないとサーバーエラーになる可能性がある

文字数制限のない入力フォームに長い文字列を入力すると、サーバーエラーが発生する場合があります。そこで、

  • 入力フォームに文字数制限がかかっているか
  • 長い文字列を入力した際にサーバーエラーにならないか

を確認しておくと良いでしょう。

検索・絞り込み

大項目小項目確認内容
単一条件での検索検索窓にキーワードを1つ入力し、検索する・検索結果が正しく表示されること
・設定したマッチタイプ(完全一致、部分一致)で検索されること
複数条件での検索検索窓にキーワードを2つ以上入力し、検索する・検索結果が正しく表示されること
・設定した条件(AND、OR)で検索されること
ホワイトスペース検索窓に「  りんご」など
先頭or末尾に空白を含む文字列で検索
空白がトリム(除去)され、検索結果が正しく表示されること
件数検索結果の件数を確認する正しい件数が表示されていること
ページング検索結果のページャを確認する・正しくページャが表示されること
・検索結果が0件の場合は表示しない等、配慮されていること
・n件で1ページの場合、n+1件で次ページが表示されること
・n+1件の状態で、1件削除したとき次ページが表示されなくなること
絞り込みFrom-Toを逆にして絞り込みを実行・実装した内容(エラーを出す、検索は実行するが0件となる等)通りの挙動になること

権限

  • アカウントの権限に応じた画面・機能になっているか
  • 有料プランの契約期間が過ぎたアカウントで有料機能が使えないこと
  • 退会したアカウントでログインできないこと
  • 制限やブロックしたアカウントでログインできないこと
  • アドホックプラン(1回きりのプラン)は一度利用したあと使えないこと

クレジットカード決済

大項目小項目確認内容
カード名義人文字数・指定した文字数で入力できること
・指定した文字数でない場合エラーになること
フォーマット半角英字のみ入力できること
カード有効期限期限切れチェック過去の年・月の場合、エラーとなること
セキュリティコード文字数・3桁または4桁で入力できること
・上記以外の場合エラーになること
フォーマット半角数字のみ入力できること
カード番号文字数・指定した文字数で入力できること
・指定した文字数でない場合エラーになること
フォーマット半角数字のみ入力できること
決済に失敗する番号
(card_declined)
4000000000000002
処理中エラー
(processing_error)
4000000000000119
不正な番号
(incorrect_number)
4242424242424241
決済二重決済決済ボタンを連続でクリックしたときに
二重に決済されないこと

なお、クレジットカード番号の正常系は

  • 4111111111111111 (VISA)
  • 2111111111111111 (MASTER)
  • 3111111111111111 (JCB)

等になります。(参考:GMO > テスト環境専用カード番号/正常クレジットカード

ファイルアップロード

項目確認内容
拡張子指定した拡張子以外はエラーになること
ファイルサイズファイルサイズが大きい場合の対応がされていること
(nMB以上はアップロードできません、等)
ファイル名不正ファイル名にスペースを含むファイルをアップロード
ファイル内容不正フォーマットに反する内容をアップロード
(csvファイルの項目不足など)
ファイルなしファイルをアップロードせずに「次へ」等を押したとき
エラーが出ること

サイズの大きいファイルは、Windowsであれば以下のコマンドで作成できます。以下は100GBのcsvファイルを作成する例です。

fsutil file createnew test.csv 107374182400

コマンドプロンプトで上記コマンドを実行すると、ファイルが作成されます。巨大サイズのファイルは、PCの容量を圧迫するためテスト実行後は必ず削除するようにしてください。詳しくは、以下の記事で解説しています。

端末ごとのレイアウト

スマホやタブレットでPCと同様に正しく操作できることを確認します。実機で行うのが理想的ではありますが、PCで確認する場合は開発者モードを使用します。

ブラウザ上でF12キーを押すか、右クリックから「検証」を選びます。以下のような画面が開きますので、赤枠部分をクリックし、左上の「Dimensions」というプルダウンから端末を選びます。

矛盾や抜け穴がないか

エンドユーザーは、システムの矛盾点や抜け穴を探すのがめちゃくちゃ得意です。粗探しじゃないですけど、エラーが起こりそうな操作ってやってみたくなるものですよね。

とはいえ、100%完全なシステムをリリースすることは不可能ですし、このような抜け穴を探るのはキリがないので、モンキーテストを行う上ではあまり時間を割くべきところではありません。

ここでは、よくありがちなケースのみ紹介します。

矛盾点

例えば、以下のようなチェックボックスの選択肢があるとします。

選択肢A~Cと、「このなかにあてはまるものはない」をどちらも選択できてしまうと矛盾が生じます。この場合では、どちらか一方しか選択できないよう設定すべきです。

抜け穴

例えば、ECサイトを作成できるサービスがあるとします。このサービスのなかには、有料プランしか使えない機能があります。以下の「お問い合わせ」は有料プランしか使えません。

また、作成したサイト画面を他のユーザーに移行できる機能があります。

上記のように、有料プランのユーザーどうしでサイト画面を移行することは問題ありません。

しかし、上記のように無料プランのユーザーへサイト画面を移行できてしまったら、無料プランでも有料プランの機能を使ったサイトを利用できてしまいます。このような抜け道がないか、思いつく範囲でよいので気になった部分は試しておくことをおすすめします。

その他

モンキーテストを実施するうえで、確認しておきたい項目を随時追加します!

  • 日本語版/英語版が存在する場合、新規機能追加で英語版への翻訳漏れがないか確認
  • 日本語版/英語版が存在する場合、リンク先も対応する言語になっているか(ヘルプページや問い合わせ等)

ChatGPTでモンキーテスト項目を生成する

ChatGPTを利用してテストケースを生成させることもできます。以下はクレジットカード決済に関するテストケースを生成させたものです。表形式での出力もでき、細かく指示を出せばけっこう的確な内容を返してくれます。

ChatGPTでテストケースを生成する方法については、以下の記事で解説しています。

まとめ

今回は、モンキーテストのやり方や観点について紹介しました。テストというと単体テストや結合テストというイメージが強く、モンキーテストという言葉自体聞いたことのない方も多いとは思いますが、個人的にはけっこう重要だと思っています。

私は「時間が余ったらやる」という考えではなく、むしろモンキーテストの時間を予め用意してテストを行うようにしています。なぜなら、今まで沢山のテストを実施してきて、実際にモンキーテストの段階で見つかる不具合がけっこうあるからです。

この記事は、自分自身がモンキーテストをする際に見返そうと思います。不足があれば都度追加していきます。今回紹介した項目が、テスターさんやエンジニアの方の参考になれば幸いです。

\楽天ポイント4倍セール!/
楽天市場
chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、QAエンジニアを経て現在RPAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

タイトルとURLをコピーしました