要件どおりに機能するホームページやアプリケーションを開発しても、画面遷移に長い時間がかかったり、少ない負荷でシステムがダウンしてしまっては、顧客満足を得ることはできません。このような場合は「機能テスト」に加えて「非機能テスト」を行う必要があります。「機能テスト」と「非機能テスト」の違いについて理解し、状況に応じて使い分けられるようにしましょう。
要件定義とは
要件定義とは、開発するシステムにどのような機能が必要か、クライアントの要求に合わせて具体的に決定することです。
システム開発における最初の工程であり、要件定義が適切に行われていないと、開発後に大幅な追加・修正が必要になります。決定される要件は「機能要件」と「非機能要件」の2つに分けることができます。
「機能要件」はクライアントがシステムに求める機能になります。例えば、ECサイトの場合であれば、会員登録、商品登録、商品検索、カート機能、決済機能などが該当します。
一方、「非機能要件」は「機能要件」以外の要件全般になります。例えば画面遷移の早さ、情報漏洩への対策、ユーザーの使い勝手、運用保守性、インフラ拡張性などになります。
それぞれの要件は「機能テスト」と「非機能テスト」で確認していきます。
機能テストとは
「機能テスト」とは、要件定義で設計された「機能要件」が正しく実装されていることを検証するテストになります。つまり開発目的となるシステムの機能に関する要件が満たされているかを確認するテストのことです。
Webサイトの会員登録システムを例に挙げると、
- 会員登録ボタンをクリックすると、登録に必要な情報を入力する画面に遷移する。
- 入力の形式が誤っている場合にエラーを表示させる。
- 会員登録が完了すると、入力されたメールアドレス宛てに自動でメールが送られる。
などクライアントが求める機能についての要件が機能要件です。
機能要件が一つでも満たされていないということは、システムの機能がクライアントの要望通りに実装できていないことを意味します。そのため機能要件が全て満たされているか、確認する機能テストは非常に重要です。
非機能テストとは
「非機能テスト」とは要件定義で設計された「非機能要件」が正しく実装されていることを検証するテストになります。非機能テストの範囲は多岐にわたります。画面遷移の早さを確認する「性能テスト」、情報漏洩への対策を確認する「脆弱性テスト」、ユーザーの使い勝手を確認する「UI/UXテスト」などがあります。
webサイトの会員登録システムを例に挙げると、
- 会員登録ボタンをクリックしてから、3秒以内に次の画面に推移する。
- 予想されるアクセス負荷を受けても、システムがダウンしない。
- 入力した情報が外部から盗まれない形で暗号化されている。
- ユーザーにとってサイトの使い方が直感的にわかるようになっている。
などの直接的な機能以外で必要となる動作等についての要件が非機能要件です。
非機能要件は機能要件と比べ重要度が低いように思えますが、システムの使いやすさに直結する要件です。充分な水準で満たすことができないとクライアントから高い評価を得ることができません。
非機能テストの例としては、負荷テストや脆弱性診断が挙げられます。
非機能テストの例につきましては、こちらの記事をご参考ください。
【脆弱性診断とは?必要性や費用も解説】ー脆弱性診断でよくあるお悩みー
【負荷テストとは?必要性や手順も解説】ー負荷テストでよくあるお悩みー
機能テストと非機能テストの違い
機能テストと非機能テストの特徴をまとめると下の表のようになります。
機能テスト | 非機能テスト | |
---|---|---|
テスト対象 | 機能そのもの (機能要件) | 機能以外の要素 (非機能要件) |
目的 | システムが正しく機能するかを確かめる。 | システムの質が充分かを確かめる。 |
クライアントの認識 | 最重要、正しく機能が実装、確認されていて当然。 | 実装、確認されていると嬉しい。 |
テスト観点の設定 | 比較的簡単。 | 難しい。 |
含まれるテスト | ・結合テスト/総合テスト ・ユーザー受入テスト ・回帰テスト 他 | ・脆弱性テスト ・性能テスト/負荷テスト ・UI/UXテスト 他 |
非機能テストを効果的に実施するには
機能テストは求められている機能が正しく動作するかを確認するため、テスト観点を比較的簡単に設定できます。しかし非機能テストはシステムの質を確認するため、クライアントが必要とする水準を見極める必要があり、テスト観点の設定が難しいです。
例えばWebサイトの会員登録画面の遷移に3秒かかったとしても、多くの人はストレスを感じません。しかし大事なプレゼンテーションの場で、スライドのページ切り替えに3秒かかった場合、多くの人がページの切り替えが遅い、と不満を感じるでしょう。画面切り替えの早さ一つをとっても、システムの使われる場面によって求められる水準が異なるのです。
非機能テストを効果的に実施するには、クライアントと必要な水準について意見をすり合わせた上で、具体的な非機能要件を設定する必要があります。
クライアントと必要な水準について確認する際には、情報処理推進機構(IPA)の非機能要求グレードを参考にすることがおすすめです。
システムの非機能要件として考えられる項目とその水準が表になっており、求められているレベルの確認に最適です。
非機能要求グレードについては、下記リンクをご参考ください。
システム構築の上流工程強化(非機能要求グレード)紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構
まとめ
機能テストと非機能テストは、テスト対象や目的が大きく異なります。
機能テストはシステムの機能が正しく働くことを保証し、非機能テストはシステムの質が充分であることを保証します。
両テストを効果的に実行することで、ユーザーやクライアントの満足度が高いシステムを開発することができます。
株式会社GENZでは、機能テスト・非機能テストも含めたITに関するお困りごとに幅広く対応しております。
非機能要件をテストしたいけれど、どんなことをテストすればよいかわからない、という場合でも大丈夫です。テスト経験豊富な専門家がお客様のシステムに合ったテスト実施案を提案させていただきます。機能テストと非機能テストを一括でご依頼いただくことも可能です。
GENZと共にお客様のシステムをより良いものにしてみませんか。