非機能要件とは?

male Icon

このツールせっかく買ったのにすぐに固まっちゃうよ

それは残念。性能が悪かったみたいだね。
非機能テストを見落とすとシステムが動かなくなっちゃうよ

female Icon

male Icon

えっ?力量テストだって?仕事の力量をテストするなら、
資料の速さや丁寧さに点数でもつけるのかな?

あれ?どこかで聞いたような・・・?
力量テストじゃなくて、非機能テストだよ
非機能テストでの見落としがちな重要ポイントを解説するね

female Icon

非機能要件とは

システム設計においては、機能要件と非機能要件の違いを理解することが重要です。本記事では、システム設計で見落としがちな非機能要件の重要なポイントと、非機能要件に関する代表的なテスト手法や目安となる指標について紹介します。

非機能要件の概要

非機能要件とは「システムがどのように動作するか」に関する要件です。これには、性能、可用性、セキュリティなど、システムの品質や使い勝手を保証するための要素が含まれます。

非機能要件と機能要件の違いについて

システム設計には、機能要件と非機能要件があります。機能要件は、クライアントの要望をもとにシステムが具体的に提供すべき機能やサービスを指します。一方で非機能要件は、システムの性能や使い勝手、セキュリティなど、機能が提供される際の条件や制約を指します。

機能要件:

  • システムが何をするかを定義
  • 主目的となる機能面、クライアントの要望
    例:ユーザー登録、データ保存、データ検索など

非機能要件:

  • システムがどのように機能を提供するかを定義
  • 主目的となる機能面の要件以外すべてが該当
    例:システムの応答速度、稼働時間、セキュリティレベル

非機能要件は、システムの使い勝手や運用の効率性を大きく左右します。機能要件と比較して見落としがちではあるものの、システムを開発する上で非常に重要な要素です。

システムテストにおける機能要件と非機能要件の違い

なぜ非機能要件が重要か

非機能要件はシステムの全体的なパフォーマンスと品質に影響します。適切に設定されていないと、システムの信頼性やパフォーマンスが低下し、最終的にはユーザーの満足度が損なわれる可能性があります。例えば、システムが高負荷に耐えられない、セキュリティが不十分であるといった問題が発生すると、ビジネスにとって重大な影響を及ぼすことがあります。

機能テストと非機能テストの違いを詳しく知りたい方はこちらの記事をご参照ください。

【ゼロからわかるシステムテスト入門】―機能テストと非機能テストの違いとはー

非機能要件の定義

非機能要件を定義する上で、非機能要求が必要となります。非機能要件は、非機能要求をもとに整理していきます。非機能要求は独立行政法人情報処理推進機構(IPA)によって、以下の6大項目に分類されます。

非機能要求グレードの6大項目

非機能要求グレードの6大項目は以下の通りです。

可用性 システムがどれだけの時間、正常に稼働しているかを示します。高可用性が求められるシステムは、障害発生時にも継続的にサービスを提供する必要があります。
例:冗長化やバックアップ機能の確認
性能・拡張性 システムがどの程度の速度で処理を行えるか、また将来的な需要の増加にどのように対応できるかを示します。性能はユーザーの使い勝手に影響し、拡張性はシステムの長期的な利用に重要です。
例:システムの応答時間やスループットを測定
将来的な需要の増加にどの程度対応できるかを評価
運用・保守性 システムの運用や保守にどれだけのコストと時間がかかるかを評価します。保守が簡単であるほど、システムの運用は効率的になります。
例:ログ管理や監視機能の確認、マニュアル整備
移行性 新しい環境やバージョンへの移行の容易さを示します。システムのアップグレードや移行がスムーズに行えることは、ビジネスの継続性を保つために重要です。
例:移行に向けたテストスケジュールの立案
セキュリティ データやシステムの保護に関する要件です。システムが不正アクセスやデータ漏洩からどの程度守られているかを評価します。
例:脆弱性の確認
システム環境・エコロジー システムがどのようなハードウェアやソフトウェア環境で動作するか、またエコロジーに対する配慮がどの程度かを示します。
例:システム設置環境の確認

