品質特性を紐解くシリーズも、今回がいよいよ最終回です。「安全性」はソフトウェアの利用によって人間や社会、物的環境に実質的な危害を与えないかの度合いです。
解説記事はこちら
ソフトウェアの「品質特性」とは?8つの品質特性と31の品質副特性を詳しく紹介
「安全性(Safety)」には5つの品質副特性があります
- 運用制約性(Operational constraint):危険な操作や想定外の操作を防ぐ制約が設けられているか
- リスク識別性(Risk identification):潜在的な危険やリスクを事前に識別・警告できるか
- フェールセーフ(Fail safe):障害発生時に安全な状態に移行できるか
- 危険警告性(Hazard warning):危険な状況になりそうな場合、利用者が回避できるタイミングで事前に警告できるか
- 統合時安全性(Safe integration):他の部品や外部システムと連携して動作する際、想定外の状態が発生しても危険にさらされないか
今回も、イメージしやすいように例を考えてみます。
| 種類 | 副特性 | 例 | テスト観点の例 |
| ECサイト | 運用制約性 | 管理画面での商品データ一括削除や価格の大幅変更など、致命的な損害につながる操作の前に、確認ダイアログや再認証を求める | 重大操作の実行時に仕様通り確認ダイアログや再認証が挟まり、ワンクリックによる誤操作が確実に防止されるか検証する |
| リスク識別性 | 短時間での過剰な連続注文など、転売やカード不正利用のリスク(潜在的な危険)を検知して管理者へ自動アラートを発する機能 | テスト環境で意図的に連続注文(異常値)を発生させ、管理者画面や通知メールに即座にアラートが届くか確認する | |
| フェールセーフ | 決済システムとの通信障害時、二重課金を避けるために決済機能を自動停止し、カートを保持した安全な状態へ移行する | 決済処理中に意図的に通信を切断し、システムがハングアップせず、ユーザーに実害を与えない「安全モード(受付停止)」へ遷移するか確認する | |
| 危険警告性 | クーポン期限や在庫キープ時間が迫り購入が無効になる危険がある場合、ユーザーが回避・完了できるタイミングで事前警告を表示する | 注文が無効化される直前のタイミングで、画面上に明瞭な警告メッセージが表示されるか確認する | |
| 統合時安全性 | 外部の在庫管理システムから破損データや想定外の値が送られてきても、ECサイト側の注文データが破壊されない | 外部連携APIから不正なフォーマットのデータを送信し、ECサイト本体のデータや機能の安全性が保たれるか検証する | |
| 求人サイト | 運用制約性 | 全応募者を一括で「不採用」にするような、社会的損失(企業の信用失墜)を生む操作時に最終確認を強制する | 一括不採用操作の際、警告を伴う最終確認画面が正しく表示され、誤操作による即時実行が防止されるか確認する |
| リスク識別性 | 求人票作成時に、労働基準法違反や差別表現などの法的リスク(潜在的な危険)を自動識別し、掲載前に警告を発する | 違法性の恐れがある表現を含む求人票の登録を試み、システムがリスクを識別して編集画面上にアラートを表示できるか確認する | |
| フェールセーフ | 応募集中でサーバー負荷が限界に達した際、全停止を避けるため「新規応募のみ一時制限」し、閲覧機能だけは維持する | 擬似的な高負荷をかけ、サイト全体がクラッシュする前に一部機能制限を伴う安全な稼働状態(セーフモード)へ自動移行するか確認する | |
| 危険警告性 | 求人の掲載期間や応募締め切りが数時間後に迫っている際、応募機会を完全に損失する前に事前に警告を通知する | 掲載終了間近の状態を作り出し、マイページや管理画面に回避(更新や応募)を促す警告が正しく表示されるか確認する | |
| 統合時安全性 | 外部の採用管理システムへデータ転送中、相手側がダウンしても自システム内のデータが消失しない(ロールバック等) | データ転送中に宛先サーバーを疑似的にダウンさせ、自システム内の応募データが安全に保持・復元されるか確認する |
ここまでさまざまな品質特性を考えてみて、個人的に負荷テストが気になりました。それは、「負荷テスト(高負荷をかけるテスト)」という1つの手法で、実は複数の品質特性をまとめて検証しているということです。
- 性能効率性 「どれだけ耐えられるか?」⇒ 純粋な処理スピードや限界値の測定。
- 信頼性「高負荷でも壊れないか?」⇒メモリリークや接続切れを起こさず安定稼働し続けるかの確認。
- 移植性(拡張性)「リソースを増やせば解決するか?」⇒サーバーを増やしたときに、負荷が綺麗に分散されるかの確認。
- 安全性(フェールセーフ)「限界を超えたときに、安全に気絶できるか?」⇒画面が真っ白になってクラッシュするのではなく、安全モード(受付制限など)に移行するかの確認。
品質特性を調べながら具体例を考えることは、私自身とても勉強になりました。この記事が少しでもお役に立てれば幸いです。
余談
今回もアイキャッチは、生成AIにブログのイメージ画像を作ってもらいました。今回は小鳥と猫。





