Open5
jestを用いたテストのカバレッジについて調査
jestではistanbulというカバレッジを取得するツールが組み込まれている。
jest --coverlage
で出力される。
出力される4つのカバレッジをどのように活用するかを引き続き調査する。
上記記事より引用
- Stmts:プログラム内の各命令が実行されたかの網羅率(命令網羅率)
- Branch:ifやcaseなどの全ての分岐の処理が実行されたかの網羅率
- Funcs:プログラム内の各関数が呼び出されたかの網羅率
- Lines:ソースファイルの各実行可能行が実行されたかの網羅率
jestのconfigにあるcoverageThreshold
を使えば閾値が設定できる。
フォルダやファイルごとに設定できる。閾値をどのように設定すればいいかは明確な基準は存在しない。
閾値を上げればコストを犠牲にバグの可能性を減らせる。
あくまで100%にすればバグが0なわけではないし、ブラックボックステストも行う必要はある。
それを踏まえて閾値の決め方は処理の重要度を基に決めるべきである。
処理の重要度=その場所にバグが発生した場合に与える影響の大きさ
あるいは
処理の重要度=その機能がどれだけ主要な機能か
後は4つのカバレッジをどのように使い分ければいいのかを調べる必要がある。
上記記事より引用
基本的には、Branches <= Stmts <= Lines <= Funcsが成立する
これが事実なら、この式が成立しているかを各ファイルで確認するという手もあり
Funcsは100%統一でいいのでは?とは思う
100%が難しい理由
- jestでやろうとするとコストが高すぎるテストというものがあるとそれはテストコードから除外される
- 上記のようなものがなかったとしてもそもそもテストコードを作るのが大変なのでコストがかかる
- 90%を100%にするには多大なコストが発生する。(0%からある程度まで持っていくコストに比べて)
実際にjestでテストを行う際に、環境構築の部分から含めて参考になりそうな記事
カバレッジのHTMLレポートが存在することも確認
※そもそものテスト結果についてもHTML出力が可能