ソフトウェアテストを体系的に理解し、実務に活かすためのまとめです。テスト粒度から代表的な技法、テスト自動化までを網羅しています。
参考書籍
🧪 ソフトウェアテストとは
ソフトウェアにバグや仕様漏れがないかを計画的に検出する活動です。
- 品質の保証
- 欠陥の検出
- リスクの軽減
- ユーザー信頼の獲得
🔹 テストの粒度(レベル)
テストレベル | 説明 | 担当者 | 目的 |
---|---|---|---|
単体テスト(Unit Test) | 関数・クラスなど最小単位のテスト | 開発者 | 処理単位の正しさを確認 |
結合テスト(Integration Test) | 複数モジュールの組み合わせを検証 | 開発者/QA | インターフェースの整合性 |
総合テスト(System Test) | システム全体の振る舞いを検証 | QA | 要件通りに動くか |
受入テスト(Acceptance Test) | ユーザー視点で最終確認 | 顧客/QA | 実業務で使えるかどうか |
🔍 ホワイトボックス vs ブラックボックステスト
観点 | ホワイトボックステスト | ブラックボックステスト |
---|---|---|
対象 | 内部構造 | 外部仕様(入力と出力) |
使用者 | 開発者 | テスト担当者、QA |
主な技法 | 命令網羅、条件網羅、データフローなど | 同値分割、境界値、状態遷移など |
🧠 ホワイトボックステスト技法
◾ 制御フローテスト
- 命令網羅:全ての命令を少なくとも1回通る
- 分岐網羅:すべての条件分岐のtrue/falseを通る
- 条件網羅:if文などの各条件のtrue/falseを通す
◾ データフローテスト
- 変数が定義(定義済み)されたあと、使用されるまでのデータの流れを検証
🧪 ブラックボックステスト技法
◾ 同値クラステスト(Equivalence Partitioning)
- 入力値を正常/異常グループに分けて、代表値でテスト
◾ 境界値分析(Boundary Value Analysis)
- 境界付近の値(0, 1, maxなど)を重点的にテスト
◾ デシジョンテーブルテスト(Decision Table Testing)
- 条件と結果の組み合わせを表形式で網羅的にテスト
◾ ペア構成テスト(PairWise Testing)
- 2つの項目のすべての組み合わせをカバーするようにテストケースを生成(全パターンより効率的)
◾ 状態遷移テスト(State Transition Testing)
- 状態とイベントの変化を状態遷移図で表し、網羅的にテスト
🧭 テスト技法の選び方(実践ガイド)
シーン | 推奨技法 |
---|---|
単体の処理を検証したい | ホワイトボックス(命令網羅、分岐網羅) |
入力値のパターンが多い | 同値クラステスト、境界値分析 |
複雑な業務ロジックを整理したい | デシジョンテーブルテスト |
パラメータの組合せが多い | ペア構成テスト(PairWise) |
状態によって動作が異なる | 状態遷移テスト |
🤖 テスト自動化について
◾ 目的
- テストの繰り返し実行を効率化
- 品質の安定化
- CI/CDパイプラインとの連携
◾ 自動化のレイヤーとツール例
テスト種類 | 対象 | 代表的ツール |
---|---|---|
ユニットテスト | 関数・モジュール | JUnit, Pytest, Jest |
結合/APIテスト | モジュール連携、API | SuperTest, Postman |
E2Eテスト | UI全体の流れ | Selenium, Cypress, Playwright |
静的解析 | コード品質 | ESLint, SonarQube |
CI/CD連携 | 自動実行 | GitHub Actions, CircleCI |
✅ まとめ
- テストは「粒度」「視点」「技法」を組み合わせて設計するのがベスト
- 効率よく不具合を見つける技法選びがカギ
- テスト自動化で継続的な品質確保を