Ubuntu 26.04 + .NET 10 で ASP.NET Core Razor Pages の CRUD アプリを構築し、
その成果物に対して作成した開発工程文書です。
実装済みのコードと実測値に基づいて記述しており、推測による記載は含みません。
Razor Pages 開発文書 の ⑩/全11回です。
シリーズ全記事(全11回)
- 【Razor Pages 開発文書 ①】要件定義書
- 【Razor Pages 開発文書 ②】基本設計書 (1/2) — システム構成・アーキテクチャ・画面設計
- 【Razor Pages 開発文書 ③】基本設計書 (2/2) — データ設計・外部IF・運用設計
- 【Razor Pages 開発文書 ④】詳細設計書 (1/4) — クラス構成・エンティティ・データアクセス層
- 【Razor Pages 開発文書 ⑤】詳細設計書 (2/4) — 画面制御層・起動処理
- 【Razor Pages 開発文書 ⑥】詳細設計書 (3/4) — 発行SQL・処理シーケンス
- 【Razor Pages 開発文書 ⑦】詳細設計書 (4/4) — ビュー・設定・実装上の留意点
- 【Razor Pages 開発文書 ⑧】単体テスト仕様書
- 【Razor Pages 開発文書 ⑨】結合テスト仕様書
- 【Razor Pages 開発文書 ⑩】総合テスト仕様書 (この記事)
- 【Razor Pages 開発文書 ⑪】受入テスト(UAT)仕様書
総合テスト仕様書
| 項目 | 内容 |
|---|---|
| システム名 | BookListRazor(書籍管理システム) |
| 文書番号 | TST-ST-001 |
| 版数 | 1.0 |
| 作成日 | 2026-07-24 |
| 検証対象文書 | 要件定義書(REQ-001) |
1. 文書の目的
本書は 要件定義書 に定義した機能要件(FR)および
非機能要件(NFR)が、システム全体として満たされていることを検証する
テストケースを定義する。
結合テストが「設計どおりに動くか」を確認するのに対し、本テストは
「要件を満たしているか」を確認する。
2. テスト方針
2.1 テスト対象
要件定義書に定義した全要件を対象とする。
| 分類 | 要件 ID | 検証方法 |
|---|---|---|
| 機能要件 | FR-01〜06 | 業務シナリオの通し実行 |
| 性能 | NFR-01〜03 | 応答時間の計測 |
| 可用性 | NFR-04〜05 | 再起動を伴う動作確認 |
| セキュリティ | NFR-06〜09 | 攻撃を模した要求の送信 |
| 運用・保守 | NFR-10〜13 | 運用手順の実行 |
| 移植性 | NFR-14〜15 | 稼働環境の確認 |
| 国際化 | NFR-16 | 日本語データの往復確認 |
2.2 判定の考え方
要件を「満たす/満たさない」の二値で判定する。性能要件については
実測値を記録し、目標値との比較により判定する。
要件どおりだが実用上の注意を要する事項は「所見」として記録し、
不合格とはしない。
3. テスト環境
| 項目 | 内容 |
|---|---|
| OS | Ubuntu 26.04 LTS(WSL2) |
| 実行基盤 | .NET SDK 10.0.302 |
| 接続先 | http://localhost:5271 |
| データベース | SQLite(BookList.db) |
| クライアント | HTTP クライアント(curl)、Web ブラウザ |
4. テストケース
4.1 業務シナリオ(ST-01)
要件定義 3.2 の業務フローを通しで実行する。
| ID | シナリオ | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|
| ST-01-01 | 書籍の登録から確認まで | ホーム → BookLists → Create New → 入力 → Create → 一覧確認 | 登録した書籍が一覧に表示される | 合格 |
| ST-01-02 | 内容の誤りを修正する | 一覧 → Edit → 価格を変更 → Save → 一覧確認 | 変更後の価格が一覧に反映される | 合格 |
| ST-01-03 | 詳細を確認する | 一覧 → Details | 全項目が表示される | 合格 |
| ST-01-04 | 不要な書籍を削除する | 一覧 → Delete → 確認 → Delete → 一覧確認 | 一覧から消える | 合格 |
| ST-01-05 | 複数件の管理 | 3 件登録し、うち 1 件を更新、1 件を削除 | 残 2 件が正しい状態で表示される | 合格 |
4.2 機能要件の充足(ST-02)
| ID | 要件 ID | 検証項目 | 期待結果 | 結果 |
|---|---|---|---|---|
| ST-02-01 | FR-01 | 一覧表示 | 全件が表形式で表示される。0 件でもエラーとならない | 合格 |
| ST-02-02 | FR-02 | 新規登録 | 1 件登録でき、ID が自動採番される | 合格 |
| ST-02-03 | FR-03 | 詳細表示 | 指定 ID の全項目が表示される。該当なしは 404 | 合格 |
| ST-02-04 | FR-04 | 情報更新 | 指定 ID の内容が更新される。該当なしは 404 | 合格 |
| ST-02-05 | FR-05 | 削除 | 確認画面を経て物理削除される | 合格 |
| ST-02-06 | FR-06 | 画面遷移 | 全画面のヘッダから Home / Privacy / BookLists へ遷移できる | 合格 |
4.3 性能要件(ST-03)
ST-03-01 応答時間(NFR-01:1 秒以内)
10 回計測の平均値と最大値を記録する。
| データ件数 | 対象画面 | 平均 | 最大 | 目標 | 判定 |
|---|---|---|---|---|---|
| 7 件 | 一覧 /BookLists
|
7 ms | 10 ms | 1000 ms | 合格 |
| 7 件 | 登録 /BookLists/Create
|
2 ms | 3 ms | 1000 ms | 合格 |
| 307 件 | 一覧 /BookLists
|
140 ms | 186 ms | 1000 ms | 合格 |
| 307 件 | 詳細 /BookLists/Details
|
2 ms | 3 ms | 1000 ms | 合格 |
ST-03-02 データ件数(NFR-02:数百件)
| ID | 検証項目 | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|
| ST-03-02 | 想定上限での動作 | 307 件を投入し全機能を実行 | 全機能が正常に動作し、応答時間が目標内 | 合格 |
所見(性能特性)
一覧画面の応答時間は登録件数にほぼ比例する(7 件で 7 ms、307 件で 140 ms)。
この傾向から、NFR-01 の 1 秒を満たす上限は概ね 2000 件程度と見積もられる。
応答サイズも同様に増大し、307 件時点で約 252 KB に達する。
要件(数百件)の範囲では問題ないが、件数が桁で増える場合は
ページングの導入が必要となる(詳細設計 12.1)。
詳細・編集・削除の各画面は 1 件のみを取得するため、件数の影響を受けない。
ST-03-03 同時利用(NFR-03:1 名)
| ID | 検証項目 | 期待結果 | 結果 |
|---|---|---|---|
| ST-03-03 | 単一利用者での動作 | 全機能が正常に動作する | 合格 |
複数利用者による同時更新は要件の対象外である。なお現仕様では
更新競合を検知できない(詳細設計 12.3)ため、要件を変更する場合は
バージョン列の追加が前提となる。
4.4 可用性要件(ST-04)
| ID | 要件 ID | 検証項目 | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|---|
| ST-04-01 | NFR-04 | 手動起動 | dotnet run --launch-profile http |
起動し、要求を受け付ける | 合格 |
| ST-04-02 | NFR-05 | 再起動後のデータ保持 | 登録 → 停止 → 再起動 → 一覧 | 登録データが残っている | 合格 |
| ST-04-03 | NFR-05 | 再起動後の機能継続 | 再起動後に登録・更新・削除 | 全機能が正常に動作する | 合格 |
4.5 セキュリティ要件(ST-05)
| ID | 要件 ID | 検証項目 | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|---|
| ST-05-01 | NFR-06 | CSRF:トークンなし | トークンを付けずに更新要求を送信 | HTTP 400 で拒否される | 合格 |
| ST-05-02 | NFR-06 | CSRF:不正トークン | 無効なトークンで更新要求を送信 | HTTP 400 で拒否される | 合格 |
| ST-05-03 | NFR-07 | XSS:スクリプト注入 | 書名に <script>alert(1)</script> を登録し表示 |
エスケープされ、スクリプトとして実行されない | 合格(生タグ 0 箇所) |
| ST-05-04 | NFR-08 | SQL インジェクション | 発行 SQL のパラメータ化を確認 | 全問い合わせが値をパラメータとして送出している | 合格 |
| ST-05-05 | NFR-09 | 通信経路 | 待ち受けアドレスを確認 |
localhost のみで待ち受ける |
合格 |
所見(適用範囲の限界)
本システムは認証・認可を実装しない(要件定義 7. スコープ外)。
したがって当該ホストに到達できる利用者は全データを操作できる。
NFR-09 の遵守(外部公開しないこと)が唯一の防御線となる。
4.6 運用・保守要件(ST-06)
| ID | 要件 ID | 検証項目 | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|---|
| ST-06-01 | NFR-10 | 起動の簡便性 | コマンド 1 つで起動 | 追加手順なしで起動する | 合格 |
| ST-06-02 | NFR-11 | スキーマ変更の追跡 |
__EFMigrationsHistory を確認 |
適用済みマイグレーションが記録されている | 合格 |
| ST-06-03 | NFR-12 | SQL ログ | 操作後に標準出力を確認 | 実行された SQL と所要時間が出力される | 合格 |
| ST-06-04 | NFR-13 | バックアップ |
BookList.db をコピーし別環境で参照 |
単一ファイルのコピーで完結する | 合格 |
4.7 移植性要件(ST-07)
| ID | 要件 ID | 検証項目 | 期待結果 | 結果 |
|---|---|---|---|---|
| ST-07-01 | NFR-14 | Ubuntu での稼働 | Windows 固有製品に依存せず動作する | 合格 |
| ST-07-02 | NFR-15 | 追加ミドルウェア不要 | DB サーバの別途導入なしに動作する | 合格 |
4.8 国際化要件(ST-08)
| ID | 要件 ID | 検証項目 | 入力 | 期待結果 | 結果 |
|---|---|---|---|---|---|
| ST-08-01 | NFR-16 | 日本語の登録・表示 | 書名「ASP.NET Core 入門」、出版社「技術評論社」 | 文字化けせず保存・表示される | 合格 |
| ST-08-02 | NFR-16 | 日本語の更新 | 日本語を含む値へ更新 | 正しく更新される | 合格 |
| ST-08-03 | NFR-16 | 多バイト文字の長大値 | 1000 文字の日本語 | 欠落なく保存される | 合格 |
所見(HTML 出力形式)
日本語は HTML 上で数値文字参照(入 形式)として出力される。
これは既定のエスケープ仕様によるもので、ブラウザ上の表示は正常である。
ただし HTML ソースを文字列検索する自動テストを作成する場合は、
デコードを介する必要がある。
4.9 エラー処理(ST-09)
| ID | 検証項目 | 手順 | 期待結果 | 結果 |
|---|---|---|---|---|
| ST-09-01 | 存在しないデータへの操作 | 未登録 ID を指定して各画面を要求 | HTTP 404 が返る | 合格 |
| ST-09-02 | 不正な入力値 | 型不正・必須未入力で送信 | 登録されず、画面にエラーが表示される | 合格 |
| ST-09-03 | 更新競合 | 存在しない ID へ更新を送信 | HTTP 404、既存データは無変更 | 合格 |
5. 合否判定基準
| 項目 | 基準 |
|---|---|
| 機能要件 | FR-01〜06 のすべてが期待どおり動作すること |
| 非機能要件 | NFR-01〜16 のうち、要件として測定可能なものがすべて目標を満たすこと |
| 全体 | 要件未達が 0 件であること |
「所見」として記録した事項は、現要件を満たしたうえでの
将来的な注意点であり、不合格とは扱わない。
6. トレーサビリティ
| 要件 ID | 対応するテストケース | 判定 |
|---|---|---|
| FR-01 | ST-01-01、ST-02-01 | 合格 |
| FR-02 | ST-01-01、ST-02-02 | 合格 |
| FR-03 | ST-01-03、ST-02-03 | 合格 |
| FR-04 | ST-01-02、ST-02-04 | 合格 |
| FR-05 | ST-01-04、ST-02-05 | 合格 |
| FR-06 | ST-02-06 | 合格 |
| NFR-01 | ST-03-01 | 合格 |
| NFR-02 | ST-03-02 | 合格 |
| NFR-03 | ST-03-03 | 合格 |
| NFR-04 | ST-04-01 | 合格 |
| NFR-05 | ST-04-02、ST-04-03 | 合格 |
| NFR-06 | ST-05-01、ST-05-02 | 合格 |
| NFR-07 | ST-05-03 | 合格 |
| NFR-08 | ST-05-04 | 合格 |
| NFR-09 | ST-05-05 | 合格 |
| NFR-10 | ST-06-01 | 合格 |
| NFR-11 | ST-06-02 | 合格 |
| NFR-12 | ST-06-03 | 合格 |
| NFR-13 | ST-06-04 | 合格 |
| NFR-14 | ST-07-01 | 合格 |
| NFR-15 | ST-07-02 | 合格 |
| NFR-16 | ST-08-01〜03 | 合格 |
全 22 要件を検証し、未達は 0 件である。
7. 実施記録
| 実施日 | 対象範囲 | 実施 | 合格 | 不合格 |
|---|---|---|---|---|
| 2026-07-24 | ST-01〜ST-09 | 34 | 34 | 0 |
要件未達:0 件
7.1 記録された所見
| No | 内容 | 該当ケース | 対応方針 |
|---|---|---|---|
| 1 | 一覧の応答時間が件数に比例する。1 秒を満たす上限は約 2000 件 | ST-03-01 | 要件(数百件)内では問題なし。件数増加時はページングを導入 |
| 2 | 認証がないため、到達可能な利用者は全データを操作できる | ST-05 | 外部公開しないこと(NFR-09)で担保 |
| 3 | 日本語が HTML 上で数値文字参照となる | ST-08 | 表示は正常。自動テスト作成時はデコードが必要 |
| 4 | 更新競合を検知できない | ST-03-03 | 単一利用者前提のため現要件では問題なし |
8. 改訂履歴
| 版数 | 日付 | 内容 |
|---|---|---|
| 1.0 | 2026-07-24 | 初版作成。全 34 ケースを実施し、要件未達 0 件を確認 |
← 前:【Razor Pages 開発文書 ⑨】結合テスト仕様書 | 次:【Razor Pages 開発文書 ⑪】受入テスト(UAT)仕様書 →