N
NARITAI

経営情報システム

重要

品質評価(ソフトウェア品質特性、テスト手法)

品質特性、レビュー、テスト技法、検証と妥当性確認を扱う。

品質評価

この章で覚えておきたいこと

  • 品質評価は、ソフトウェアや情報システムが要求どおりの品質を満たしているかを、品質特性、レビュー、テストで確認する考え方である。
  • 一次試験では、ブラックボックステスト、ホワイトボックステスト、回帰テスト、結合テスト、負荷テストの違いを、目的と確認対象で切り分けられることが重要である。
  • アルファテストとベータテストは実施者と実施環境で区別し、ドライバとスタブは「呼び出す側か、呼び出される側か」で区別する。
  • 非機能要求グレードは、システムを採点する仕組みではなく、非機能要求を段階的に整理して合意するための枠組みである。
  • 検証は「正しく作っているか」、妥当性確認は「正しいものを作っているか」を確かめる考え方である。
品質評価を品質特性、レビュー、テスト、検証、妥当性確認で整理する図解

基本知識

ソフトウェア品質特性

ソフトウェア品質特性は、ソフトウェアをどの観点で評価するかを整理したものである。一次試験では、機能性、信頼性、使用性、効率性、保守性、移植性の 6 特性をまず押さえる。2015 年第 23 問では、副特性との対応が問われ、セキュリティが機能性の文脈で扱われることも確認された。情報セキュリティの論点と見た目が似ていても、ここでは品質特性の分類として読む必要がある。

ソフトウェア品質特性の6つの評価観点を業務システム点検で示す図解

非機能要求と非機能要求グレード

機能要求が「何ができるか」を示すのに対し、非機能要求は「どの程度の品質で実現するか」を示す。応答時間、同時アクセス数、可用性、バックアップ、監査証跡などが代表例である。2012 年第 18 問では、同時アクセス数が性能・拡張性に属すること、運用監視が運用・保守性に属することなどが問われた。

非機能要求グレードは、可用性、性能・拡張性、運用・保守性、セキュリティなどの観点で要求を整理し、発注者と受注者の合意を取りやすくするための枠組みである。評価点を付けて優劣を決める制度だと読むと誤る。

非機能要求グレードを発注者と開発側の合意づくりとして示す図解

レビュー技法

レビューは、プログラムを実行する前に、仕様書や設計書、ソースコードなどの成果物を人が確認して欠陥を見つける活動である。2011 年第 20 問では、インスペクションが、役割を明確にした公式なレビューであることが問われた。作成者が説明しながら進めるのはウォークスルー、資料を回覧して個別に確認するのはパスアラウンドである。

インスペクション、ウォークスルー、パスアラウンドの違いを示す図解

テストレベル

テストレベルは、どの範囲を対象に確認するかで分ける。単体テストはモジュール単位、結合テストはモジュール間インタフェース、システムテストはシステム全体、受入テストや検収テストは利用者や発注者の立場での確認である。2007 年第 19 問や 2019 年第 18 問では、結合テストと他のテストの違いを切り分けさせる出題が見られた。結合テストを性能確認のテストだと誤認しないことが重要である。

単体テスト、結合テスト、システムテスト、受入テストを対象範囲で示す図解

テスト観点とテスト技法

ブラックボックステストは内部構造を見ずに仕様、入力、出力から確認する。ホワイトボックステストは分岐、繰り返し、経路など内部ロジックを確認する。2013 年第 19 問、2015 年第 19 問、2019 年第 18 問、2025 年第 7 問で繰り返し問われている頻出論点である。

同値分割は同じ結果になる入力群から代表値を選ぶ技法で、境界値分析は有効値と無効値の境目付近を重点的に確認する技法である。2025 年第 7 問では、境界値分析の説明を他の技法の説明と入れ替えて問う形だった。2020 年第 20 問では、条件と結果の組合せを整理する決定表がブラックボックステストの技法として問われた。

回帰テストは、変更や修正の後で既存機能に悪影響が出ていないかを確認する。負荷テストは、大量アクセスなど高負荷時の応答時間や資源利用を確認する。両者は名前の印象で混同しやすいが、目的がまったく異なる。

ブラックボックス、ホワイトボックス、境界値、回帰、負荷のテスト観点を示す図解

アルファテストとベータテスト

