Open5

jestを用いたテストのカバレッジについて調査

すわすわすわすわ

jestではistanbulというカバレッジを取得するツールが組み込まれている。
jest --coverlageで出力される。

出力される4つのカバレッジをどのように活用するかを引き続き調査する。

すわすわすわすわ

https://qiita.com/turmericN/items/e3e48f04800e8c0b723c

上記記事より引用

  • Stmts:プログラム内の各命令が実行されたかの網羅率(命令網羅率)
  • Branch:ifやcaseなどの全ての分岐の処理が実行されたかの網羅率
  • Funcs:プログラム内の各関数が呼び出されたかの網羅率
  • Lines:ソースファイルの各実行可能行が実行されたかの網羅率

https://jestjs.io/ja/docs/configuration

jestのconfigにあるcoverageThresholdを使えば閾値が設定できる。
フォルダやファイルごとに設定できる。閾値をどのように設定すればいいかは明確な基準は存在しない。
閾値を上げればコストを犠牲にバグの可能性を減らせる。
あくまで100%にすればバグが0なわけではないし、ブラックボックステストも行う必要はある。
それを踏まえて閾値の決め方は処理の重要度を基に決めるべきである。
処理の重要度=その場所にバグが発生した場合に与える影響の大きさ
あるいは
処理の重要度=その機能がどれだけ主要な機能か

後は4つのカバレッジをどのように使い分ければいいのかを調べる必要がある。

すわすわすわすわ

100%が難しい理由

  • jestでやろうとするとコストが高すぎるテストというものがあるとそれはテストコードから除外される
  • 上記のようなものがなかったとしてもそもそもテストコードを作るのが大変なのでコストがかかる
  • 90%を100%にするには多大なコストが発生する。(0%からある程度まで持っていくコストに比べて)