ざっくりと
- 全工程のテスト進捗率
- 基本的なテストカバレッジ
- 網羅性は低い
ステートメントカバレッジとは、テストの全工程進捗率です。
概要説明
ステートメントカバレッジとはテストの全工程を行った場合の進捗率である。なぜならば、全ての処理に対するテストの進捗率を計測するため。
例えば、プログラムの全行を一度はテストすることである。そして、基本的なカバレッジである。つまり、網羅性は低いと言える。
だから、テスト強度を高めるためには他のカバレッジも併用する必要がある。
職業職種
ソフトウェアテスター
ソフトウェアテスターは、ステートメントカバレッジを使う。なぜなら、テストの網羅性を確認するため。例えば、全てのコード行がテストされているかを確認する。
プロジェクトマネージャー
プロジェクトマネージャーは、ステートメントカバレッジを利用する。なぜなら、テストの進捗と品質を管理するため。例えば、テスト計画の進行度を確認する。
開発者
開発者は、ステートメントカバレッジを参考にする。なぜなら、自分の書いたコードのテストが十分に行われているかを確認するため。例えば、未テストのコード部分を見つけてテストケースを追加する。
“Statement”は”命令”を意味し、”Coverage”は”網羅”を意味するため、「命令の網羅率」を指します。
代表例
Googleは、ステートメントカバレッジのパイオニアとして知られている。なぜなら、彼らのソフトウェアテストの初期段階で広く使っていたからだ。例えば、彼らの検索エンジンのテストでは、特に活用していた。
Microsoft
Microsoftもステートメントカバレッジを用いる大手企業の一つだ。なぜなら、彼らのWindows OSの開発過程において重要なツールとして利用していたからだ。例えば、Windows 10の開発においては、ステートメントカバレッジは不可欠なツールだった。
IBM
IBMは、ステートメントカバレッジを効率的に使って自社のソフトウェアを開発している。なぜなら、彼らのソフトウェア開発の基本的な工程の一部だからだ。例えば、IBMのクラウドサービスのテストでは、ステートメントカバレッジが使われている。
手順例
ソースコードの準備
まず、テストしたいソースコードを用意する。なぜなら、ステートメントカバレッジはソースコードの全ての行が実行されることを確認するからだ。例えば、新しい機能を追加したアプリのコードを用意する。
テストケースの作成
次に、ソースコードの全てのステートメントを実行するためのテストケースを作成する。なぜなら、これがステートメントカバレッジを達成するための重要なステップだからだ。例えば、各関数を実行するテストケースを作る。
テストの実行
テストケースを用いてテストを実行する。なぜなら、これによってどのステートメントが実行され、どのステートメントが実行されていないかを特定できるからだ。例えば、自動テストツールを使ってテストを実行する。
カバレッジの確認
テスト結果を確認し、ステートメントカバレッジが100%達成されているか確認する。なぜなら、全てのステートメントがテストされていることを確認するためだ。例えば、カバレッジレポートを使って未テストのステートメントを特定する。
未テストのステートメントのテスト
最後に、未テストのステートメントがあれば、そのステートメントをテストするための追加のテストケースを作成する。なぜなら、全てのステートメントをテストすることが目標だからだ。例えば、新たなテストケースを追加して、再度テストを実行する。
類似語
ラインカバレッジ
ラインカバレッジは、ステートメントカバレッジとよく似ている。なぜなら、両方ともソースコードの全ての行が実行されることを確認するからだ。例えば、一行も見落とさずにテストを行うために使用される。
ブランチカバレッジ
ブランチカバレッジもステートメントカバレッジと類似している。しかし、それぞれの条件分岐が正確にテストされることを確認する点で異なる。なぜなら、こちらは全ての可能なルートをカバーするためのテストだからだ。例えば、if文やswitch文などの各分岐をテストするために使われる。
パスカバレッジ
パスカバレッジは、全ての可能な実行パスをカバーすることを目指す。これもステートメントカバレッジと似ているが、より広範囲をカバーする。なぜなら、複数のステートメントが組み合わさった実行パス全体をテストするからだ。例えば、関数の複数の組み合わせをテストするために使われる。
反対語
フルカバレッジ
フルカバレッジは、ステートメントカバレッジの反対語だ。なぜなら、フルカバレッジはすべての可能な分岐や条件をテストするからだ。例えば、すべてのif文の条件が真と偽の両方で試される。
コンディションカバレッジ
コンディションカバレッジもステートメントカバレッジの反対語だ。なぜなら、コンディションカバレッジは各条件が真と偽の両方で試されるからだ。例えば、if文の条件がすべてテストされる。
パスカバレッジ
パスカバレッジはステートメントカバレッジの反対語だ。なぜなら、パスカバレッジはすべての可能なパスをテストするからだ。例えば、すべての処理経路がテストされる。
会話例
プログラムのテスト計画を立てている時
「ステートメントカバレッジって何?」
「それはコードの全体をどれだけテストしたかの割合を示すものだよ。簡単に言うと、書いたコードのどれだけを確認したかってこと。」
テストを行っている最中
「なんでこの分岐の片側だけテストしてるの?」
「それはステートメントカバレッジというテスト方法だからさ。全部のコードを通過させることを目指しているんだ。」
テスト結果を評価する時
「ステートメントカバレッジ100%って、全部完璧にテストしたってこと?」
「うーん、全部のコードを通過させたという意味ではそうだけど、全部の状況をテストしたわけではないから注意が必要だよ。」
注意点
ステートメントカバレッジを使う時の注意点は、100%になったからと言って、全てのテストが完璧になったわけではないことだ。なぜならば、分岐の片側しかテストしていない可能性があるからだ。
例えば、if文の条件が偽の場合の処理がテストできていないかもしれない。そして、これが原因でバグが見逃されることもある。
だから、ステートメントカバレッジだけに頼らず、他のテストカバレッジも併用しよう。
ステートメントカバレッジとブランチカバレッジは、間違えやすいので注意しましょう。
ステートメントカバレッジはコードの行をどれだけテストしたかを示します。
一方、ブランチカバレッジはすべての分岐をテストすることを目指します。
コメント