テストについて
自動テスト/手動テスト
自動テスト
テストコードを書いて、そのコードの条件を満たしていることを担保する
CLIで動く
手動テスト
見た目や動き(ロードに時間がかかりすぎる)などの不具合を発見する
Webブラウザから確認する
テストの種類
Static
linterやTypeScriptなどの静的チェック
Unit Test(単体テスト)
関数一つ一つを対象にして行う
それぞれの挙動を確認する
Integration Test(結合テスト)
複数のUnit Testを掛け合わせて、想定した挙動になるかを確かめるテスト
End to End(E2E)
ブラウザなどで実際にアプリを動かして挙動を確かめるテスト
TDD(テスト駆動開発)
先にテストを書き、テストを合格するようなコードを書く
テストがアプリケーションの要件になる
コードを追加・変更を安全に行える
red-green-refactor
red エラーになるテストコードを書く(実装のコードがないのでエラー)
green テストコードの要件を満たす仮実装を施す
refactor 本実装する
良いとされるテスト
実装(内側)よりもユーザーからの見た目をテストする
リファクタリングで書き換える必要のないテストコード
テストが失敗したときに原因が突き止めやすいテスト
画面に表示されている「状態」 > 保存されているstate/実装
UTの数を多くする→壊れやすいテストになる
壊れにくいITを作る→バグの発見に時間がかかる
バランス/トレードオフの関係
時間をかけてテストをたくさん書くことが必ずしもいいとは限らない
BDD
参考記事