MATLAB ソース コードのコード カバレッジのタイプ
テストを実行すると、CodeCoveragePlugin クラスのインスタンスをテスト ランナーに追加して、MATLAB® ソース コードのコード カバレッジ情報を収集してアクセスできます。テストが実行されると、プラグインにより、テストによって実行されたソース コードの部分を示す情報が収集されます。この情報には、プログラムまたはコード カバレッジ レポートからアクセスできます。
CoverageResult または CoverageReport 形式のオブジェクトを使用して CodeCoveragePlugin インスタンスを作成すると、プラグインでは次のカバレッジ タイプがサポートされます。これにより、テストでカバーされたソース コードの詳細な解析を実行できます。
ステートメント カバレッジ
ステートメント カバレッジは、テストの実行時に実行されたソース コード ステートメントを識別します。このタイプのカバレッジを使用して、ソース コード内のすべてのステートメントが 1 回以上実行されるかどうかを判別します。
ステートメント カバレッジを報告するために、MATLAB はソース コードをコンマ、セミコロン、または改行文字で区切られたステートメントに分割します。たとえば、次のコードには 3 つのステートメントが含まれています。
b = 1, a = 2 * (b + 10); x = (b ~= 0) && (a/b > 18.5)
MATLAB は、コード カバレッジ レポートのために制御フロー ステートメントをより小さなユニットに分割します。たとえば、次の制御フロー ステートメント コードでは、MATLAB は、if x > 0、elseif x < 0、および disp 関数の 3 つの呼び出しの合計 5 ユニットのカバレッジを報告します。100% のステートメント カバレッジを達成するには、これらの各ユニットを実行するテストが必要です。
if x > 0 disp("x is positive.") elseif x < 0 disp("x is negative.") else disp("x is either zero or NaN.") end
式が続くキーワードは、MATLAB がステートメント カバレッジを報告するユニットを形成します。式を必要としないキーワードのうち、break、catch、continue、return、および try のカバレッジが MATLAB で報告されます。else、end、otherwise などのキーワードは無視されます。
一般に、MATLAB は、プログラム データに対して何らかのアクションを実行したり、プログラムのフローに影響を与えたりするステートメントのカバレッジを報告します。function [y1,...,yN] = myfun(x1,...,xM) や classdef MyClass など、関数、クラス、またはクラス メンバーを定義するコードは無視されます。
関数カバレッジ
関数カバレッジは、テストの実行時に実行された、ソース コードで定義されている関数を識別します。このタイプのカバレッジを使用して、ソース コード内のすべての関数が 1 回以上呼び出されたかどうかを判別します。
たとえば、次のコードには、f、root、および square という 3 つの定義済み関数が含まれています。100% の関数カバレッジを達成するには、これらの関数のそれぞれが呼び出されるテストが必要です。
function f(x) if x >= 0 root else square end disp(x) function root x = sqrt(x); end function square x = x.^2; end end
参考
クラス
matlab.unittest.plugins.CodeCoveragePlugin|matlab.coverage.Result|matlab.unittest.plugins.codecoverage.CoverageResult|matlab.unittest.plugins.codecoverage.CoverageReport|matlab.unittest.plugins.codecoverage.CoberturaFormat