Web制作の現場では「手段の目的化」に気を付ける必要があります。
これはシステムやサービスを制作する過程で起こり得る問題であり、特にそのシステムやサービスが「快適なユーザー利用」を目的としている場合には注意しなければなりません。
「顧客満足度を高める」という目的を見失わないためにも「テスト実施」はあくまで手段として考え、テストの細かな部分まで調整を行うことが重要です。
実際のテストでは、テスト仕様書にある内容からユーザー利用を想定したデータの処理速度や負荷などをチェックしますが、具体的にどのようなテストが必要になるのかをここでは説明していきます。
まずは性能テストから見ていきましょう。
性能テストを行う目的とは
性能テストとはパフォーマンステストとも呼ばれ、システムの「データ処理速度」や「処理できるデータ量」が、快適なユーザー利用を妨げるものでないかをチェックするものです。
主に原因を見つけ出すことに重きが置かれたテストのため、快適なユーザー利用を妨げるものを定量的に測定することが求められます。
「快適なユーザー利用を妨げない」と判断するためには、そのサービスを利用するユーザーの属性やアクセス数を把握しておく必要があるため、性能テストを行う前にターゲットユーザーの確認をしておきましょう。
この性能テストを行うことで、サービスのリリース前に「システムの応答速度が遅い」といった課題が見つかるため、リリース後のトラブルや事故を防ぐことができます。
システムの応答速度が遅ければ遅いほど、Webサイトに訪れたユーザーの離脱率は上昇してしまいます。
こうしたことを踏まえると、性能テストを行うことの重要性が理解できるのではないでしょうか。
性能テストの種類
性能テストには「ロードテスト」「ストレステスト」「拡張性テスト」の3つがあります。
ロードテストとストレステストは、サーバーに対する負荷の程度によってシステムがどのような反応を見せるのかを確認するものです。
また、拡張性テストは文字通りシステムの拡張性を調べるためのテストになります。
ここで留意しておきたいのは、この3つのテストがそれぞれ独立した形で実施されるのではなく、組み合わせることで結果を測定できるということです。
テストを実施するシステムによっては、この3つのテストだけでは不十分な場合もあるため、ユーザー利用を考えたテスト実施を念頭に置きましょう。
ロードテスト
ロードテストとは、想定されるアクセス数の上限に近い状況で、期待されるデータ処理が問題なく行われるかをチェックするテストです。
システム構築時やテスト仕様書作成時に通常処理可能とされていた数値で、実際の運用では異常な動作を見せる場合があるため、このテストが必要になります。
ロードテストで通常通りの処理をシステムが行ったとしても、処理速度が遅くなるといった症状が見られた場合は、その原因がどこにあったのかを突き止めましょう。
ストレステスト
ストレステストとは、想定以上のアクセス数をサーバーが受けた場合にシステムがどのような反応をするのかを予め確認しておくテストです。
ロードテストが「想定内のテスト」であったのに対し、ストレステストは「想定外のテスト」ということになります。
想定を超えるサーバーへの負荷がかかった場合には、システムの処理速度は低下するか、あるいは処理の停止を行うのが理想です。
しかし、ストレステストの結果、データの一部が欠損したり、データの内容が変わってしまったりする場合にはシステムの修正・改善が必要とされます。
想定外のテストであるとはいえ、システムが好ましくない反応を示すものであるならば事前に対策を講じておくことが重要でしょう。
拡張性テスト
拡張性テストとは、データ量の増加に応じたデータ処理の限界値を確認するためのテストです。
ロードテストとストレステストの目的が「期待される動作のチェック」にあるのに対し、拡張性テストの目的は「処理可能なデータ容量の把握」にあります。
将来的に既存のシステムが対応できるデータ量を超える場合には「サーバー台数の増加」などを行う必要がありますが、拡張性テストを行っておくことで迅速な対応が可能になります。
予め「どのような状況で限界を超えるのか」を知っておけばトラブルや事故発生時の混乱を最小限に留めることができるため、必ず実施したいテストの1つといえます。
品質向上を目的としたテスト
実施するテストには、性能テスト以外に「品質向上を主目的としたテスト」があり、システムのスペックよりもユーザーの操作に重きを置いたものとなっています。
性能テストで確認するシステム動作は品質向上を目指す上で欠かせないポイントではありますが、性能テストのみの実施では快適なユーザー利用を実現することができません。
快適なユーザー利用を実現するためには、実際のユーザー操作に基づいた課題を発見し、改善を行う必要があります。
ユーザーテスト
ユーザーテストとは、ユーザーにシステムを利用してもらい、その様子からユーザー操作の課題を発見していくテストのことです。
ユーザーにシステムを使ってもらうことで、開発側では気付けなかった課題を見つけることができ、より快適なユーザー利用に向けた改善を行うことができます。
実際のユーザーテストでは、被験者であるユーザーの操作を「リアルタイム」で確認することがポイントであり、画面操作とユーザーの反応を同時に見ることが重要です。
ユーザーテストの手法の1つに「思考発話」がありますが、これは「ユーザーが実際の画面操作を行いながら、頭で考えていることを発話してもらう」という方法になります。
この思考発話を取り入れるのは、通常の画面操作だけでは判断しにくい「ユーザーの悩み」を的確に記録することが可能になるためです。
ユーザーの「なぜそうしたいのか」といったニーズを引き出すことで、即効性のあるシステム改善が行えるようになります。
モンキーテスト
モンキーテストとは、ユーザー操作の順序などを無視した「ランダム操作」によって、システムの隠れた異常やミスを発見するテストです。
モンキーテストを実施した事例では「画面の空白部分をクリックすると画面表示が崩れる」といった異常が発見されることがあります。
モンキーテストは「手動」で行うことが可能ですが、開発者やユーザーテストのユーザーではランダム操作の方法を考えてしまうため効果が発揮されにくいとされます。
モンキーテストの効果を最大限生かすためには、テストを自動化するテストツールを利用するのが良いでしょう。
ユーザーテストは最低限実施しよう
「開発されたシステムには思わぬトラブルが潜んでいるかもしれない」といった疑いの姿勢でテストを実施することが重要です。
実際のユーザー利用を想定した性能テストはもちろんのこと、ユーザーテストも合わせて行うようにしましょう。
(画像はPixabayより)