アルファテストは、主に開発側の管理下で実施するリリース前確認である。ベータテストは、外部利用者や実利用に近い環境で使ってもらい、実使用に近い状況で問題を見つける確認である。2018 年第 21 問、2023 年第 2 回第 15 問、2025 年第 7 問では、実施者や実施環境を入れ替えて判定させる形で出題された。

アルファテストとベータテストを実施者と環境で区別する図解

ドライバとスタブ

結合テストでは、未完成のモジュールの代わりにダミーモジュールを使う。ドライバは未完成の上位モジュールの代替であり、下位モジュールを呼び出して試すために使う。スタブは未完成の下位モジュールの代替であり、上位モジュールから呼び出される側として仮実装する。2017 年第 19 問、2025 年第 7 問では、この方向の理解が直接問われた。

ドライバとスタブを呼び出す側と呼び出される側で区別する図解

検証と妥当性確認

検証は、仕様書、設計書、プログラムが前工程の成果物どおりにできているかを確認する考え方であり、「正しく作っているか」と覚える。妥当性確認は、利用者の要求や業務目的に合ったものになっているかを確認する考え方であり、「正しいものを作っているか」と覚える。受入テストや検収テストは、妥当性確認の性格が強い。

検証と妥当性確認を確認対象の違いで示す図解

エラー埋め込み法

エラー埋め込み法は、既知のエラーを意図的に埋め込み、その発見率から潜在エラー数を推定する方法である。2023 年第 1 回第 18 問では、埋め込みエラー 100 件のうち 40 件が見つかり、発見総数 50 件のうち埋め込みエラー以外が 10 件だったので、10 / x = 40 / 100 とおいて潜在エラー総数を 25 件と推定させた。計算自体よりも、発見総数をそのまま使わず内訳に分けることが重要である。

エラー埋め込み法で既知エラーの発見率から潜在エラーを推定する図解

この章のまとめ

  • 品質評価では、品質特性、非機能要求、レビュー、テストのどの論点かを先に見分ける。
  • ブラックボックステストは外部仕様、ホワイトボックステストは内部構造、回帰テストは変更影響、負荷テストは高負荷時性能を確認する。
  • アルファテストとベータテストは実施者と環境で区別し、ドライバとスタブはモジュールの向きで区別する。
  • 非機能要求グレードは要求整理の枠組みであり、インスペクションは役割を決めて行う公式レビューである。
  • 検証と妥当性確認は、前工程との整合性を見るか、利用目的への適合を見るかで使い分ける。
品質評価の混同しやすい論点を最終確認する図解

一次試験過去問での出方

  • 2007 年第 19 問では、検収テストを発注者側の受入確認として理解できるかが問われた。
  • 2009 年第 18 問では、システムテスト設計の進め方が問われ、テスト項目とテストケースの整理順序を確認させた。
  • 2011 年第 20 問では、インスペクションをウォークスルーやパスアラウンドと区別させた。
  • 2012 年第 18 問では、非機能要求グレードの分類として、可用性、性能・拡張性、運用・保守性、セキュリティの対応が問われた。
  • 2013 年第 19 問では、ブラックボックステストとホワイトボックステストの違いが出題された。
  • 2015 年第 17 問では、非機能要求グレードが要求を段階的に詳細化して合意する枠組みだと問われた。
  • 2015 年第 19 問では、ブラックボックステスト、回帰テスト、決定表テストなどの説明を入れ替えて判定させた。
  • 2015 年第 23 問では、ソフトウェア品質特性と副特性の対応が問われた。
  • 2017 年第 19 問では、ドライバとスタブ、単体テストと結合テストの順序などが問われた。
  • 2018 年第 21 問では、受入テスト、アルファテスト、モンキーテスト、A/B テスト、回帰テストの区別が出題された。
  • 2019 年第 18 問では、結合テスト、ブラックボックステスト、ホワイトボックステスト、リグレッションテストの切り分けが問われた。
  • 2020 年第 20 問では、決定表がブラックボックステストの技法として問われた。
  • 2023 年第 1 回第 18 問では、エラー埋め込み法の計算問題が出題された。
  • 2023 年第 2 回第 15 問では、ペネトレーションテスト、アルファテスト、モンキーテスト、ベータテスト、受入テスト、回帰テストなどを横断的に区別させた。
  • 2025 年第 7 問では、アルファテスト、回帰テスト、境界値分析、ドライバ、ホワイトボックステストが一問でまとめて問われた。