メインコンテンツ

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 > 0elseif 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 がステートメント カバレッジを報告するユニットを形成します。式を必要としないキーワードのうち、breakcatchcontinuereturn、および try のカバレッジが MATLAB で報告されます。elseendotherwise などのキーワードは無視されます。

一般に、MATLAB は、プログラム データに対して何らかのアクションを実行したり、プログラムのフローに影響を与えたりするステートメントのカバレッジを報告します。function [y1,...,yN] = myfun(x1,...,xM)classdef MyClass など、関数、クラス、またはクラス メンバーを定義するコードは無視されます。

関数カバレッジ

関数カバレッジは、テストの実行時に実行された、ソース コードで定義されている関数を識別します。このタイプのカバレッジを使用して、ソース コード内のすべての関数が 1 回以上呼び出されたかどうかを判別します。

たとえば、次のコードには、froot、および 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

参考

クラス

トピック