ハーネスエンジニアリング: CIのフィードバックを10分以内にする
重いケースは段階実行に分け、失敗検知までの時間を短縮する。
重いケースは段階実行に分け、失敗検知までの時間を短縮する。
現在時刻を直接呼ばず、注入可能なClockで制御する。
入力イベントを記録し同じ順序で再生できるようにする。
タイムアウト・遅延・部分失敗を再現できる注入点を用意する。
データ準備をレイヤ化してテストの差分だけを明示する。
差分レビュー可能なフォーマットでスナップショットを管理する。
帯域制限やパケットロスを局所再現し回帰試験に組み込む。
ポート・DB・ファイルをテスト単位で分離し競合を回避する。
失敗時にSeedを固定保存して、再実行で同一失敗を追えるようにする。
本体より先に入出力契約を固定すると、後工程の再利用性が上がる。
出力が複雑な処理は承認テストで変更影響を可視化する。
Red→Green→Refactorを最小単位で残すとレビュー効率が上がる。
失敗頻度と条件を記録し、非決定要因を先に隔離する。
仕様外コードを足さないことで設計の可塑性を保てる。
依存点に薄いラッパを入れるだけでテスト追加の起点ができる。
外部境界だけをモックし、ドメイン内部は実オブジェクトで検証する。
受け入れ観点から最小APIを設計し、内部実装を後追いする。
具体例と不変条件の二段構えでバグ検出力を高める。
失敗理由が1つに絞れるテストはデバッグ時間を大幅に削減する。
挙動を固定したまま構造だけを変える小刻み手順を守る。
Singleton、Factory、Builder、Observer、Strategyなど、Javaで頻出するデザインパターンを実例コード付きで解説します。
インターフェースと抽象クラスの違い、default メソッド、sealed interface、いつどちらを使うべきかを実例で解説します。