非機能要件グレードの6大項目

非機能要求グレードについてより詳しく知りたい方は、下記リンクをご参照ください。

システム構築の上流工程強化(非機能要求グレード)紹介ページ | アーカイブ | IPA 独立行政法人 情報処理推進機構

非機能要件テストの重要ポイント

非機能要件テストは、要求された非機能要求の基準をシステムが満たしているか確認するための重要なテストです。

代表的なテスト手法

非機能要件テストでは、どのようなテストを行えばいいのでしょうか。代表的なテストとして、以下の3つを紹介します。

1.脆弱性診断(セキュリティテスト):

システムのセキュリティに関連するテストで、潜在的なセキュリティリスクや脆弱性を特定することを目的としています。攻撃者がシステムに侵入するために利用する可能性のある脆弱性を検出し、システムを強化するための重要なステップです。

2.性能テスト/負荷テスト:

システムが期待される負荷やストレスにどのように対応するかを評価するテストです。性能テストは、システムの応答時間やスループットを測定し、負荷テストは高負荷時のシステムの動作を確認します。

3.UI/UXテスト:

ユーザーインターフェースとユーザーエクスペリエンスの品質を評価するためのテストです。ユーザーがシステムをどれだけ直感的に操作できるか、または使用中にストレスを感じないかを検証します。

目安となる非機能要件の指標

「非機能要求グレードの6大項目」に基づいてシステムテストを行う際、具体的にどの項目をどのくらいの指標値で表すかは難しい課題です。そこで、システム設計における目安として活用できる指標に、設計指標(RASIS)と評価基準(SLA/SLO)があります。

それぞれの特徴は以下の通りです。

RASIS:

システムに関する、Reliability(信頼性)、Availability(可用性)、Scalability(拡張性)、Integrity(整合性)、Serviceability(保守性)の頭文字をとったRASISという指標があります。システムのサービス全般に関する指標基準のひとつですが、非機能要件の指標としても有効です。

SLA(Service Level Agreement):

SLAは「サービスレベル契約」と訳されます。サービスの提供者側と利用者側が、そのサービスが満たすべき品質について合意したものです。満たされない場合は、契約違反としてペナルティが課せられる場合もあります。

SLO(Service Level Objective):

SLOは「サービスレベル目標」と訳されます。サービスの品質やパフォーマンスを定量的に示すための基準です。SLO(サービスレベル目標)は、SLA(サービスレベル契約)で顧客と合意した契約内容に対して、それを達成するための具体的な評価基準や指標値や目標を示します。

テストケース

最後に非機能要件のテストケースを紹介します。代表的な非機能要件のテストケースとしては、以下が挙げられます。

脆弱性診断のテストケース:

SQLインジェクションやクロスサイトスクリプティング(XSS)など、セキュリティ脆弱性をチェックします。

性能テストのテストケース:

システムの応答速度やスループットを測定し、性能要件に対する適合度を確認します。

テスト手法の例

脆弱性診断、負荷テストについてより詳しく知りたい方はこちらの記事をご参照ください。
【脆弱性診断とは?必要性や費用も解説】ー脆弱性診断でよくあるお悩みー
【負荷テストとは?必要性や手順も解説】ー負荷テストでよくあるお悩みー

まとめ

非機能要件はシステムの成功に不可欠ですが、クライアントから要望が出にくい要素でもあります。機能要件と同様に重要な非機能要件を適切に設定し、テストを行うことで、高品質なシステムを提供することができます。

株式会社GENZでは、ソフトウェアテストを中心にITに関するお困りごとに幅広く対応しております。お問い合わせの段階では、プロジェクトの詳細やスケジュール・仕様が確定していなくても、解決したい課題にあったテスト内容を一緒に考えさせていただきます。

社内でテストを計画、実施することが困難な場合に、少ないリソースでテストが行えるのもGENZの強みです。

お問い合わせはこちら