Requirements-Based Testing for Model Development

Test an autopilot subsystem against requirements.

This example demonstrates testing a subsystem against a requirement, using the test manager, test harness, Test Sequence block, and Test Assessment block. The requirements document links to the test case and test harness, andverify声明s assess the component under test.

As you build your model, you can add test cases to verify the model against requirements. Subsequent users can run the same test cases, then add test cases to accomplish further verification goals such as achieving 100% coverage or verifying generated code.

This example tests theRoll Reference子系统需求使用three scenarios. A Test Sequence block provides inputs, and a Test Assessment block evaluates the component. TheRoll Referencesubsystem is one component of an autopilot control system.Roll Referencecontrols the reference angle of the aircraft's roll control system. The subsystem fails one assessment, prompting a design change that limits the subsystem output at high input angles.

Paths and Example Files

Enter the following to store paths and file names for the example:

filePath = fullfile(matlabroot,'toolbox','simulinktest','simulinktestdemos'); topModel ='TestAndVerificationAutopilotExample'; rollModel =“RollAutopilotMdlRef”; testHarness ='RollReference_Requirement1_3'; testFile ='AutopilotTestFile.mldatx';

Open the Test File and Model

Open the test file in the Test Manager. You can also open the Test Manager by selectingAnalysis > Test Managerfrom the Simulink menu.

tf = sltest.testmanager.load(fullfile(filePath,testFile)); sltest.testmanager.view;

Open theRollAutopilotMdlRefmodel.

open_system(fullfile(filePath,rollModel));

View Test and Model Requirements

In the lower right corner of the canvas, click the icon and select the Requirements tile. The Requirements perspective shows requirements associated with the model. You can view model items or test cases that implement or verify a requirement by clicking the links.

In the test case, expand theRequirementssection to view links to the requirement set.

Test Inputs

The test creates three scenarios to test normal conditions and exceptions in the Roll Hold Reference requirements. The test vectors are authored in the Test Sequence block.

Open the Test Sequence block.

sltest.harness.load([rollModel'/Roll Reference'],testHarness) open_system('RollReference_Requirement1_3/Test Sequence')

For each scenario, the test sequence sets a signal level, then engages the autopilot. The test sequence checks thatPhiRefis stable for a minimum timeDurationLimitbefore it transitions to the next signal level. For the first two scenarios, the test sequence sets theEndTestlocal variable to1, triggering the transition to the next scenario.

Test Assessments

Open the Test Assessment block.

open_system('RollReference_Requirement1_3/Test Assessment')

The Test Assessment block evaluatesRoll Reference. The assessment block is a library linked subsystem, which facilitates test assessment reuse between multiple test harnesses. The block containsverify声明s corresponding to:

  • The requirement thatPhiRef=PhiwhenPhioperates inside the low and high limits.

  • The requirement thatPhiRef = 0whenPhi < 6degrees.

  • The requirement thatPhiRef = 30whenPhi > 30degrees.

  • The requirement that whenTurnKnobis engaged,PhiRef = TurnKnobifTurnKnob >= 3degrees.

Run the Test

In the Test Manager toolstrip, clickRun.

The simulation returnsverify声明results and simulation output in the Test Manager. Theverify_high_pos声明fails.

  1. ClickResults and Artifactsin the test manager.

  2. In the results tree, expandVerify Statements. ClickSimulink: verify_high_pos. The trace shows when the statement fails.

  1. In theData Inspectortab, clickSubplotsand select two plots arranged vertically. Select the lower plot in theVisualizepane.

  2. In the results tree, expandResults,Requirement 1.3 Test, andSim Output.

  3. SelectPhiRefandPhi. The output traces align with theverifyresults in the above plot. Observe thatPhiRefexceeds 30 degrees whenPhiexceeds 30 degrees.

UpdateRollReferenceto limit thePhiRefsignal:

  1. Add a Saturation block as shown.

  2. Set the lower limit to-30and the upper limit to30.

  3. Link the block to its requirement. From the Requirements browser, drag requirement 1.1.2 to the Saturation block. An icon appears on the block, and the requirement is highlighted.

Run the test again. Theverify声明passes, and the output in the test manager shows thatPhiRefdoes not exceed 30 degrees.

close_system(rollModel,0); close_system(topModel,0); close_system('RollRefAssessLib',0); sltest.testmanager.clear; sltest.testmanager.clearResults; sltest.testmanager.close; clearfilePathtopModelreqDocrollModeltestHarnesstestFile