【もんきーてすと】

モンキーテスト とは?

最終更新:
💡 いろいろな操作を試して、問題のきっかけを探す

ランダムまたは疑似ランダムな操作やイベントを与え、クラッシュなどの問題を探すテスト手法。AndroidのMonkeyは、画面操作やシステムイベントを生成する公式ツール。イベント数や対象、シードを設定できるが、業務上の結果をすべて検証するものではない。

📌 このページのポイント
モンキーテスト:いろいろな操作を試すランダム操作タップ・スクロールテスト対象のアプリクラッシュなどを調べる設定・シード・ログを残す見つかった問題を、再現して調べる期待する結果を確かめるテストも、組み合わせよう
画面操作を使う例。AndroidのMonkeyはシステムイベントも生成します。テスト用の環境で実施します。
ひよこ ひよこ
モンキーテストでは、何をするの?
ペンギン先生 ペンギン先生
画面をタップしたり、スクロールしたりといった操作を、ランダムな順番などで与えて問題を探すよ。人が決めた手順では試しにくい操作の組み合わせに出会うことがある。ただ触り続けるのではなく、何を対象に、何を問題として検出するかも決めよう。
ひよこ ひよこ
Androidには、専用のツールがある?
ペンギン先生 ペンギン先生
公式のMonkeyがあるよ。端末やエミュレーターで動き、疑似ランダムなユーザー操作やシステムイベントを生成する。対象のパッケージ、イベントの種類や回数などを設定できる。クラッシュや応答しなくなる問題を検出すると、既定では停止して報告するんだ。
ひよこ ひよこ
同じ問題を、もう一度試せる?
ペンギン先生 ペンギン先生
Monkeyは同じシードを指定すると、同じイベント列を生成できるよ。シード、対象、設定、端末やアプリの状態、ログを残すと調べやすい。ただし通信やタイミング、状態も影響するので、同じシードだけで不具合の再現を必ず保証できるわけではないんだ。
ひよこ ひよこ
何も壊れなければ、テストは合格?
ペンギン先生 ペンギン先生
クラッシュしなくても、計算や保存した内容が正しいかまでは分からないよ。期待する結果を確かめる、決まった手順のテストも組み合わせよう。ランダム操作で送信や削除が起きることもあるので、テスト用の環境やデータを使い、対象を制限することも大切だね。
ひよこ ひよこ
ファジングと、同じ手法なの?
ペンギン先生 ペンギン先生
不規則な入力で問題を探す点は近いけれど、対象や入力の作り方はさまざまだよ。たとえばLLVMのLibFuzzerは入力データを変化させ、新しいコードの経路を探す。ファジングをAPIだけ、または完全なランダム入力だけのテストとは考えず、使うツールの動きを確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「モンキーテスト」って出てきたら「ランダムな操作で問題のきっかけを探すテスト」と思えばだいたいOK!
📖 おまけ:英語の意味
「Monkey Testing」 = サルが操作するように、いろいろな操作を試すテスト
💬 このページでは手法とAndroidのMonkeyを説明するよ。ランダムな操作にも、対象や回数などの設定があるんだ。

参考資料

← 用語集にもどる