7. Data Sources¶
This chapter gives you an overview about what Data Sources MQC supports by means of its adapters. Therefore, the user is able to keep track on those measures that are imported into MQC and can be used for the definition of the Quality Model.
The current release of MQC supports the following tools: MES Model Examiner® (MXAM), MES M-XRAY® (MXRAY) and MES Test Manager® (MTest), as well as PikeTec TPT, Razorcat Tessy, MathWorks Polyspace and BTC EmbeddedTester.
For the case there is no adapter, MQC puts at the user’s disposal the possibility of a manual import of Base Measures (see Manual data import).
7.1. MES Model Examiner® (MXAM)¶
7.1.1. MXAM Data imported by MQC¶
MQC supports the standard MXAM report file (.mxmr).
The following example of an MXMR report describes which information is imported by MQC’s MXAM adapter to MQC:
from the
<RReport>
element, specifically thedate
element:ReportDateTime
from the
<artifacts>
element, the<properties key="modelname">
element:ArtifactName
MXAM provides guideline and finding result data for each artifact in the MXMR Report. Therefore, each artifact section will be parsed to get the information of the artifact result, model type and all findings and guideline results.
<artifacts result="Review" adapterId="com.modelengineers.mxam.tooladapter.matlab" storageNature="Tool artifact">
<properties key="modelname" value="ReportReviewSldemo_wheelspeed_absbrake" visible="true"/>
<properties key="modeltype" value="MOD" visible="true"/>
<properties key="dynamic" value="" visible="true"/>
…
<summary itemType="Findings">
<statistic resultType="Review" count="3"/>
<statistic resultType="Failed" count="66"/>
<statistic resultType="Info" count="28"/>
<statistic resultType="Passed" count="12"/>
<statistic resultType="Ignored" count="2"/>
</summary>
…
<summaries itemType="Guidelines">
<statistic resultType="Review" count="1"/>
<statistic resultType="Failed" count="5"/>
<statistic resultType="Passed with Infos" count="24"/>
<statistic resultType="Passed" count="11"/>
</summaries>
</artifacts>
The adapter reads those measures to be found in the Findings and Guidelines
header: <Summary itemType="Findings">
and
<Summary itemType="Guidelines">
. Please, note that a MXAM report can
contain various artifacts and for each artifact MQC reads out the Findings and
Guidelines Summary, that are saved as FindingCount
and GuidelineCount
,
respectively:
Review
Failed
Info
(for FindingCount) andPassed with Infos
(for GuidelineCount)Passed
Ignored
Aborted
Canceled
Repaired
Unrepaired
Warning
(for FindingCount) andWarnings
(for GuidelineCount)
To get more insight of how these Base Measures are processed to a measurement function, please refer to Quality Model for MXAM.
7.2. MES M-XRAY® (MXRAY)¶
7.2.1. MXRAY Data imported by MQC¶
MQC supports the Standard XML MXRAY Report file.
The following information is extracted by the MQC/ MXRAY adapter:
from the
<Timestamp>
elementReportDateTime
from the
<SubsystemQualityOverview>
header all included elements, usually these are:Local Complexity
Level
%Elementary Inputs Unused (globally)
Cyclomatic Complexity
Inports
Outports
For each of these Measures the variables
Good
,Acceptable
andBad
are imported. Furthermore forLocal Complexity
the variablesLowerBoundOfAcceptable
andLowerBoundOfBad
are read .from the
GlobalValueSummary
elementGlobal Complexity (Ref0)
Global Complexity (Ref1)
Global Complexity (RefN)
from the
CloneGroups
elementNumberOfDetectedCloneGroups
NumberOfSubsystemsAnalyzed
NumberOfUniqueSubsystemsInAllCloneGroups
NumberOfSubsystemsInAllCloneGroups
Note
In MQC CloneGroups.NumberOfUniqueSubsystemsInAllCloneGroups
is shown
as CloneGroups.Bad
:
Bad
= NumberOfUniqueSubsystemsInAllCloneGroups
Additionally CloneGroups.NumberOfSubsystemsAnalyzed
is used together
with CloneGroups.NumberOfUniqueSubsystemsInAllCloneGroups
to calculate
a value for CloneGroups.Good
:
Good
= NumberOfSubsystemsAnalyzed
- NumberOfUniqueSubsystemsInAllCloneGroups
To get more insight of how these Base Measures are processed to a measurement function, please refer to Quality Model for M-XRAY.
7.3. MES Test Manager® (MTest)¶
7.3.1. MTest Data imported by MQC¶
The MQC-MTest adapter supports the MQC-XML format for MTest Report files.
The MTest XML report consists of one <DataEntryList>
header, which contains
several <DataEntry>
elements, each of them containing all the information
for one Base Measure and Artifact.
The following information is extracted by the MQC/MTest adapter:
from the
<RevisionDate>
elementReportDateTime
from the
<ArtifactNameOrAlias>
elementArtifactName
from the
<DataSourceNameOrAlias>
element theBaseMeasureName
with its two variables (read out of the<DataSourceValue>
element):Absolute
stored in MQC asReached
Reference
stored in MQC asTotal
According to this pattern, from the <DataEntryList>
element, the following
Base Measures are imported with its respective variables (Reached and Total):
Assessment Work Progress
Model Condition Coverage
Model Decision Coverage
Requirements Compliance
Requirements with Reviewed Testability
Reviewed Assessments
Reviewed Test Sequences
Test Sequence Work Progress
Test Sequences Compliance
Testable Requirements with Assessments
Testable Requirements with Test Sequences
Testable Requirements
For the following Base Measures only exists one value that is stored in the
variable Reached
:
Total Assessments
Total Requirements
Total Test Sequences
To get more insight of how these Base Measures are processed to a measurement function, please refer to Quality Model for MTest.
7.4. Manual data import¶
MQC provides the possibility to import data from any other data source using the manual import option.
The manual import has to be done in Excel. You can use this Excel template to
create data that should be loaded to MQC. A template to import manual
data in MQC, called ManualDataImport_Template.xlsx
is provided within:
C:\Users\...\AppData\Local\TIBCO\Spotfire\10.3.3\Modules\MES.MQC.CoreExtension_X.X.X.X\Resources\SampleFiles\
.
The column Artifact
consists of entries representing the objects for which
data shall be collected and for which quality shall be computed (e.g. Simulink
models, requirements documents, software components).
The entries of the column ReportDateTime
are considered by MQC as the days
of raising the data, which shall be collected.
Using the syntax DataSource
. Measurement
. Measure
. Variable
,
you are able to load into your project any data you want. Use DataSource
to
specify where your data is coming from (e.g. the name of the tool which
produced the data). You can optionally fill out Measurement
to provide more
structuring regarding the data (e.g. the reason why data is collected, the test
environment or contexts models have been through, etc). Use the
Measure
to provide more structuring of your data regarding the result of
the measurement. To do that, give a name (the entry of the Measure field) and
a Variable
. Finally, the Value
contains the metric value that you would
like to import for the artifact and the related revision. It is recommended to
fill out Measurement
to achieve a high compliance to ISO 250xx and to avoid
that a default name is provided by MQC, which has probably no meaning to you.
As shown in Figure 7.1 you should put your variables using
DataSource
. Measurement
. Measure
. Variable
syntax within
the excel column name. The value for the respective Artifact
for a
ReportDateTime
has to be assigned to the corresponding line.
In case you might want to assign default values for your imported Base Measures, you have to define them in compliance with this syntax within the Quality Model Base Measure excel sheet (see Figure 11.1).
7.5. PikeTec TPT¶
TPT is considered an (xml-based) external test tool for which an MQC adapter executes the following operations presented by the example of the following extract of an TPT example XML report:
<Header ExecutionConfig="Lights Control MATLAB" ExecutionDate="14:47:58 10.05.2016" TptFileName="D:\requirements.tpt" TptVersion="8u2">
<Property Name="Model Under Test" Value="D:\matlab-platform\lights_control_simulink.mdl"/>
<Property Name="System Under Test" Value="lights_control_simulink/lights_control"/>
<Platform History="100" Name="MATLAB-Platform" Stepsize="10000" Timeout="60000000">
<Property Name="MATLAB Version" Value="MATLAB 8.4"/>
</Platform>
</Header>
…
<Summary AssessmentDuration="2.518" ExecutionDuration="2.078">
<ExecutionSummary Errors="0" Failed="6" Inconclusive="0" Succeeded="5" Tests="11"/>
</Summary>
MQC reads out
from the main
<Header.. >
ExecutionDateTime
(stored in MQC asReportDateTime
)SystemUnderTest Value
(stored in MQC asArtifactName
), in this case “lights_control_simulink/lights_control”. Please, note that TPT stores in the XML only the name (instead of the complete path) of the subsystemTptVersion
PlatFormName
from the
<ExecutionSummary>
header the categoriesTests
(stored in MQC asTestCount.Test
)Succeeded
(stored in MQC asTestCount.Succeeded
)Failed
(stored in MQC asTestCount.Failed
)Errors
(stored in MQC asTestCount.Errors
)Inconclusive
(stored in MQC asTestCount.Inconclusive
)
MQC offers an additional structuring method, called Measurement
described
in Section 7.4. Herewith, different Measurements with the same
BaseMeasure and Variable name can be read out. You can assign the measurement
name of MiL, SiL or PiL, which can be stated within the file name or the
PlatFormName
with the following syntax _SIL_
.
7.6. Razorcat Tessy¶
From the extract of the Tessy Example XML report,
<report success="notok" tessy_version="4.0.15" xml_version="3">
<statistic notexecuted="0" notok="11" ok="54" total="65">
<category count="54" name="ok"/>
<category count="11" name="notok"/>
<category count="0" name="notexecuted"/>
</statistic>
<info date="2018-08-23" time="16:20:30+0200"/>
…
<tessyobject id="1024" level="0" name="Testsuite" success="notok" type="project">
MQC reads
from the main (
report
) header:tessy_version
(stored in MQC asTessyReportVersion
)
from the
<statistics..>
header the categories:ok
notok
notexecuted
.
from the
<info..>
header:date
andtime
(stored in MQC asReportDateTime
)
from the
<tessyobject..>
header:name
(stored in MQC asArtifactName
)type
(stored in MQC asTessyObjectType
)
The Tessy data is imported to the transformed ValueFact table maintaining the
same notation of the Tessy classification of ok
, notok
and
notexecuted
, yet assigning them to the BaseMeasure TestCount
.
7.7. MathWorks Polyspace¶
7.7.1. Polyspace Xml-adapter¶
If a Polyspace Xml report is created, MQC reads out from the xml-file:
PubDateTime
(stored in MQC asReportDateTime
)Subtitle
(stored in MQC asArtifactName
)PolyspaceVersion
MISRA-C Checker.Violations
MISRA-C Checker.Pass_Fail
This xml-file refers to several xfrag-files in the Polyspace-doc
directory
to be found on the same level as the xml-file.
From the image-000-chapter.xfrag
-file,
<title>Run-Time Checks Summary</title>
<tgroup align="left" cols="2"><colspec colname="1" colnum="1" colwidth="600*"/><colspec colname="2" colnum="2" colwidth="600*"/><thead>
<row bgcolor="#6A80BF">
<entry>Run-Time Checks</entry><entry>Enabled</entry><?dbfo bgcolor="#6A80BF"?></row></thead>
<tbody>
<row bgcolor="#F0F2F9">
<entry>Number of Red Checks</entry><entry>
<emphasis role="red">0</emphasis></entry>
<?dbfo bgcolor="#F0F2F9"?>
</row>
<row bgcolor="#FAFBFE">
<entry>Number of Gray Checks</entry>
<entry><emphasis role="gray">0</emphasis></entry><?dbfo bgcolor="#FAFBFE"?>
</row>
<row bgcolor="#F0F2F9">
<entry>Number of Orange Checks</entry>
<entry><emphasis role="orange">0</emphasis></entry>
<?dbfo bgcolor="#F0F2F9"?></row><row bgcolor="#FAFBFE">
<entry>Number of Green Checks</entry>
<entry><emphasis role="green">220</emphasis></entry><?dbfo bgcolor="#FAFBFE"?>
</row>
<row bgcolor="#F0F2F9">
<entry>Proven</entry>
<entry>100.0%</entry><?dbfo bgcolor="#F0F2F9"?>
</row>
<row bgcolor="#FAFBFE"><entry>Pass/Fail</entry>
<entry>-</entry><?dbfo bgcolor="#FAFBFE"?></row></tbody>
</tgroup>
</table>
MQC extracts the following information, modifies and transformes it via predefined data table transformations:
Number of Red Checks
(stored asRun-Time Checks.Major
in MQC)Number of Gray Checks
(stored asRun-Time Checks.Minor
in MQC)Number of Orange Checks
(stored asRun-Time Checks.Moderate
in MQC)Number of Green Checks
(stored asRun-Time Checks.Good
in MQC)Percentage of Proven
(stored asRun-Time Checks.Proven
in MQC)Pass/Fail
(stored asRun-Time Checks.Pass_Fail
in MQC)
7.7.2. Polyspace Text-adapter¶
If a Polyspace tab-separated Text report is created, MQC reads from this txt-file:
Last modified time of file
(stored in MQC asReprtDateTime
)File
Family
Color
From the File
column MQC extracts the file paths of all files used to
create the report. MQC then obtains the common prefix from these file paths
and extracts the last directory from the prefix.This is stored as the
Artifact Name
in MQC.
For example if paths read from the “File” column are as follows:
E:\D42\A987R\InputOut\Swc_HMK
\TLSim\Rte.cE:\D42\A987R\InputOut\Swc_HMK
\TLProj\TL_Swc_WIM\Swc_WIM.cE:\D42\A987R\InputOut\Swc_HMK
\TLSim\J_GLOBAL_STD.h
The common prefix is marked above and MQC extracts the last common directory
Swc_WIM
as the artifact name.
MQC extracts from the tab-separated columns Family
as base measure and
aggregated Color
count as variable. MQC then modifies and transforms it
via predefind data table transformations as follows:
Family:Run-time Check and Color:Red
(stored asRun-Time Checks.Major
in MQC)Family:Run-Time Check and Color:Gray
(stored asRun-Time Checks.Minor
in MQC)Famliy:Run-Time Check and Color:Orange
(stored asRun-Time Checks.Moderate
in MQC)Family:Run-Time Check and Color:Green
(stored asRun-Time Checks.Good
in MQC)Family:Global Variable and Color:Gray
(stored asGlobal Variable.Unused variable
in MQC)Family:Global Variable and Color:Not Applicable
(stored asGlobal Variable.Used non-shred variable
in MQC)Family:MISRA-C
(stored asMISRA-C Checker.Violations
in MQC)
7.8. BTC EmbeddedTester¶
MQC supports two types of Embedded Tester (ET) report formats:
MQC XML report format (previous versions of ET)
7.8.1. Standard XML report format¶
If a standard XML report is created, MQC will read from the XML file:
<BTCXmlReport>
<ProfileInfo lastArchitectureUpdate="Wed Nov 07 16:32:55 CET 2018" lastB2BTestExecution="Sat Aug 11 08:44:00 CEST 2018" lastRBTSILTestExecution="Wed Nov 07 16:39:43 CET 2018" lasteModifier="mes" modelName="TestObject.slx" modelVersion="0.0.1+STD" profileName="UT_TestObject.epp"/>
<RBT>
<Tests sumSILErrorExecutions="0" sumSILFailedExecutions="0" sumSILMissingExecutions="0" sumSILOutdatedExecutions="0" sumSILPassedExecutions="7" sumTestCases="7"/>
<Requirements percentageSILPassedRequirements="100.0" sumRequirements="11" sumSILFailedRequirements="0" sumSILMissingOrOutdatedStatusRequirements="0" sumSILPassedRequirements="11"/>
<SILFailedRequirements/>
<RBTCoverageOverview>
<Statement covered="77.33" handled="78.95" unknown="21.05" unreachable="1.62"/>
<Decision covered="62.82" handled="65.38" unknown="34.62" unreachable="2.56"/>
<MCDC covered="66.28" handled="68.6" unknown="31.4" unreachable="2.33"/>
</RBTCoverageOverview>
</RBT>
<B2B>
<Tests lastB2BTestName="TL MIL vs SIL" status="FAILED_ACCEPTED" sumErrorTests="0" sumFailedAcceptedTests="32" sumFailedTests="0" sumPassedTests="25" sumTests="57"/>
<B2BCoverageOverview>
<Statement covered="98.38" handled="100.0" unknown="0.0" unreachable="1.62"/>
<Decision covered="97.44" handled="100.0" unknown="0.0" unreachable="2.56"/>
<MCDC covered="97.67" handled="100.0" unknown="0.0" unreachable="2.33"/>
</B2BCoverageOverview>
</B2B>
</BTCXmlReport>
MQC extracts the following information, stores and transformes it to the MQC data structure, so that the imported data can be added to the ValueFact table as rows:
from the
<ProfileInfo>
header:lastRBTSILTestExecution
(stored in MQC asReportDateTime
)modelName
(stored in MQC asArtifactName
)
from the
<RBTCoverageOverview>
header:MCDC covered
(stored in MQC asRequirement Based Testing.MCDC
)
from the
<RBT>
header:percentageSILPassedRequirements
(stored in MQC asRequirement Based Testing.Test coverage
)
from the
<BTB>
header:sumTests
(stored in MQC asStructural Testing.Nb Total
)sumPassedTests
(stored in MQC asStructural Testing.Passed
)sumFailedAcceptedTests
(stored in MQC asStructural Testing.Failed Accepted
)sumFailedTests
(stored in MQC asStructural Testing.Failed
)sumErrorTests
(stored in MQC asStructural Testing.Error
)MCDC covered
(stored in MQC asStructural Testing.MCDC
)
7.8.2. MQC XML report format¶
If the MQC XML report is created, MQC is able to automatically import a great number of Base Measures:
Back-2-Back-Results
with the following variables: -Errors
-Failed
-Failed (Accepted)
-Passed
-Total Vectors
Code Coverage - Condition Coverage
with the following variables: -Covered
-Handled
-Tests
-Unreachable (n/inf)
Code Coverage - Decision/Branch Coverage
with the following variables:Covered
Handled
Tests
Unreachable (n/inf)
Code Coverage - Modified Condition/Decision Coverage
with the following variables:Covered
Handled
Tests
Unreachable (n/inf)
Code Coverage - Statement Coverage
with the following variables:Covered
Handled
Tests
Unreachable (n/inf)
Requirements Coverage
with the following variables:Requirements
Requirements Covered
Requirements Fulfillment
Test Execution Results
with the following variables:Errors
Failed
Failed (Accepted)
Passed
Total Vectors