What Is Smoke Testing? - MATLAB & Simulink

Smoke Testing

What Is Smoke Testing?

Smoke testing is a preliminary software testing technique that checks basic functionality. It is a functional test that ensures the most critical features of the software are working correctly before more detailed testing is conducted.

Think of smoke testing like checking whether a car starts before going on a trip. Once the engine starts without any issues, you would proceed with more detailed testing of the vehicle, such as its transmission, suspension, AC, and so on. Similarly, if software passes the smoke test, it’s ready for more in-depth testing.

The term smoke testing comes from electronics, where a simple method to test a device for major problems is to power it on and see if it starts smoking.

In software development, smoke testing exercises the most critical pieces of software in a simple way to check for major problems. If you have a script, run it. If you have a function, call it with basic inputs. If you’re working with an app, launch it. The objective is simple: if there are no errors, the smoke test passes.

The smoke testing workflow starts with feature development. If the feature passes the smoke test, it advances to further testing. If it fails, the feature loops back to development for revisions.

Smoke testing workflow for verifying critical functionalities of a feature, ensuring only stable features proceed to further testing.

Importance of Smoke Testing

In the software development life cycle, smoke testing acts as an initial quality check to identify major issues early in the test cycle. It ensures that the core functionalities are not broken and run without errors before proceeding to more extensive testing. Smoke tests save time by preventing unnecessary testing of broken components.

Advantages and Challenges of Smoke Testing

The benefits of smoke testing include:

  • Smoke tests are quick and easy to create, often making them the first tests to be developed.
  • Smoke tests save time and effort by avoiding unnecessary testing of broken things.

However, smoke testing has a limited scope, focusing only on critical functionalities and providing a high-level check. It is not comprehensive and should not replace more detailed testing, such as integration and system testing, as it may miss deeper, more complex bugs or behavior changes.

Differences Between Smoke Testing, Sanity Testing, and Regression Testing

Smoke, sanity, and regression testing serve unique purposes and are performed at different stages of the development cycle.

Comparison of Smoke, Sanity, and Regression Testing
Criteria Smoke Testing Sanity Testing Regression Testing
Purpose Identify major issues early and ensure the software version is stable enough for further testing Verify the correctness of specific issues, such as bug fixes or newly implemented features Confirm that recent changes have not introduced new bugs or broken existing functionality and ensure overall system stability
When to Perform After a new software version is created, especially after major changes or updates After minor changes or bug fixes After any code changes, enhancements, or bug fixes

Smoke Testing with MATLAB

You can ensure your MATLAB® applications are ready for the next step with smoke testing. This simple check verifies that core features are working properly, giving you confidence before moving on to more detailed testing. Whether you are developing simulations, analyzing data, or building algorithms, smoke testing helps you ensure stability throughout the process.

Example of Smoke Testing in MATLAB

To perform a smoke test using MATLAB, you can add a smoke test to a script and verify whether it runs without any error.

You can manually write smoke tests, or use MATLAB Test to automatically generate a test template, which serves as a smoke test for the script. This generated test will execute the script, and if it runs without errors, the test will pass, confirming the basic functionality of the script. Results from smoke tests can be seen on the Test Browser app, an interface that allows you to run, debug, and analyze test interactively.

Generating and running a smoke test in MATLAB.

% simpleMainScript.m
% A simple MATLAB script to calculate the sum of numbers from 1 to 10

% Calculate the sum
totalSum = sum(1:10);

% Display the result
disp('The sum of numbers from 1 to 10 is:'); 
disp(totalSum);
% This is an autogenerated sample test for file mainscript.m
classdef testmainscript < matlab.unittest.TestCase

    methods (Test)

        function test_mainscript(testCase)
            % Exercise the script mainscript
            mainscript;
        end
    end
end

When you save the test file, the Run section in the Editor tab changes and lets you run the tests in the file. When the Run Tests icon is clicked, MATLAB adds all the tests in the file to the Test Browser app and runs them. The Command Window displays the test run progress. In this example, since there are no reported errors, we consider the smoke test to be passed.

Screenshot of the MATLAB Editor tool strip showing the Run Tests and Run Current Test icons.

The Run Tests icon in the MATLAB Editor toolstrip, which is used to execute code and verify its functionality from the MATLAB development environment. (See documentation.)

Screenshot showing the MATLAB Test Browser with an automatically generated test template. The output displays a green checkmark indicating the test passed.

Performing smoke testing in MATLAB. The automatically generated test template confirms the basic functionality of the script, and the MATLAB Test Browser app (right) shows that the test passed. (See documentation.)