システム開発を行う際、仕様通りのパフォーマンスを十分に発揮するか否かを、明らかにしなければなりません。機能面はもちろん、操作性や可用性、安全性などの非機能面も、システムの品質をキープする上で肝要です。当記事では、機能に含まれないパフォーマンスをチェックする「非機能テスト」の概要をはじめ、重要度や対象範囲、種類、進め方、ポイントなどを解説します。
非機能テストとは?
「非機能テスト」とは、開発したシステムやソフトウェアに不備がなく正常に作動するか、機能以外の多方面における観点からのチェックを目的とした、ソフトウェアテストの一種です。
非機能テストの非機能要件
はじめに、非機能テストのターゲットとなる、「非機能要件」の内容を理解しておきましょう。
非機能要件とは、機能要件以外のすべての要件を指し、システムの構築やソフトウェアの開発を行う際に、パフォーマンスや可用性、安全性などの非機能面に実装すべき要件のことです。ソフトウェアの運用により動作するものが機能であり、メールの自動送信や顧客情報の登録・検索などが、機能要件のサンプルとして挙げられます。これに対し、非機能要件のサンプルとして挙げられるものは、例えば画面の見やすさや操作性のよさなどです。
非機能要件は、システムへの実装が期待されるものの、仕様書にはっきり記載される機能要件とは異なり、ユーザーの要求が曖昧で、明確な仕様を定めにくい特徴があります。そのため、仕様書に非機能要件を明示しないケースが多々見られますが、非機能要件の認識が異なる場合、発注するクライアントと開発者の間で、大きなトラブルに発展しかねません。
非機能要件に関してはこちらの記事でも詳しく解説しております。
非機能要件とは?具体的な項目や機能要件との違いをわかりやすく解説
非機能要件が重要視されている理由
ここまで重きを置くようになった背景には、移動通信システムの発展によって、多種多様なデバイスの同時接続が可能になるなど、ソフトウェアの使用状況の変化が挙げられます。ソフトウェアの品質は、機能要件をそろえるだけでは維持できず、安全性などの非機能要件の考慮が求められることから始まりました。
また、開発したソフトウェア製品の売れ行きは、非機能要件と密接に関わることも、重きを置かれる大きな理由のひとつです。機能が類似したソフトウェアが複数ある場合、消費者はどのような製品を選ぶのかを考えてみましょう。
各ソフトウェアが同じ機能要件をそろえている場合、どのような非機能要件をそろえているかによって、差が出ます。多くの顧客のソフトウェアに対する要望を、非機能要件として製品に実装されていることが極めて肝要です。要望が実現されたソフトウェアは、人気が高まって売れ行きが好調になり、顧客満足度の向上にも繋がります。
非機能テストの意味
文字通り、アプリケーションの非機能要件をチェックするものですが、仕様がはっきり決まっている機能を試験する「機能テスト」とは異なり、機能以外の重きを置くものをすべて抽出して、試験しなければなりません。ターゲットは漠然としていますが、チェックの中心となるのは、使用性や安全性、信頼性などです。
非機能テストを行う際には、あらかじめユーザーの要望を、理由も含めて詳しく聞き出し、試験すべき非機能要件を見極めておく必要があります。その上で、非機能テストの項目を漏れなく選定し、注意深く試験を実践しましょう。
非機能テストの対象範囲
ソフトウェアテストには、「単体テスト」をはじめに、「結合テスト」「システムテスト」「受け入れテスト」の工程が存在します。
単体テストでは、最小単位の部品と見なされる、それぞれのプログラムに対して不備の有無を調べ、結合テストでは、単体テストをクリアしたプログラムをドッキングして、正常に動作することをチェックします。次に、別称「総合テスト」とも呼ばれるシステムテストでは、プログラムをすべてつなぎ合わせた後の不備がないことを見極め、受け入れテストでは、発注を行ったクライアントが、納品された製品の問題点の有無を調べます。
単体テスト・結合テスト・システムテストは開発者側が、受け入れテストはクライアント側が行います。非機能テストは、一般的にシステムテストや受け入れテストの段階から実践するケースが多いですが、より初期の単体テストや結合テストの段階から実践することもあるようです。
非機能テストにおける8つの種類
ソフトウェアの品質に関する、国際規格として知られる「ISO/IEC9126」において、ソフトウェアを評価する項目として、「機能性」「信頼性」「使用性」「効率性」「保守性」「移植性」が示されています。
これらの項目を考慮した非機能テストは多種多様で、以下から代表的な8種類を紹介します。
・ボリュームテスト
「ボリュームテスト」は、ソフトウェアに大容量のデータを付加して処置する際に、容量の上限に達したデータを、正常に処置できることを見極める試験です。
・負荷テスト
別称「ストレステスト」とも呼ばれる「負荷テスト」は、大量のアクセスによって負荷をかけ、過負荷の状態であるソフトウェアの作動を調べ、限界に達するまでの耐久性をチェックします。万が一、過負荷の状態にはまっても、想定通りにシステム障害を回避できることも要チェックです。
・性能テスト
「性能テスト」は、ソフトウェアの時間効率や資源効率など、要件となるパフォーマンスの発揮力や限界を見極めます。
・セキュリティテスト
「セキュリティテスト」は、外部からの不正アクセスなど、悪質なサイバー攻撃を受けた場合に、ソフトウェアが安全性を保ちつつ、作動するか否かをチェックする試験です。
・ユーザビリティテスト
「ユーザビリティテスト」は、ソフトウェアの操作性や使いやすさなどが、ユーザーの要求に応えていることを見極めます。
・高頻度テスト
「高頻度テスト」は、短時間の間に、データ量が多い処置を連続で要求された場合に、ソフトウェアが正常に作動することをチェックします。
・累積稼働テスト
「累積稼働テスト」は、さまざまな状況において、ソフトウェアを長時間作動させても不備が発生せず、安定性をキープできるかを見極める試験です。
・障害対応テスト
「障害対応テスト」は、ソフトウェアに障害が発生した際に、最小限で済むのか、全体的に影響するのかを認識し、障害への適切な対応をチェックします。
非機能テストを行うことが望ましい課題例
ソフトウェアの品質の維持にあたっては、さまざまな課題が浮上します。以下では、非機能テストの実践により、課題が決着された具体例を2つ紹介します。
某企業では、システムの不備が見つかった際、チームのメンバー間での対応において、バラつきが浮き彫りになったため、非機能テストの手順を統一する取り組みを行ったところ、設計フェーズの弱点を克服できました。
また、某電機メーカーから受注した、セットトップボックスのシステム開発では、メッセージ送信に不備が発生しました。そのシステムから、ユーザーに対してメッセージを送る場合、ユーザー数が増加するたびに、どの程度遅延するのか、パフォーマンスの限界を知りたいと、メーカーより要望が寄せられました。非機能テストを実践した結果、ソフトウェアのパフォーマンスがベンチマーク指標を充足していないことが判明したため、直ちに改良と再チェックを行い、課題を無事に決着へと導きました。
非機能テストは専用ツールを使うのもおすすめ
非機能テストの実践には、専用ツールや専用システムの活用もおすすめです。
各社からWebサイトの速度スコアを計測するツール、負荷テストツール、脆弱性診断ツールなど、非機能テストに役立つ多種多様なツールが提供されています。これらを上手く使いこなせば、初心者でも非機能テストを進めやすくなるでしょう。どのツールを使うべきか迷う場合には、有名なツールから試してみるとよいでしょう。
まとめ
ソフトウェアの開発には、機能要件だけではなく非機能要件にも重きを置き、ユーザーと開発者による、お互いの認識のすり合わせが肝要です。したがって、非機能テストの実践における、ソフトウェアの品質のキープが欠かせません。
ソフトウェアの品質向上にはOBPM Neoのようなプロジェクト管理ツールの導入もおすすめです。
- カテゴリ:
- コラム
- キーワード:
- 非機能テスト