QbookジャーナルQBOOK JOURNAL

そのひと手間で顧客満足度がアップ!? ソフトウェアの信頼性を高める「モンキーテスト」とは

最終更新日時:2021.03.23 (公開日:2021.03.23)
そのひと手間で顧客満足度がアップ!? ソフトウェアの信頼性を高める「モンキーテスト」とは

ソフトウェアは、さまざまなプログラムによって構成されており、それらが連携することで機能しています。とはいえ、プログラムは人の手によって作られるため、初めから完璧なものが出来上がることはありません。そこで重要になるのが、ソフトウェアが仕様通りに動作するか確認したり、欠陥や想定外の動作を検出したりするソフトウェアテスト。顧客が望む品質を担保するためには、ソフトウェアテストの実施は不可欠。そこで、今回はシステムやソフトウェアの信頼性をより高めるソフトウェアテストの基礎知識と、顧客の満足度向上につなげるために有効な「モンキーテスト」について解説します。

ソフトウェアテストの種類や役割とは?

ソフトウェア開発におけるソフトウェアテストは、製造業の品質管理や品質保証に相当するもので、少し調べればわかるようなエラーが発覚した場合、顧客の信用を一気に失うことになりかねません。そうしたエラーをさまざまな角度から洗い出すためにも、ソフトウェアテストには数種類あり、それぞれ目的や内容が異なります。

テスト対象の粒度に応じて実施する「単体テスト」や「結合テスト」「システムテスト」など、一口にソフトウェアテストといっても、その役割や方法は実に多様です。しかし、総じて大きな目的は、「製品が仕様や要求を満たしていることを確認すること」と「エラー=バグを検出し、それが正しく修正されたことを確認すること」のどちらかになります。

ソフトウェアの品質とは、「システムやサービスを使う人の要求にどれだけ応えているか」ということで、顧客満足度と言いかえることもできます。そして高品質なソフトを作るためには、高品質なテストを効率良く実施することが求められます。そのためには、まずテスト設計を行い、それを生かすためのテスト計画が必要です。次に、その計画を現実的なものにするために、綿密なテスト管理も重要になります。加えて、プログラミング工程がある程度進んだところで、その段階に応じたテストを適宜実施することによって、顧客満足度が高いソフトウェアを作ることができるのです。

多くのソフトウェアテストは、主にテストエンジニアが担当します。ただし、優秀なテストエンジニアが、どれほど精度の高いテストを実施しても不具合ゼロのソフトウェアを開発することは不可能です。なぜなら開発の序盤から中盤にかけて実施されるテストは、ソフトウェアが仕様書通りに動作するか確認するため行われるものだからです。そうしたテストでは、想定外の使用法に対するエラーを発見することはできません。そこで想定外の使用に対するエラーを発見するために重要なのが、「アドホックテスト」です。

モンキーテストと他のテストとの違いは?

ソフトウェアテストの大きな分け方の一つとして、事前にテストケースを用意するかどうかということがあります。「アドホックテスト」は、テストケースを用意しないもののことで、モンキーテストはその中に含まれます。ソフトウェア開発者の中にはこの二つを混同している人も見られますが、JSTQB(国際ソフトウェアテスト資格認定委員会)の用語集では、異なるものとしてそれぞれ以下のように定義しています。

●アドホックテスト=非公式に実施するテスト。公式なテストの準備をせず、実績のあるテスト設計技法を用いず、テスト結果も予測せず、毎回、テスト方法が変わる。

●モンキーテスト=製品の使用法については全く考慮せず、広範囲の入力からランダムに選択し、ボタンをランダムに押すことでテストを行う方法。

アドホックテストは、公式に定めたプロセス以外の方法で実施しますが、最低限の知識があるユーザーが使うことを前提にしています。そのため、有効な文字列のみで行うなど、テスト内容に一定の制限があります。一方、モンキーテストは、当たり前の操作という固定概念がない人まで想定して実施します。テストで使う文字列や操作などに制限がなく、全くランダムに行われます。

