単体テスト
概要
自信を持ってリファクタリングを行える
テストは足すのは簡単だが、メンテナンスは大変になる
開発者の精神的なストレスになる
テストコードを削除する判断も難しい
CICDから自動テストするのはソフトウェア開発のベストプラクティス ドライバー
テスト対象を動かす
スタブ
テスト対象が呼び出す他のプログラムの代替する
なぜテストを書くのか
積極的なリファクタリングが行える
観点
ホワイボックステスト
条件網羅
ブラックボックステスト
同値分割
境界値分析
正常値と異常値
自動テストに必須の性質
Self-Validating(自己検証可能)
Repeatable(繰り返し可能)
自動テストが持つべき性質
Independent/Isolated(独立している)
Fast(高速である)
網羅性
C0
命令網羅(ステートメントカバレッジ)
全ての命令を必ず一度は実行すること
if文(ステートメント)を通れば良い
全命令のうちテストされた命令の割合
ホワイトボックステスト
C1/C2に比べると最も少ないテストケースで実施することができる
C1はC0を包含するからC1が100%ならばC0も100%
C0/C1カバレッジとまとめて言うよね
C1
分岐網羅(ブランチカバレッジ)
全ての分岐を必ず一度は実行すること
ホワイトボックステスト
C0とC2の中間程度の網羅性
if文の全分岐を実行しないといけないが、条件部分の全てのパターンを試す必要はない
C2
条件網羅(コンディションカバレッジ)
条件分岐の個々の条件が真あるいは偽になる場合を少なくとも一回は含むこと
ホワイトボックステスト
if A or BだとAが真であるケースとBが真である2ケースをテストすれば全網羅になる
MCC
複合条件網羅(マルチコンディショナルカバレッジ)
if(A or B)の場合、(A,B)=(真,真)(偽,偽)(真,偽)(偽,真)の4ケースが必要
参照