Facebook x

ジャンル

テスト技法・工程 2024.02.07
x hatenabookmark

非機能要件とは?機能要件との違いと重要性・5つの非機能テストを解説

監修: 堀 明広

バルテス・ホールディングス株式会社 R&C部 部長 兼 首席研究員

非機能要件とは?機能要件との違いと重要性・5つの非機能テストを解説

ソフトウェア開発は、クライアントが要求する機能を、要件定義書等で定義し、それに合わせて設計・実装していきます。

しかし、クライアントが要求する機能は最低限必要な事項であり、クライアントの満足度を高めるためには、隠れた要望=「非機能要件」も考慮する必要があります。

今回は、クライアントの満足度やユーザビリティーに関わる「非機能要件」の重要性について解説していきます。

もくじ
  1. クライアントの満足度に関わる「非機能要件」とは
  2. 非機能要件はクライアントの満足度を高めるために重要!
  3. 非機能要件を確認する5つの「非機能テスト」
  4. まとめ

1.クライアントの満足度に関わる「非機能要件」とは

非機能要件では、基本的な機能以外のものを求められます。

具体的にどんな要件なのか、機能要件とは何が違うのか見ていきましょう。

非機能要件とは

非機能要件とは文字通り、機能面以外の要求全般のことです。顕在的な要求ではなく、潜在的な要求といえるでしょう。

例えば「自社の商品を簡単に購入できる機能がほしい」というのが機能要件で、「画面表示までの待ち時間は3秒」「多くのユーザーが一度にアクセスしても、サーバーダウンしないようにする」など、性能やセキュリティ、運用性などに関する要求を指します。

非機能要件を満たさなければ、機能要件が十分でも良いシステム開発ができない可能性があります。機能要件だけでなく、非機能要件の定義もしっかりと行うことが重要です。

機能要件との違い

機能要件と非機能要件の違いは以下の通りです。

機能要件 非機能要件
概要 機能に関する要望をまとめたもの 機能以外に関する要望をまとめたもの

(例)

社員名簿システムの場合

・社員番号で検索することができる

・社員の写真を一覧画面に表示できる

など

・一度に多くのユーザーがアクセスしてもサーバが落ちない

・社員の情報が外部に漏れない

など

機能要件は、ソフトウェアで定義される要件のうち、機能に関するものを言います。

一方で、非機能要件とは、ソフトウェアの使いやすさ・性能・信頼性・拡張性・運用性・セキュリティなどといった、機能以外の要件です。

非機能要件はユーザーの満足度に大きく影響するため、機能要件とともに重要なポイントとなります。

2.非機能要件はクライアントの満足度を高めるために重要!

非機能要件はクライアントの満足度を高めるためにも、とても重要なものです。

しかし、ヒアリングなどを通して明確になりやすい機能要件に対して、非機能要件はクライアントが意識していない部分もあるので、定義漏れが発生する可能性があります。

そのため、ヒアリング内容と併せて、以下の6つのカテゴリの観点からも、分析・要件定義を行うことが大切です。

非機能要求グレード6項目 概要
可用性 システムサービスが継続的に利用できるか
性能・拡張性 システムの性能が良いか、機能が追加できる設計になっているか
運用・保守性 運用に必要な稼働時間が確保できているか、データのバックアップが適切な頻度であるか
移行性 新システムへの安全な移行ができる設計になっているか
セキュリティ 不正アクセスをブロックできるか、機密性の高い情報へのアクセスを制限できるか
システム環境・エコロジー サーバの設置環境が整っているか(温度管理や免震、耐震など)、エネルギー面で環境に配慮されているか

定義決めをしっかり行い、機能要件だけでなく非機能要件も満たす開発やテストができるよう心がけましょう。

3.非機能要件を確認する5つの「非機能テスト」

非機能テストとは、非機能要件を備えたソフトウェアになっているかどうかを確認するためのテストです。代表的な非機能テストとして、以下の5つが挙げられます。

  • 性能テスト
  • ストレステスト
  • ユーザービリティテスト
  • 保守性テスト
  • セキュリティテスト

それぞれ解説していきます。

性能テスト

実際の利用状況を想定・再現した環境でソフトウェアを動かし、要件に沿って意図通りに動くことを確認するテストです。

ここでは主に、時間当たりの処理量や速度、応答時間やメモリの消費具合などのパフォーマンスを確認します。

ストレステスト

ソフトウェアが実際のデータ量やアクセス数に耐えうる構造になっているか確認するテストです。

通常時想定のデータ量はもちろん、突発的にアクセスが集中した場合などの異常な状況下で、システムがダウンするなど、クライアントのシステム利用に支障がないかどうかをチェックします。

ユーザビリティテスト

ソフトウェアがクライアントにとって使いやすいか、分かりやすい操作性になっているかどうかを確認するテストです。

具体的には、画面の表示や配置を見たとき、クライアントがやりたいことをできるかどうか、直感的に操作できるか、などの観点でテストを行います。

保守性テスト

ソフトウェアを長期的に運用していく中で、維持・管理がしやすいかどうかを確認するためのテストです。

具体的には、機能の改修や不具合の検知がしやすい構造になっているか、コードの修正・拡張がしやすいかなどの観点が挙げられます。

セキュリティテスト

ソフトウェアが、悪意のある外部からの攻撃に対して、脆弱な部分がないか、重要情報の流失などの運用上のリスクがないかをテストします。

「ペネトレーションテスト」「脆弱性診断」とも呼ばれています。

まとめ

今回はクライアントの満足度に関わる、非機能要件についてご紹介しました。

非機能要件とは、機能面以外の要求全般のことです。

クライアントが意識しやすい機能要件に対し、非機能要件はクライアントが意識していないニーズを掘り起こすことが必要です。

非機能要件を適切に定義することがクライアントの満足度を向上させる鍵となります。

非機能要件が満たされているかを確認する際には、今回ご紹介した非機能テストを取り入れてみてください。

テスト技法・工程
x hatenabookmark

監修: 堀 明広

バルテス・ホールディングス株式会社 R&C部 部長 兼 首席研究員

組込み系プログラマー、ソフトウェア品質管理を経て、現職はバルテス株式会社 R&C部 部長 兼 上席研究員。担当業務は社内人材育成、検証・分析の技術開発、標準化、セミナー講師。訳書は『ソフトウェアテスト293の鉄則』(日経BP、共訳)、『ISO/IEC/IEEE 29119 ソフトウェアテスト規格の教科書』(バルテス、監訳)。著書は『ソフトウェア見積りガイドブック』(オーム社、共著)、『続・定量的品質予測のススメ』(佐伯印刷、共著)、『IT業界の病理学』(技術評論社、共著)。得意分野はバグ分析。