2019/01/04スポンサーリンク最近ユニットテストの「カバレッジ」について勉強する機会があったので、今回はそのカバレッジについて簡単にまとめてみます。記事内の写真出典元テストカバレッジとはテストにおける確認が終わった部分の割合(テストの網羅率)のこと。テスト全体に対して「これくらいカバーしてる」的な指標だったり、「テストを全部やると、これだけ確認できるはずで、今はこれだけの確認が終わってる」という目安にもなります。英語で「coverage」は「(影響を及ぼす)範囲」を意味する。テストの種類システムのテストの種類には以下の4つが一般的です。単体(ユニット)テスト:クラスや関数の単位のプログラムのテスト結合テスト:単体(ユニット)テストで検証したプログラムを組みわせて行うテスト機能テスト:結合したプログラムを1つの機能として行うテストシステムテスト:システムが仕様通りに動くかを検証するためのテストそして単体(ユニット)テストは以下のようにさらに細かく分類できます。単体(ユニット)テストの手法には「ホワイトボックステスト」が用いられ、これは「システムの中身を理解した上で、それらを意識しながら行うテスト」のことです。すぎる気はしてる、頭の中で論理構造を構築してテストコードに落とすくらいでいい)。ちなみにシステムの内部構造を意識しないテストに「ブラックボックステスト」というものがあります(白もあれば黒もある)。IT用語辞典バイナリホワイトボックスのカバレッジ基準カバレッジ基準とは、テストにおいて着目する「要素」のことを指します。これはカバレッジを出すのに何を基準にするか、という決めごとのようなものです。ホワイトボックステストにおけるカバレッジ基準には以下の種類があります。テストカバレッジは100%を目指す?まず「カバレッジが高ければソースコードの品質が高い」というのは誤りです。ソースコードの品質の良し悪しに関わらず、テストケースが適切に設定されていない場合(バグを上手く捉えらないテスト)はカバレッジが高く算出されてしまいます。カバレッジの数値を上げる「労力」(カバレッジを100%に近づける作業)はカバレッジの数値に対して指数関数的に増加していることが報告されています。https://docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/100-code-coverage-worth-costカバレッジを計測する目的は「テストが十分に網羅されていないコードを検出すること」であり、カバレッジの数値を高くすることだけに執着することは費用対効果が低いです。カバレッジの数値を100%にする作業よりも「テストケースのレビューに時間を割く」方が費用対効果が高いです。目指すカバレッジの目標値は概ね「80%台後半か90%台」が望ましく、50%以下の場合は問題があるので見直しが必要です。(ja)カバレッジ100%はテストの完了条件ではなく「努力目標」とすることが望ましく、カバレッジの数値に対して盲目的になってはいけません。MEmaechanベンチャー、フリーランス、スタートアップを経験。現在は農業系スタートアップ企業でエンジニアとして働いています。リモートワークをしているノマドサラリーマンです。茶道とワークアウトが趣味です。maechanまえちゃんろぐオシャレで便利なテンプレートエンジン「AdminLTE」をYarnを使ってインストールする方法を書きます。maechanまえちゃんろぐPythonでLINEボットを作ってみる。maechanまえちゃんろぐTwitterのツイートをPythonを使ってOAuth認証を通して取得してみる。OS(Raspbian)をインストールする手順をまとめます。Piを無線LAN接続できるようにしたのでその備忘録を書きます。今回の開発環境は以下になります。コメントをキャンセルメールアドレスが公開されることはありません。標準エディターになった「Gutenber...ノマドサラリーマンmaechan海の近くでリモートワークをしているエンジニア。スタートアップ企業でプログラミング。/1989年生/青森県出身/エンジニア/茶道/ワークアウト/みんなよろしくね!詳しいプロフィールはこちら。(3)HOMEプログラミングユニットテストの「カバレッジ」についてまとめてみるノマドサラリーマンmaechan海の近くでノマドサラリーマンを満喫中のエンジニア。スタートアップ企業でプログラミング。/1989年生/青森県出身/エンジニア/茶道/ワークアウト/みんなよろしくね!詳しいプロフィールはこちら。