スモークテストとは - MATLAB & Simulink

スモークテスト

スモークテストとは

スモークテストは、ソフトウェアの基本機能をチェックする事前テスト手法です。より詳細なテストの前に実施する機能テストのことで、ソフトウェアの最も重要な機能が正しく機能していることを確認します。

たとえば、スモークテストを車で旅行に出かける前にエンジンの点検を行うことだと考えてみてください。問題なくエンジンがかかれば、次にトランスミッション、サスペンション、エアコンなど、車両の詳細な点検を行うことができます。これと同じように、ソフトウェアがスモークテストにパスすると、より詳細なテストの準備ができたことになります。

"スモークテスト" という用語は、電子機器に重大な問題がないかをテストするために、電源を入れて煙が出ないか確認するという単純な方法が用いられていたことに由来します。

ソフトウェア開発のスモークテストでは、ソフトウェアの最も重要な部分を実際に動かすという簡単な方法で重大な問題がないかをチェックします。スクリプトがある場合は実行し、関数の場合は基本入力で呼び出します。アプリの場合は起動します。目標はシンプルで、エラーがなければスモークテストにパスします。

スモークテストのワークフローは機能の開発段階からスタートします。スモークテストにパスすると、より詳細なテストに進み、パスしなかった場合は、開発に戻して修正を行います。

スモークテストのワークフロー。機能の重要な部分を検証することで、安定した機能のみを次の詳細なテストに進めることができます。

スモークテストの重要性

ソフトウェア開発のライフサイクルにおいて、スモークテストは最初の品質チェックとしての役割を果たし、テストサイクルの早い段階で重大な問題を特定します。主要な機能が正常でエラーなく実行できることを確認してから、より広範なテストに進めることができます。破損したコンポーネントへの不必要なテストを事前に排除することで時間を節減します。

スモークテストのメリットと課題

スモークテストには、次のようなメリットがあります。

  • 素早く簡単に作成できるため、よく最初のテストとして開発される
  • 破損した部分への不必要なテストを排除することで時間と労力を節減

ただし、スモークテストの範囲は限られているため、重要な機能のみに重点を置いた高水準チェックになります。包括的なテストではないため、統合テストやシステムテストなどのより詳細なテストの代わりにはならず、深部の複雑なバグや動作の変化を見逃す可能性があります。

スモークテスト、サニティテスト、回帰テストの違い

スモークテスト、サニティテスト、回帰テストにはそれぞれ異なる目的があり、開発サイクルのさまざまな段階で実施されます。

スモークテスト、サニティテスト、回帰テストの比較

項目 スモークテスト サニティテスト 回帰テスト
目的 重大な問題を早期に特定し、ソフトウェア バージョンがより詳細なテストに対応できる程度に安定していることを確認する バグ修正や新しい機能の実装など、特定の処理が正しく行われていることを検証する 最近の変更によって新たなバグが発生していないか、既存の機能が破損していないかを確認し、システム全体の安定性を確保する
実行タイミング 新たにソフトウェア バージョンを作成した後 (特に大きな変更やアップデートを行った場合) マイナーな変更やバグ修正の後 コードの変更、機能強化、バグ修正の都度

MATLAB のスモークテスト

スモークテストを使用して、MATLAB® アプリケーションが次のステップに進める状態になっていることを確認できます。この簡単なチェックで、主要な機能が正常に動作していることを確認でき、より詳細なテストに進む前に確証を得ることができます。シミュレーション開発、データ解析、アルゴリズム構築のいずれの作業においても、スモークテストはプロセス全体の安定性の確保に役立ちます。

MATLAB のスモークテスト例

MATLAB を使用してスモークテストを行うには、スクリプトにスモークテストを追加して、エラーなく実行できるかを確認します。

スモークテストは手動でも作成できますが、MATLAB Test を使用してテストテンプレートを自動生成することもできます。このテンプレートはスモークテストのスクリプトとして使用できます。この生成されたテストによりスクリプトが実行され、エラーが発生しなければ、テストはパスとみなされ、スクリプトの基本的な機能が確認されます。スモークテストの結果はテスト ブラウザーで確認できます。このインターフェースを通じて、テストを対話的に実行、デバッグ、解析することができます。

MATLAB でスモークテストを生成して実行します。

% simpleMainScript.m
% 1 から 10 までの数字の合計を計算する簡単な MATLAB スクリプト

% 合計を計算します
totalSum = sum(1:10);

% 結果を表示します
disp('The sum of numbers from 1 to 10 is:'); 
disp(totalSum);
% これは、ファイル mainscript.m に対して自動生成されたサンプルテストです
classdef testmainscript < matlab.unittest.TestCase

    methods (Test)

        function test_mainscript(testCase)
            % スクリプト mainscript を実行します
            mainscript;
        end
    end
end

テストファイルを保存すると、エディタータブの実行セクションが変更され、ファイル内のテストを実行できるようになります。[テストの実行] アイコンをクリックすると、MATLAB はファイル内のすべてのテストをテスト ブラウザー アプリに追加して実行します。コマンドウィンドウがテストの進捗状況を表示します。この例では、エラーの報告がないので、スモークテストはパスとみなされます。

MATLAB エディターのツールストリップのスクリーンショット。[テストの実行] アイコンと [現在のテストの実行] アイコンが表示されています。

MATLAB エディターのツールストリップに表示される [テストの実行] アイコンは、MATLAB の開発環境からコードを実行し、その機能を検証するために使用します。(ドキュメンテーションを参照)

自動生成されたテストテンプレートと MATLAB のテストブラウザーのスクリーンショット。テストにパスしたことを示す緑のチェックマークが出力として表示されます。

MATLAB でスモークテストを実行します。自動生成されたテストテンプレートでスクリプトの基本的な機能を確認します。MATLAB のテスト ブラウザー アプリ (右) には、テストにパスしたことが表示されています。(ドキュメンテーションを参照)


ソフトウェア リファレンス


参考: Software testing