Unit Test
単体テスト_, ユニットテスト_
『単体テストの考え方/使い方』.iconの、デトロイト学派視点の定義
以下の3つの条件を満たすtestのこと
1単位の振る舞いを検証する
実行時間が短い
他のtest caseから隔離されている
参考
/mrsekut-book-4839981728/045 (2.1 単体テストの定義)
#WIP
/mrsekut-book-4839981728/185 (6.1 単体テストの3つの手法)
output-based testing
/mrsekut-book-4839981728/185 (6.1 単体テストの3つの手法)
出力値ベース・テスト
戻り値のみを見て検証する
副作用がないことが条件
質が高い、保守しやすい
state-based testing
状態ベース・テスト
/mrsekut-book-4839981728/187
処理の実行が終わったあとにSUTの状態を検証する
実装の詳細を見がち 
デトロイト学派が好む
普段からFPのノリで書いてるからこれが必要になる状況が見えないなmrsekut.icon
OOP限定の話な気がする
communication-based testing
コミュニケーションベース・テスト
/mrsekut-book-4839981728/189
SUTとDOCの間で行われるコミュニケーションを検証する
DOCはmockになる
もっとも偽陽性に対して脆弱
検証の対象となるコミュニケーションがアプリケーションの境界を超えて行われ、かつ、外部から確認できる副作用を発生させる場合にのみ用いる
保守がし辛い
ロンドン学派が好む
Integration TestもリファクタすることでUnitに変更できる
mockを使用して共有依存を消す
https://ubiteku.oinker.me/2015/10/27/what-is-unit/
/kawasima/Microservices分割大全
https://qiita.com/wakin/items/8a0f970c36d19e4a31c1?utm_source=pocket_mylist
https://myenigma.hatenablog.com/entry/2022/04/24/143753
https://gfngfn.github.io/ja/posts/2022-06-12-language-design-for-unit-testing/
https://ubiteku.oinker.me/2015/07/27/why-most-unit-testing-is-waste/
Unit testには価値がない、という論文の解説
unit test批判というか、TDD批判
TDDにおけるtestは実装の補助のためだけにあるで済む話じゃない?という気もするmrsekut.icon
理由
TDDの実践者が言及するテストカバレッジ100%には意味が無い
それはそうmrsekut.icon
バグを取り除く最大の機会はテスト以外のところにある
TDDに問題があるのであって、unit testの問題ではないのではmrsekut.icon
ユニットテストにビジネス価値はほとんどない
TDDはプログラムデザインに害を及ぼす
ユニットテストの維持コストは馬鹿にならない
テストがコードのクオリティを上げる訳ではない、上げるのは開発者自身である