"No","テストID","テスト種別","要件カテゴリ","テストケース名","テスト条件","測定項目","合格基準","優先度","備考"
"1","NFT-001","性能テスト","レスポンス","API応答時間テスト","通常負荷時にAPIエンドポイントにリクエストを送信","応答時間（ms）","95パーセンタイルで500ms以内","高","REST APIエンドポイント全般が対象"
"2","NFT-002","性能テスト","レスポンス","データベースクエリ性能テスト","複雑なクエリ実行時のレスポンス測定","クエリ実行時間","中程度クエリで200ms以内","高","PostgreSQL/MySQL/SQLite対応"
"3","NFT-003","性能テスト","スループット","同時接続処理テスト","Gunicornワーカー設定（workers: CPU*2+1）での同時リクエスト処理","同時処理可能リクエスト数","設定ワーカー数に応じた同時処理が可能","高","gunicorn.conf.pyの設定に基づく"
"4","NFT-004","性能テスト","スループット","バックグラウンドワーカー処理テスト","django-q設定（workers: 4, timeout: 90s）でのタスク処理","タスク処理スループット","キュー制限（queue_limit: 50）内で処理完了","中","config_template.yamlのbackground設定に基づく"
"5","NFT-005","性能テスト","レスポンス","キャッシュ性能テスト","Redis外部キャッシュ有効時のデータ取得","キャッシュヒット率・応答時間","キャッシュヒット時50ms以内","中","cache設定（port: 6379）に基づく"
"6","NFT-006","負荷テスト","耐久性","長時間稼働テスト","24時間連続稼働での安定性確認","メモリ使用量・エラー率","メモリリーク無し・エラー率0.1%以下","高","max_requests: 1000, max_requests_jitter: 50設定"
"7","NFT-007","負荷テスト","スケーラビリティ","データ量増加時性能テスト","大量データ（10000フィールド）インポート時","処理時間・メモリ使用量","DATA_UPLOAD_MAX_NUMBER_FIELDS設定内で正常処理","中","settings.pyのDATA_UPLOAD_MAX_NUMBER_FIELDS: 10000"
"8","NFT-008","セキュリティテスト","認証","パスワードポリシー検証テスト","Django標準パスワードバリデーター適用確認","パスワード強度チェック結果","UserAttributeSimilarityValidator/MinimumLengthValidator/CommonPasswordValidator/NumericPasswordValidator全て通過","高","AUTH_PASSWORD_VALIDATORS設定"
"9","NFT-009","セキュリティテスト","認証","ログイン試行制限テスト","連続ログイン失敗時のレート制限確認","ブロック発動タイミング","5回/分でレート制限発動","高","ACCOUNT_RATE_LIMITS: login_failed設定"
"10","NFT-010","セキュリティテスト","認証","APIトークン認証テスト","トークンの有効期限・失効確認","認証結果","失効トークンでアクセス拒否・期限切れトークンで認証失敗","高","ApiTokenAuthentication実装"
"11","NFT-011","セキュリティテスト","認証","OAuth2認証テスト","OAuth2フローでの認証確認","認証結果・スコープ検証","正しいスコープでのみアクセス許可","高","OAuth2Authentication/OAUTH2_PROVIDER設定"
"12","NFT-012","セキュリティテスト","認証","二要素認証（MFA）テスト","TOTP/WebAuthn/リカバリーコードでの認証","MFA認証結果","MFA_SUPPORTED_TYPES設定の全タイプで認証成功","高","MFA_ENABLED: True設定"
"13","NFT-013","セキュリティテスト","認証","LDAP認証テスト","LDAPバックエンド経由での認証確認","LDAP認証結果","設定されたLDAPサーバーで認証成功","中","AUTH_LDAP設定（オプション機能）"
"14","NFT-014","セキュリティテスト","認可","ロールベースアクセス制御テスト","RolePermissionによるアクセス制御確認","アクセス可否","設定ロールに応じたアクセス制御","高","InvenTree/permissions.py実装"
"15","NFT-015","セキュリティテスト","認可","モデル権限テスト","DjangoModelPermissionsによる権限確認","CRUD操作可否","モデル毎の権限設定に従った制御","高","ModelPermission実装"
"16","NFT-016","セキュリティテスト","通信","CSRF保護テスト","CSRF_TRUSTED_ORIGINS設定確認","CSRF検証結果","信頼されたオリジン以外からのリクエスト拒否","高","CSRF_HEADER_NAME/CSRF_COOKIE_NAME設定"
"17","NFT-017","セキュリティテスト","通信","CORS設定テスト","CORSポリシー適用確認","クロスオリジンリクエスト結果","CORS_ALLOWED_ORIGINS/CORS_URLS_REGEX設定に従った制御","高","corsheaders設定"
"18","NFT-018","セキュリティテスト","通信","セキュアCookie設定テスト","本番環境でのCookieセキュリティ確認","Cookieフラグ","DEBUG=Falseで CSRF_COOKIE_SECURE/SESSION_COOKIE_SECURE有効","高","COOKIE_SECURE設定"
"19","NFT-019","セキュリティテスト","通信","プロキシヘッダー検証テスト","X-Forwarded-*ヘッダー処理確認","ヘッダー処理結果","USE_X_FORWARDED_HOST/PORT/PROTO設定に従った処理","中","プロキシ環境設定"
"20","NFT-020","セキュリティテスト","入力検証","URL検証テスト","URLValidatorによる入力検証","検証結果","不正なURLの拒否","中","SITE_URL検証実装"
"21","NFT-021","セキュリティテスト","監査","エラーレポートテスト","error_report/Sentry連携確認","エラー記録結果","IGNORED_ERRORS以外のエラーが適切に記録","中","SENTRY_ENABLED/SENTRY_DSN設定"
"22","NFT-022","セキュリティテスト","監査","ワークフローセキュリティテスト（Zizmor）","GitHub Actionsセキュリティスキャン","SARIF出力","セキュリティ問題の検出・レポート","中","qc_checks.yaml Zizmor job"
"23","NFT-023","可用性テスト","障害復旧","メンテナンスモードテスト","MaintenanceModeMiddleware有効時の動作確認","レスポンス内容","MAINTENANCE_MODE_RETRY_AFTER: 10設定に従った503応答","中","maintenance_mode設定"
"24","NFT-024","可用性テスト","障害復旧","データベースバックアップテスト","django-dbbackup機能の確認","バックアップ生成結果","DBBACKUP設定に従ったバックアップ生成","高","DBBACKUP_*設定"
"25","NFT-025","可用性テスト","障害復旧","データベース接続タイムアウトテスト","DB接続タイムアウト設定確認","接続失敗時の挙動","connect_timeout: 2秒でタイムアウト","中","PostgreSQL db_options設定"
"26","NFT-026","可用性テスト","障害復旧","TCPキープアライブテスト","データベース接続のキープアライブ確認","接続維持状態","keepalives設定に従った接続維持","中","db_options keepalives_*設定"
"27","NFT-027","可用性テスト","冗長性","マルチワーカープロセステスト","複数Gunicornワーカーでの処理分散","負荷分散状態","プロセス障害時の継続稼働","高","workers設定"
"28","NFT-028","可用性テスト","冗長性","Redisキャッシュ障害テスト","外部キャッシュ障害時のフォールバック","システム稼働状態","キャッシュ障害時もシステム継続稼働","中","GLOBAL_CACHE_ENABLED条件分岐"
"29","NFT-029","互換性テスト","データベース","PostgreSQLサポートテスト","PostgreSQL 17での動作確認","全機能動作確認","CI/CDで定義された全テスト通過","高","docker-compose.yml postgres:17"
"30","NFT-030","互換性テスト","データベース","MySQLサポートテスト","MySQL 9での動作確認","全機能動作確認","CI/CDで定義された全テスト通過","高","qc_checks.yaml mysql:9"
"31","NFT-031","互換性テスト","データベース","SQLiteサポートテスト","SQLite3での動作確認","全機能動作確認","CI/CDで定義された全テスト通過","高","INVENTREE_DB_ENGINE: sqlite3"
"32","NFT-032","互換性テスト","Python","Python 3.11互換性テスト","Python 3.11での動作確認","全機能動作確認","CI/CDで定義された全テスト通過","高","qc_checks.yaml python_version: 3.11"
"33","NFT-033","互換性テスト","Python","Python 3.14互換性テスト","Python 3.14での動作確認","全機能動作確認","CI/CDで定義された全テスト通過","中","qc_checks.yaml matrix: [3.11, 3.14]"
"34","NFT-034","互換性テスト","ブラウザ","Playwrightブラウザテスト","Webフロントエンドのブラウザ互換性","UI動作確認","Playwrightテスト通過","高","web_ui job"
"35","NFT-035","互換性テスト","マイグレーション","データベースマイグレーションテスト","旧バージョン（0.10.0-0.17.0）からの移行","マイグレーション成功","全マイグレーションスクリプト正常完了","高","migrations-checks job"
"36","NFT-036","保守性テスト","コード品質","pre-commitチェックテスト","コードスタイル・リンター確認","チェック結果","pre-commit hooks全通過","高","pre-commit job"
"37","NFT-037","保守性テスト","コード品質","型チェックテスト","ty/pyright等による型検証","型エラー数","許容された警告以外のエラー無し","中","typecheck job"
"38","NFT-038","保守性テスト","コード品質","コードカバレッジテスト","pytest-cov/nyc等によるカバレッジ測定","カバレッジ率","バックエンド85%/フロントエンド68%以上","高","codecov.yml target設定"
"39","NFT-039","保守性テスト","コード品質","APIスキーマ整合性テスト","OpenAPIスキーマ生成・差分検出","スキーマ差分","予期しない破壊的変更無し","高","schema job/oasdiff"
"40","NFT-040","保守性テスト","ドキュメント","ドキュメントリンク検証テスト","mkdocs設定・マークダウンリンク確認","リンク有効性","全ドキュメントリンク有効","中","mkdocs job"
"41","NFT-041","運用性テスト","ログ","構造化ログ出力テスト","structlog/JSON形式ログ確認","ログ出力形式","JSON_LOG=Trueで正しいJSON形式出力","中","LOGGING設定/structlog設定"
"42","NFT-042","運用性テスト","ログ","ログレベル制御テスト","LOG_LEVEL設定による出力制御","出力ログレベル","DEBUG/INFO/WARNING/ERROR/CRITICAL正しく制御","中","LOG_LEVEL設定"
"43","NFT-043","運用性テスト","監視","OpenTelemetryトレーシングテスト","分散トレーシング設定確認","トレース出力","TRACING_ENABLED=Trueでトレース出力","低","tracing設定"
"44","NFT-044","運用性テスト","設定","環境変数オーバーライドテスト","config.yaml vs 環境変数の優先度","設定値","環境変数が優先適用","高","get_setting関数実装"
"45","NFT-045","運用性テスト","Docker","コンテナ起動テスト","Docker Compose構成での起動確認","起動状態","全コンテナ（db/cache/server/worker/proxy）正常起動","高","docker-compose.yml"
"46","NFT-046","性能テスト","レスポンス","リクエストキャッシュ性能テスト","InvenTreeRequestCacheMiddlewareの効果測定","キャッシュヒット時応答時間","同一リクエスト内の重複取得回避","中","middleware.py RequestCache"
"47","NFT-047","セキュリティテスト","認証","リモートユーザー認証テスト","プロキシ認証（RemoteUserMiddleware）確認","認証結果","REMOTE_LOGIN_HEADER設定に従った認証","中","REMOTE_LOGIN設定"
"48","NFT-048","セキュリティテスト","認証","マジックリンクログインテスト","django-sesameによるワンタイムリンク認証","認証結果","SESAME_MAX_AGE: 300秒で有効期限切れ","中","sesame設定"
"49","NFT-049","可用性テスト","障害復旧","バックグラウンドタスクリトライテスト","django-qタスク失敗時のリトライ確認","リトライ挙動","max_attempts: 5回までリトライ","中","Q_CLUSTER設定"
"50","NFT-050","セキュリティテスト","入力検証","ファイルアップロード制限テスト","アップロードサイズ・フィールド数制限","制限適用結果","DATA_UPLOAD_MAX_NUMBER_FIELDS制限適用","中","settings.py設定"
