Main Content

Perform Functional Testing and Analyze Test Coverage

Functional testing begins with building test cases based on requirements. These tests cover key aspects of your design and verify that individual model components meet requirements. Test cases made for functional testing include inputs, expected outputs, and acceptance criteria. Additionally, if you store your functional test cases in test suites, you can run functional tests systematically.

You can also run regression testing and measure different levels of coverage to further refine your tests. To check for regression, you add baseline criteria to the test cases and compare the model outputs to a set of baseline data. You can then do coverage measurement on your model to identify the extent to which the tests exercised the model and identify if you need to add tests or requirements to meet your coverage targets.

The functional testing process. You define tests and run tests. Then you collect test coverage or refine your model. After you collect coverage, you define additional requirements or report the test results.

This example shows how to perform requirements-based tests for a cruise control model. In this example, you:

  1. Run the tests.

  2. Determine test coverage by using Simulink® Coverage™.

  3. Increase coverage by generating additional tests using Simulink Design Verifier™.

  4. Report the results.

Open the Test Harness and Model

  1. Open the example project:

    openExample("shared_vnv/CruiseControlVerificationProjectExample");
    pr = openProject("SimulinkVerificationCruise");

  2. Open the model and the test harness.

    open_system("simulinkCruiseAddReqExample");
    sltest.harness.open("simulinkCruiseAddReqExample","SafetyTest_Harness1")
  3. Open the test file slReqTests.mldatx in the Simulink Test Manager.

    pf = fullfile(pr.RootFolder,"tests","slReqTests.mldatx");
    tf = sltest.testmanager.TestFile(pf);
    sltest.testmanager.view

  4. In the test harness, open the Test Sequence block. The sequence verifies system disengagement when either:

    • The brake pedal is pressed.

    • The speed exceeds a limit.

Measure Model Coverage

  1. In the Simulink Test Manager, select the slReqTests test file.

  2. To enable coverage collection, in the right pane, expand Coverage Settings, then expand Coverage to Collect:

    • Select Record coverage for referenced models.

    • Select Decision, Condition, and MCDC.

  3. On the Test Manager toolstrip, click Run.

  4. After the test completes, select Results. The test achieves 50% decision coverage, 41% condition coverage, and 25% MCDC coverage.

    Coverage results

Generate Tests to Increase Model Coverage

Use Simulink Design Verifier to generate additional tests to increase model coverage.

  1. In Results and Artifacts, select the slReqTests test file and, in the right pane, open the Aggregated Coverage Results section.

  2. Right-click the test results and select Add Tests for Missing Coverage.

  3. Set Harness to Create a new harness.

  4. Click OK. The model being tested must either be on the MATLAB® path or in the working folder.

  5. To execute the updated test suite, on the Test Manager toolstrip, click Run. The test results include coverage for the combined test case inputs and achieve increased model coverage.

See Also

(Simulink Test) | (Simulink Test)

Related Topics