知識マップ: ユニットテストと結合テストの境界をどう引くか
記事「ユニットテストと結合テストの境界をどう引くか」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
ユニットテストと結合テストの境界を、判断のテストか接続のテストかという軸で整理する記事です。金額計算や状態遷移のような分岐の総当たりはユニットテストへ寄せ、フォーマット・配線・環境・時間という4つの境界はin-memoryのfakeでは意味が落ちるため結合テストへ置くべきだとします。stub・mock・fakeというテストダブルの違いを整理したうえで、mockが増えすぎる兆候は配線をユニットテストへ押し込んでいる合図であり、コア層をユニットテストで厚く、境界層を狭い結合テストで、全体層を少数のスモーク/E2Eで構成する3層構成を実務での落としどころとして示します。
flowchart LR
accTitle: ユニットテストと結合テストの境界の知識マップ
accDescr: ユニットテストが判断のテストで結合テストが接続のテストであること、フォーマット・配線・環境・時間という4つの境界が結合テスト側に置かれるべきこと、stub・mock・fakeの違いとmock過多が配線の混入を示す兆候であること、コア層・境界層・全体層からなる3層のテスト構成の関係を示す図
unit_test["ユニットテスト"]
integration_test["結合テスト"]
test_stub["スタブ"]
test_mock["モック"]
test_fake["フェイク"]
format_boundary["フォーマットの境界"]
wiring_boundary["配線の境界"]
environment_boundary["環境の境界"]
time_boundary["時間の境界"]
branching_coverage["分岐の総当たり"]
bitness_match_requirement["bitness一致要件"]
com_apartment_model["COMアパートメントモデル(STA/MTA)"]
mock_overuse_smell["mockが増えすぎる兆候"]
three_layer_test_structure["3層のテスト構成"]
e2e_test["E2Eテスト"]
unit_test -.->|"利用する"| test_stub
unit_test -.->|"利用する"| test_mock
unit_test -.->|"利用する"| test_fake
integration_test -->|"推奨される対応"| format_boundary
integration_test -->|"推奨される対応"| wiring_boundary
integration_test -->|"推奨される対応"| environment_boundary
integration_test -->|"推奨される対応"| time_boundary
unit_test -->|"推奨される対応"| branching_coverage
environment_boundary -.->|"前提とする"| bitness_match_requirement
environment_boundary -.->|"前提とする"| com_apartment_model
test_mock -.->|"原因になり得る"| mock_overuse_smell
unit_test -->|"用いるのは非推奨"| wiring_boundary
three_layer_test_structure -->|"前提とする"| unit_test
three_layer_test_structure -->|"前提とする"| integration_test
three_layer_test_structure -->|"前提とする"| e2e_test
integration_test -->|"用いるのは非推奨"| branching_coverage
test_fake -->|"用いるのは非推奨"| environment_boundary
test_fake -->|"用いるのは非推奨"| format_boundary
概念間の関係(全18件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- ユニットテストはスタブを利用します。
- ユニットテストはモックを利用します。
- ユニットテストはフェイクを利用します。
- 結合テストはフォーマットの境界に対する本記事の推奨です。
- 結合テストは配線の境界に対する本記事の推奨です。
- 結合テストは環境の境界に対する本記事の推奨です。
- 結合テストは時間の境界に対する本記事の推奨です。
- ユニットテストは分岐の総当たりに対する本記事の推奨です。
- 環境の境界はbitness一致要件を前提とします。
- 環境の境界はCOMアパートメントモデル(STA/MTA)を前提とします。
- モックはmockが増えすぎる兆候の原因になることがあります。
- ユニットテストを配線の境界に用いることは推奨されません。
- 3層のテスト構成はユニットテストを前提とします。
- 3層のテスト構成は結合テストを前提とします。
- 3層のテスト構成はE2Eテストを前提とします。
- 結合テストを分岐の総当たりに用いることは推奨されません。
- フェイクを環境の境界に用いることは推奨されません。
- フェイクをフォーマットの境界に用いることは推奨されません。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。