You can use Test Manager to create MAT-file and Microsoft® Excel® data files to use as inputs to test cases. You generate a template that contains the signal names and the times, and then enter the data.
Creating a data file also adds the file to the list of available input files for the test case. After you add input data, you can then select the file to use in your test case.
You can create files for input data only for tests that run in the current release. To select the release, in the test case, use the Select releases for simulation list.
You can edit input files. After you create the template, select the file from the list of input files and click Edit. MAT-files open in the signal editor. Excel files open in Excel.
Selecting the Add an iteration that runs this input check box adds an iteration to the test case under Table Iterations and assigns the input file to it. After you create the input file, continue to specify the iteration. For more information on iterations, see Test Iterations.
You can generate a template test spreadsheet from a model or harness (system under test [SUT]). You can then complete the spreadsheet with external data and import it into Simulink® Test™ as a test case.
The Create Test from Spreadsheet wizard parses the SUT for test attributes and automatically generates a template spreadsheet and a test case:
Inputs — Inputs are characterized by root input ports
Parameters — Named parameters in the model
Comparison signals — Logged signals and output ports
The wizard allows you to filter and edit the attributes needed for testing. The resulting spreadsheet has separate column sets for inputs, parameters, and comparison signals. If multiple iterations are required, a separate sheet in the same file is generated for each scenario. You can expand the spreadsheet to add time-based signal data, tolerances, and parameter overrides. See Format Test Case Data in Excel for the full description of the format readable by Simulink Test.
You can use the model coordinate_transform_test
as an example
for the process. The model must be on the MATLAB® path.
Open the test manager. On the Apps tab, under Model Verification, Validation, and Test, click Simulink Test. Then, on the Tests tab, click Simulink Test Manager.
Open the wizard. From Simulink Test Manager, select New > Test from Spreadsheet. Select Create a test template file for specifying data and follow the prompts.
In the Attributes page, select which attribute categories are to be included in the spreadsheet. For example, if parameter overrides are not necessary for the tests, clear Parameters. The attribute categories shown on the page are derived from the SUT. Comparison signals are always shown.
If the test requires all attributes in a category as is, select Yes, include all attributes in the spreadsheet and click Next. If not, select No, I want to filter and edit the attributes. This shows a page with a tab for each attribute category.
If you are filtering the attributes, in the Parameters and Comparison tabs, clear the attributes that are not needed. For example, you can remove a logged signal from this list if it is not to be used for comparison in the tests.
Optionally change tolerances in the Comparison page. The tolerance settings apply to all signals in the list. To specify different tolerances for each signal, edit the spreadsheet after it is generated.
If you change the SUT during the selection process, click Refresh to synchronize the attribute lists with the SUT. Once selection is complete, click Next and keep following the prompts.
In the Scenarios page, specify the number of test scenarios and a base name for the sheets in the spreadsheet.
If comparison signals are selected, the wizard runs the model to capture the baseline. Make sure that the model does not run indefinitely by setting a finite stop time. The wizard creates two files:
Excel spreadsheet — The spreadsheet includes columns for inputs, parameters, and comparison signals. Inputs and comparisons have different time bases. An identical sheet for each test scenario is generated. Complete the spreadsheet outside MATLAB to uniquely define each scenario.
Test file — The test case imports the Excel spreadsheet. The fields defined in the spreadsheet are locked to the spreadsheet, and cannot be edited in the Test Manager.
To change the locked fields, edit the spreadsheet outside MATLAB.If you change a parameter, you must capture the baseline again by clicking the Capture button.
You can specify signal data in a Microsoft Excel file to use as input to your test case or as baseline criteria (outputs). The Excel file includes time and signal data. To support a range of models and configurations, you can specify signal data of most data types. For exceptions, see Limitations. You can indicate whether signals are scalar, multidimensional, or complex. You can optionally specify the data type, block path and port index, units, interpolation type, and function-call execution times.
The figure shows the basic format of the Excel file. This example uses scalar signals and the default
data type, double
, for all signals.
When specifying time and signal data (and not function-call
execution times), the time
column is the first
column. Time values must increase in value, and every cell must
contain a value. .
Include one column for each input signal in the first row. In each column, include the signal data for each time point. Signal names are case-sensitive.
If dataset elements have different time vectors, the spreadsheet can have more than one time column. In this case, the columns to the right of each time column, up to the next time column, define signals along that time vector. The signal columns must have the same number of rows as the time column they define values for. The figure shows an example that has a time column for each time vector.
When you import data, you specify the mapping mode. To map using signal or block names, add the block or signal names and qualifiers in the first row. If you are mapping using block path and name, also specify them in the optional rows (see Block Path and Port Index). If you are mapping using port numbers, signal columns map to the model ports in order during import, ignoring the block or signal names.
You can save inputs and outputs in the same Excel file in the same sheet. Specify whether the signals are
for inputs or outputs in one of the optional rows, using
Source:Input
or Source:Output
as the
label. Keep all the inputs together and
all the outputs together.
To import the file as input data, use the Inputs section of the test case, described in Run Tests Using External Data. To use the Excel file as expected outputs, select it to add as baseline data, in the Baseline Criteria section of the test case, described in Baseline Criteria.
When you capture inputs and expected outputs in Test Manager, you can save inputs and outputs to the same Excel file. Both sets of data are saved to the same sheet unless you specify a different sheet. Saving the inputs or expected outputs adds the file to the test. See Capture Baseline Criteria.
You can save parameter override values in the same Excel file in the same sheet. Specify the
name of the parameter in the Parameter:
column and the
override value in the Value:
column. Each row corresponds to
a parameter. Enter vector and matrix parameters as you would in MATLAB. You can also use MATLAB expressions for parameter values. Values are read as strings and
are evaluated at runtime. Signal data and parameter data start on the same row.
The Parameter
column must precede the
Value
column and both columns are required. For unnamed
parameters or parameters in a masked subsystem, add a third column,
BlockPath
, and enter the path to the block.
You can specify tolerances for comparison signals in the Excel file. It is possible to define one or
more tolerance types for each signal, in any
order. Prefix the tolerance value with one of: AbsTol:
,
RelTol:
, LeadingTol:
,
LaggingTol:
. The format is
<ToleranceType>:<ToleranceValue>
.
Tolerances are interpreted as floating-point doubles. Each tolerance type should be in a dedicated row. Once a row is declared to be a certain type of tolerance, all columns in that row must be of that type. An empty cell is treated as tolerance of zero. For more information on tolerances, see Compare Model Output To Baseline Data.
When you perform equivalence tests in Test Manager, you compare the results of
two simulations. If your Excel input
file is for an equivalence test, you can specify the inputs for each simulation.
Specify the simulation in one of the optional rows, using
Simulation:1
or Simulation: 2
as the
label. Keep the inputs for each simulation together.
In addition to scalar signal names, you can indicate multidimensional, complex, and bus signals, or a combination of these. The figure shows some examples.
Specify block paths, and optionally, port index in one of the optional rows. See Block Path and Port Index.
Base Name. Names are case-sensitive.
Multidimensional Signals. Use parentheses with the signal dimension after the signal name. For example:
mySignal(1,3)
Dimensions on the signal that you do not specify default to zeros of the same data type and complexity as the dimensions that you specify.
Complex Signals. For complex signals, use (real)
or
(imag)
with the signal name. For example:
mySignal (real)
mySignal (imag)
mySignal(1,3) (imag)
If you do not specify a real counterpart to an imaginary number, the real value defaults to zeros.
Bus Signals. Specify bus signals in the form
signalname.busElement.nestedElement
for as many
nested elements as the bus has. For example:
myBusSignal.x
busSignal2.x.z
Suppose the inport block myBus
is a bus object with
this structure:
In this case, specify the signal as myBus.a.w
.
The figure shows an example of specifying bus signals with a bus data type
(see Data Type). The
BusObj
data type also applies to the columns to the
right because the base name for these signals is the same.
Block Path and Port Index. If you want to specify the signal using the block path, enter it in one of
the optional rows in the form BlockPath:
path to block
. When you specify a block path, you
can also specify the block port index. The default port index is 1. Enter
the port index in the row following the block path in the form
PortIndex:
port number
. For example:
BlockPath: mymodel/myblock
PortIndex: 2
In the optional rows between the signal name and the time and signal data, you can include any combination of information about the signal:
Data type
Units
Interpolation
Block path and port index (see Block Path and Port Index)
Data Type. Enter data types in the row after the signal name. The default data type
is double
.
You can mix data types in the same row, but you must use the same data type for all columns of a multidimensional or complex signal.
You can leave the columns to the right of the data type declaration empty
if that data type applies to the signal data in those columns. For example,
here the data type int16
applies to columns B and C
because they are dimensions of the same signal.
Specify built-in MATLAB data types supported in Simulink in the form Type:
data type
. See Data Types Supported by Simulink (Simulink). For example:
Type: int16
Type: uint32
Specify an enumeration data type in the form Enum:
class
. For example:
Enum: school
The data in the cells correspond to enumerated values. For example:
Enum
data type dimensions that do not have data
default to the default enumeration value.
Indicate a fixed-point data type using the prefix
Fixdt:
, followed by the data type in one of these forms:
A fixdt
constructor, for example, Fixdt:
fixdt(1,16)
.
A unique data type name string, for example,
Fixdt: sfix16_B7
. To learn about
specifying data type names, see Fixed-Point Data Type and Scaling Notation (Fixed-Point Designer).
A numerictype
object in the base workspace, for example, Fixdt:
mytype
.
Specify the bus object in the form Bus:
bus object
with a bus signal. For example:
Bus: BusObject1
To specify a bus signal, see Bus Signals.
Specify an alias data type in the form Alias:
alias type
. To learn about alias data types,
see Simulink.AliasType
.
Units. Optionally, include a row for units. Specify units in the form
Unit:
units
. You can specify units and physical
quantity. For example:
Unit: g
Unit: kg@mass
Interpolation. Optionally, include a row for interpolation. The default is linear.
Specify interpolation as Interp: zoh
or Interp:
linear
.
Synchronization. Optionally, include a row for synchronization. The default is
union
. Specify synchronization as Sync:
union
or Sync: intersection
.
If the model contains control signals for function-call subsystems, add
columns for each one before the first time
column. Enter the
control signal name in the column heading. Enter the points of time when you
want to execute the function call in the column.
Function-call execution times that you specify are independent of the times in
the time
column. The figure shows how to format two
function-call blocks that execute at various times. The time and signal data and
data type information are independent of the function-call information.
Arrays of buses as a data type are not supported.
In the test case, under System Under Test, specify the model whose input data you want to create a MAT-file for.
In the Inputs section of the test case, click Create.
In the dialog box, set the file format to
MAT-file
. Specify the location for the
MAT-file and click Create.
The signal editor opens.
In the Scenarios and Signals pane of the signal editor, expand the data node. Then select the signal whose data you want to add.
Specify the signal data. Select the data type from the list, and enter the time and signal data for the signal.
To update your signal data, click Apply.
After adding the signal data, click Save.
sltest.testmanager.BaselineCriteria
| sltest.testmanager.TestInput