ちなみに、モンキーテストと混同されがちなものとして、「探索的テスト」というものもあります。しかし、この二つにも明確な違いがあり、JSTQBでは探索的テストの定義を「非公式なテスト設計技法の一つ。テストを実施する過程で、テスト担当者かテスト実施情報を活用しながらテスト設計をコントロールし、積極的に質の高い新しいテストケースを設計する」としています。まずテストケースを用意せずにテストを実施し、その結果から調査する箇所を決めて、再度テストを行うのが探索的テストです。

テストケースを用意せずに実施して、より高品質を目指すという点では似ていますが、モンキーテストの実施者に知識やスキルが求められないのに対して、探索的テストの実施者ではそれらが重要になり、テストの成果に大きくかかわります。

形式的テストと探索的テストの違い

20210322_1.jpg

モンキーテストの起源や方法、実施を推奨するソフトウェアは?

モンキーテスト誕生の経緯については諸説ありますが、そのうちの一つが1983年にアップルの「Macintosh」用ワープロソフト「MacWrite」とペイントソフト「MacPaint」で初めて実施されたという話です。当時のMacintoshは、アプリを動かすために使えるメモリ数が少なく、どういう状況でクラッシュするのか調べる必要がありました。そのために、アップル・コンピューター(現アップル)でMacintoshの開発に携わっていたスティーブ・キャップス氏は、人間よりも早くランダムにキーを叩き、ランダムにマウスを動かしてランダムにクリックするプログラムを製作。このプログラムの名前が「The Monkey」で、モンキーテストの語源になったといわれています。

実際にモンキーテストを実施する場合、開発者の想像の斜め上をいくような、通常ではまずしない操作をする必要があります。ボタンの連打や2つのキーの同時押し、とにかくでたらめにひたすらキーボードを叩いてみたり、画面上の何もないところをマウスでクリックしたるすることは、まだ序の口です。実際にあった事例として、200文字程度の入力項目に2万文字入れてみたところ、システムエラーが発生したということも。

keyboard.jpg

このように、モンキーテストでは常識とはかけ離れた操作を試すので、前述したように実施に専門的な知識や技能は必要ありません。むしろ何も知らない人の方が適任で、想定するユーザーに近い属性の人に自由に触ってもらう方が良いともいえます。ただし、モンキーテストは、必ずしもバグを発見できるというものではないという点に注意が必要です。実施するとすぐにバグを発見できることもありますが、逆に何時間続けても何も見つからないこともあります。そのため実施する場合は、必ず事前に時間を決めておくと良いでしょう。

また、実施するタイミングは、その前にテストケースを用意したテストをしっかり行った上で、プロジェクトの最終工程で実施するのが効果的です。モンキーテストは、通常で想定できるエラーを十分に修正した後で、最後に念には念を入れて補足的に行うものなのです。他のテストをほとんど実施せずにモンキーテストだけを行うと、発生した不具合の切り分けが困難になるため、かえって非効率な開発工程になってしまうでしょう。

一般的なアドホックテストを実施するプロジェクトや会社は、比較的多く存在します。一方、上記のような役割のため、モンキーテストまで行っているケースは、それほど多くないのが現状です。エラーが起きても人がけがをするような大事には至らないソフトウェアや専門家だけが扱うような機器であれば、それでも一定の品質を担保できます。しかし、老若男女を問わず幅広いユーザーをターゲットにしたソフトウェアや自動車のようにエラーが重大な結果を招くものに関しては、モンキーテストを実施する価値は十分にあるのです。

おわりに

モンキーテストとは、料理でいえば最後に味を調える調味料のようなもの。その前に焼く、炒める、煮るといった調理をしっかりしていなければ、いくら調味料を使ったところで、おいしい料理にはなりません。ソフトウェア開発でも、綿密な計画に沿ってしっかりとテストを重ねてきた上で、念には念を入れて最後の一押しとして実施するのがモンキーテストです。その一押しによって、ソフトウェアの品質を高めることができ、顧客満足度向上につながるのです。

執筆者:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。