SlideShare a Scribd company logo
1 of 51
Download to read offline
.lusoftware verification & validation
VVS
Augmenting Field Data
for Testing Systems Subject to
Incremental Requirements Changes
Daniel Di Nardo, Fabrizio Pastore, Lionel Briand
SnT Centre, University of Luxembourg
Journal First - ACM Transactions on
Software Engineering and Methodology
Volume 26 Issue 1, July 2017
Data Processing Systems
• Aa
• aa
Data Processing Systems
Data Processing Systems
Processing
Workflows
Web Crawlers
Data Processing Systems
Processing
Workflows
Web Crawlers
Data Processing Systems
Processing
Workflows
Web Crawlers
Solution: Reuse Field Data[ICST’15]
Data Requirements Change
Changes affect
Data Fields, Data Types, Constraints
Old Test Cases Cannot be Reused
Field Data is Not Available
Test Input for Base Version
Test Input for Updated Version
Automatically Generate
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slice-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slice-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
1
Transmission Vcdu
VcduHeader
Packet
PacketZone
ActiveZoneIdleZone
1 1
1..*1
1
versionNumber : Int
spaceCraftId : Int
virtualChanId : Int
apidValue : Apid
sequenceCount : Int
dataLength : Int
PacketHeader
SarPacketHeader
coarseTime : Int
fineTime : Int
GpsrPacketHeader
coarseTime : Int
fineTime : Int
Configuration
spaceCraftId : Int
checkCrc : Bool
idleVcid : Vcid
idleApid : Apid
VcduConfig
vcid : Vcid
minPacketSize : Int
maxPacketSize : Int
apids : Apid[]
1
1
1..*
1
prev
1..*
1
1
1
«DataType»
Apid
value : Int
1
Transmission Vcdu
VcduHeader
Packet
PacketZone
ActiveZoneIdleZone
1 1
1..*1
1
versionNumber : Int
spaceCraftId : Int
virtualChanId : Int
apidValue : Apid
sequenceCount : Int
dataLength : Int
PacketHeader
SarPacketHeader
coarseTime : Int
fineTime : Int
GpsrPacketHeader
coarseTime : Int
fineTime : Int
Configuration
spaceCraftId : Int
checkCrc : Bool
idleVcid : Vcid
idleApid : Apid
VcduConfig
vcid : Vcid
minPacketSize : Int
maxPacketSize : Int
apids : Apid[]
1
1
1..*
1
prev
context VcduHeader inv:
self.vcdu.trans.config.vcduConfigs.vcid
→exists(x | x = self.virtualChanId)
OCL constraints
1..*
1
1
1
«DataType»
Apid
value : Int
1
Transmission Vcdu
VcduHeader
Packet
PacketZone
ActiveZoneIdleZone
1 1
1..*1
1..*
1
versionNumber : Int
spaceCraftId : Int
virtualChanId : Int
apidValue : Apid
sequenceCount : Int
dataLength : Int
PacketHeader
SarPacketHeader
coarseTime : Int
fineTime : Int
GpsrPacketHeader
coarseTime : Int
fineTime : Int
Configuration
spaceCraftId : Int
checkCrc : Bool
idleVcid : Vcid
idleApid : Apid
VcduConfig
vcid : Vcid
minPacketSize : Int
maxPacketSize : Int
apids : Apid[]
1
1
1..*
1
prev
context Packet inv:
( self.apidValue.value=1 and
self.pHeader.oclIsTypeOf(SarPacketHeader) ) or
…
1
1
1
context VcduHeader inv:
self.vcdu.trans.config.vcduConfigs.vcid
→exists(x | x = self.virtualChanId)
OCL constraints
«DataType»
Apid
value : Int
Capture
New Data Requirements
in
Updated Data Model
1
Transmission Vcdu
VcduHeader
Packet
PacketZone
ActiveZoneIdleZone
1 1
1..*1
1..*
1
versionNumber : Int
spaceCraftId : Int
virtualChanId : Int
apidValue : Apid
sequenceCount : Int
dataLength : Int
PacketHeader
«Replacement»
MsiPacketHeader
coarseTime : Int
fineTime : Int
opMode : Int
status : Int
GpsrPacketHeader
coarseTime : Int
fineTime : Int
prev
context Packet inv:
( self.apidValue.value=1 and
self.pHeader.oclIsTypeOf(SarPacketHeader) ) or
…
Configuration
spaceCraftId : Int
checkCrc : Bool
idleVcid : Vcid
idleApid : Apid
VcduConfig
vcid : Vcid
minPacketSize : Int
maxPacketSize : Int
apids : Apid[]
1
1
1..*
1
SarPacketHeader
coarseTime : Int
fineTime : Int
context VcduHeader inv:
self.vcdu.trans.config.vcduConfigs.vcid
→exists(x | x = self.virtualChanId)
OCL constraints
«DataType»
Apid
value : Int
1
Transmission Vcdu
VcduHeader
Packet
PacketZone
ActiveZoneIdleZone
1 1
1..*1
1..*
1
versionNumber : Int
spaceCraftId : Int
virtualChanId : Int
apidValue : Apid
sequenceCount : Int
dataLength : Int
PacketHeader
prev
context Packet inv:
( self.apidValue.value=3 or self.apidValue.value=4
and self.pHeader.oclIsTypeOf(MsiPacketHeader) )
or …
Configuration
spaceCraftId : Int
checkCrc : Bool
idleVcid : Vcid
idleApid : Apid
VcduConfig
vcid : Vcid
minPacketSize : Int
maxPacketSize : Int
apids : Apid[]
1
1
1..*
1
«Replacement»
MsiPacketHeader
coarseTime : Int
fineTime : Int
opMode : Int
status : Int
GpsrPacketHeader
coarseTime : Int
fineTime : Int
context VcduHeader inv:
self.vcdu.trans.config.vcduConfigs.vcid
→exists(x | x = self.virtualChanId)
OCL constraints
«DataType»
Apid
value : Int
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slice-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: SarHeader
coarseTime=10
fineTime=30
pd1: PacketData
data=..
c1: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid1
minPacketSize=200
maxPacketSize=300
apids=<apid1,apid2>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
ph2: SarHeader
coarseTime=10
fineTime=30
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph3: SarHeader
coarseTime=10
fineTime=30
pd3: PacketData
data=..
Original Model Instance
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slicing-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: SarHeader
coarseTime=10
fineTime=30
pd1: PacketData
data=..
c1: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid1
minPacketSize=200
maxPacketSize=300
apids=<apid1,apid2>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
ph2: SarHeader
coarseTime=10
fineTime=30
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph3: SarHeader
coarseTime=10
fineTime=30
pd3: PacketData
data=..
Replace obsolete classes
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c1: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid1
minPacketSize=200
maxPacketSize=300
apids=<apid1,apid2>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Replace obsolete classes
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc2: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Load new configuration
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc2: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
context VcduHeader inv: self.vcdu.trans.con g.vcduCon gs.vcid→exists(x | x = self.virtualChanId)
Updated data may invalidate constraints
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc2: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
context Packet inv:
…
( (self.apidValue.value=3 or self.apidValue.value=4) and self.pHeader.oclIsTypeOf(MsiPacketHeader) ) or
…
Updated constraints may not hold
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc2: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Incomplete Updated Model Instance
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slicing-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Identify all the root-to-leaf paths
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Generate a slice for each
a1:ActiveZonet1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Generate a slice for each
All the instances “linked by an OCL”
to an element of the path
must belong to the slice
context PacketZone inv: self.packets→forAll(x : Packet |
self.vcdu.trans.config.vcduConfigs→select(y : VcduConfig |
y.vcid = self.vcdu.vcduHeader.virtualChannelId).apids→exists(z : Apid | z = x.apidValue)
…
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
pd1: PacketData
data=..
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
pd2: PacketData
data=..
p3: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
pd3: PacketData
data=..
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
Generate a slice for each
Elements of collections are linked to the
previous element only
Constraint solving
Slice with
updated values
Generate
slices
Incomplete Updated Model Instance
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu
a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
“Solve” a slice
//Declare classes
abstract sig Vcdu {
trans:one Transmission, packetZone:one
PacketZone }
..
//Declare class instances
one sig vc2 extends VcduConfig{}
..
//Facts for associations
fact t1.config=c2
..
//Facts for config variables
fact { vc2.apids = apid3+apid4..
//Facts for data variables
fact { p1.apidValue = apid1 }
fact { p1.sequenceCount = 1 }
//Alloy predicate for OCLs
pred PacketHeaderApid []{ all e: PacketHeader | …
Alloy Model
UMLtoAlloy
OCL constraints…
t1:Transmission
p1: Packet
apidValue=apid1
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu
a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
“Solve” a slice
UMLtoAlloy
OCL constraints…
Alloy Analyzer No Solution
Relax Model
//Facts for data variables
fact { p1.apidValue = apid1 }
fact { p1.sequenceCount = 1 }
//Alloy predicate for OCLs
pred PacketHeaderApid []{ all e: PacketHeader | …
Remove facts
that prevent
the generation of
a solution
Alloy Instance
t1:Transmission
p1: Packet
apidValue=apid3
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=1
status=1
c2: Configuration
spaceCraftId=1
checkCrc=true
idleVcid=vcid0
idleApid=apid0
vc1: VcduConfig
vcid=vcid2
minPacketSize=200
maxPacketSize=300
apids=<apid3,apid4,
apid5,apid6>
v1:Vcdu
a1:ActiveZone
vh1: VcduHeader
versionNumber=1
spaceCraftId=1
virtualChanId=vcid1
…
“Solve” a slice
UMLtoAlloy
OCL constraints…
Alloy Analyzer No Solution
Relax Model
//Facts for data variables
fact { p1.apidValue = apid1 }
fact { p1.sequenceCount = 1 }
//Alloy predicate for OCLs
pred PacketHeaderApid []{ all e: PacketHeader | …
Remove facts
that prevent
the generation of
a solution
Alloy Instance
Solve slice
Slice with
updated values
Copy to
Incomplete
Model Instance
Generate
slices
Incomplete Updated Model Instance
p2: Packet
apidValue=apid1
sequenceCount=2
dataLength=200
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
t1:Transmission
v1:Vcdu
a1:ActiveZone
vh1
c2:
..
vc1
…
p1: Packet
apidValue=apid3
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=1
status=1
“Solve” next slice
p2: Packet
apidValue=apid3
sequenceCount=2
dataLength=200
ph2: MsiHeader
coarseTime=10
fineTime=30
opMode=
status=
t1:Transmission
v1:Vcdu
a1:ActiveZone
vh1
c2:
..
vc1
…
p1: Packet
apidValue=apid3
sequenceCount=1
dataLength=200
ph1: MsiHeader
coarseTime=10
fineTime=30
opMode=1
status=1
“Solve” next slice
Solving algorithm
does not rewrite
variables generated
in previous steps
Solve slice
Slice with
updated values
Copy to
Incomplete
Model Instance
Generate
slices
Incomplete Updated Model Instance
If a value “used” in a previous slice
has been modified, restart from first
Solve slice
Slice with
updated values
Copy to
Incomplete
Model Instance
Generate
slices
Valid Updated Model Instance
Incomplete Updated Model Instance
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slice-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model
Empirical Evaluation
• RQ1: How does the proposed approach compare to a non-slicing
approach?
• RQ2: Does the proposed approach scale to a practical extent?
• RQ3: Does the proposed approach allow for the effective testing
of new data requirements?
• RQ4: Does the proposed approach allow for efficient and effective
system testing compared to manual approach?
Case Study
• Data Processing System for Satellite Data developed by SES
• Data Model
• 82 classes, 322 attributes, 56 associations, 52 OCL constraints
• Manual testing is expensive
• 130 class instances, 261 attributes, 1152 constrained attribute
values
RQ1: How does the proposed approach
compare to a non-slicing approach?
• To be justified the proposed approach should provide an
advantage over one that does not use slicing
• Created a simplified technique that does not apply slicing
• All attribute values are generated from scratch from a single execution
of the Alloy Analyzer
• Generated test inputs from 1 to 40 VCDUs
• 10 inputs for each size
Proposed approach (using slicing)
vs a non-slicing approach
Scales better
than non-slicing
approach
RQ2: Does the proposed approach
scale to a practical extent?
• Generation of new data should be fast enough and scale
effectively as file size increases
• Generated test inputs from 50 to 500 VCDUs
• 10 inputs for each size
Execution time required to generate inputs
vs number of VCDUs
Non-trivial inputs
generated in reasonable time
RQ3: Does the proposed approach allow for the
effective testing of new data requirements?
• Automatically generate new data intended for use in
robustness test cases
• Integrate a mutation approach (ICST’15) to generate
robustness test cases
• Measure code coverage of the source code that implements
the new data requirements
• Compare with test cases written by engineers
Field Data
(Version 0)
Updated
Data
(Version 1)
Robustness
Test Inputs
(Version 1)
Slicing Based
Generation
Mutation Based
Generation
RQ3: Does the proposed approach allow for the
effective testing of new data requirements?
Test
suite
S2 Instructions Covered S2 Branches Covered # of
Tests
Avg Min Max Avg Min Max
Auto 74
(77.9%)
74
(77.9%)
74
(77.9%)
9
(81.8%)
9
(81.8%)
9
(81.8%)
103.1
Test
suite
S2 Instructions Covered S2 Branches Covered # of
Tests
Avg Min Max Avg Min Max
Auto 74
(77.9%)
74
(77.9%)
74
(77.9%)
9
(81.8%)
9
(81.8%)
9
(81.8%)
103.1
Manual 68
(71.6%)
- - 8
(72.7%)
- - 32
More effective than manual testing
RQ4: Does the proposed approach allow for
effective system testing?
• In the presence of a new software version engineers are
interested in testing the whole system
• Necessary to test unmodified functions when they process a
new a data type (e.g. packet data extraction in the presence
of a new packet type)
• Same approach of RQ3: robustness testing
• Measure code coverage of the whole system
• Compare with 32 expensive manually crafted test inputs
RQ4: Does the proposed approach allow for
effective system testing?
More effective than manual testing
Test
suite
Instructions Covered Branches Covered # of
Tests
Avg Min Max Avg Min Max
Auto 23,432.1
(72.2%)
23,273
(71.7%)
23,529
(72.5%)
978.7
(51.3%)
957
(50.2%)
987
(51.8%)
103.1
Manual 23,046
(71.0%)
- - 950
(49.8%)
- - 32
RQ4: Does the proposed approach allow for
efficient and effective system testing?
• Both data modelling and manual testing are expensive
• Data Model: 82 classes, 322 attributes, 56 associations, 52 OCL constraints
• Manual test: 130 class instances, 261 attributes, 1152 constrained attribute values
• Data model useful for other purposes (e.g., discuss with system engineers)
• Manual and automatically generate tests have negligible
execution time:
• Manual, 10 mins – Automatically generated, 30 mins
• Automatically generated tests are more effective
Original
Model Instance
Incomplete Updated
Model Instance
Data Loading
Slice-based
Constraint
Solving
Automatic
Model
Transformation
Data Writing
Valid Updated
Model Instance
Updated
DataField
Data
Data Model

More Related Content

What's hot

Automated and Scalable Solutions for Software Testing: The Essential Role of ...
Automated and Scalable Solutions for Software Testing: The Essential Role of ...Automated and Scalable Solutions for Software Testing: The Essential Role of ...
Automated and Scalable Solutions for Software Testing: The Essential Role of ...Lionel Briand
 
Fault Simulation (Testing of VLSI Design)
Fault Simulation (Testing of VLSI Design)Fault Simulation (Testing of VLSI Design)
Fault Simulation (Testing of VLSI Design)Usha Mehta
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020Christian Nagel
 
Change Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language RequirementsChange Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language RequirementsLionel Briand
 
Code Management Workshop
Code Management WorkshopCode Management Workshop
Code Management WorkshopSameh El-Ashry
 
11 static timing_analysis_2_combinational_design
11 static timing_analysis_2_combinational_design11 static timing_analysis_2_combinational_design
11 static timing_analysis_2_combinational_designUsha Mehta
 
Hdl based simulators
Hdl based simulatorsHdl based simulators
Hdl based simulatorsPrachi Pandey
 
BUilt-In-Self-Test for VLSI Design
BUilt-In-Self-Test for VLSI DesignBUilt-In-Self-Test for VLSI Design
BUilt-In-Self-Test for VLSI DesignUsha Mehta
 
How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?Sameh El-Ashry
 
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...Usha Mehta
 
Generating Automated and Online Test Oracles for Simulink Models with Continu...
Generating Automated and Online Test Oracles for Simulink Models with Continu...Generating Automated and Online Test Oracles for Simulink Models with Continu...
Generating Automated and Online Test Oracles for Simulink Models with Continu...Lionel Briand
 
Combining genetic algoriths and constraint programming to support stress test...
Combining genetic algoriths and constraint programming to support stress test...Combining genetic algoriths and constraint programming to support stress test...
Combining genetic algoriths and constraint programming to support stress test...Lionel Briand
 
A Natural Language Programming Approach for Requirements-based Security Testing
A Natural Language Programming Approach for Requirements-based Security TestingA Natural Language Programming Approach for Requirements-based Security Testing
A Natural Language Programming Approach for Requirements-based Security TestingLionel Briand
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_designUsha Mehta
 
Test pattern Generation for 4:1 MUX
Test pattern Generation for 4:1 MUXTest pattern Generation for 4:1 MUX
Test pattern Generation for 4:1 MUXUrmilasSrinivasan
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...Sung Kim
 
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...Sameh El-Ashry
 
TMPA-2017: A Survey of High-Performance Computing for Software Verification
TMPA-2017: A Survey of High-Performance Computing for Software VerificationTMPA-2017: A Survey of High-Performance Computing for Software Verification
TMPA-2017: A Survey of High-Performance Computing for Software VerificationIosif Itkin
 

What's hot (20)

Automated and Scalable Solutions for Software Testing: The Essential Role of ...
Automated and Scalable Solutions for Software Testing: The Essential Role of ...Automated and Scalable Solutions for Software Testing: The Essential Role of ...
Automated and Scalable Solutions for Software Testing: The Essential Role of ...
 
Fault Simulation (Testing of VLSI Design)
Fault Simulation (Testing of VLSI Design)Fault Simulation (Testing of VLSI Design)
Fault Simulation (Testing of VLSI Design)
 
STL Algorithms In Action
STL Algorithms In ActionSTL Algorithms In Action
STL Algorithms In Action
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
 
Change Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language RequirementsChange Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language Requirements
 
Code Management Workshop
Code Management WorkshopCode Management Workshop
Code Management Workshop
 
11 static timing_analysis_2_combinational_design
11 static timing_analysis_2_combinational_design11 static timing_analysis_2_combinational_design
11 static timing_analysis_2_combinational_design
 
Hdl based simulators
Hdl based simulatorsHdl based simulators
Hdl based simulators
 
BUilt-In-Self-Test for VLSI Design
BUilt-In-Self-Test for VLSI DesignBUilt-In-Self-Test for VLSI Design
BUilt-In-Self-Test for VLSI Design
 
How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?How to create SystemVerilog verification environment?
How to create SystemVerilog verification environment?
 
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...
Deterministic Test Pattern Generation ( D-Algorithm of ATPG) (Testing of VLSI...
 
Generating Automated and Online Test Oracles for Simulink Models with Continu...
Generating Automated and Online Test Oracles for Simulink Models with Continu...Generating Automated and Online Test Oracles for Simulink Models with Continu...
Generating Automated and Online Test Oracles for Simulink Models with Continu...
 
Combining genetic algoriths and constraint programming to support stress test...
Combining genetic algoriths and constraint programming to support stress test...Combining genetic algoriths and constraint programming to support stress test...
Combining genetic algoriths and constraint programming to support stress test...
 
Værktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmerVærktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmer
 
A Natural Language Programming Approach for Requirements-based Security Testing
A Natural Language Programming Approach for Requirements-based Security TestingA Natural Language Programming Approach for Requirements-based Security Testing
A Natural Language Programming Approach for Requirements-based Security Testing
 
12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design12 static timing_analysis_3_clocked_design
12 static timing_analysis_3_clocked_design
 
Test pattern Generation for 4:1 MUX
Test pattern Generation for 4:1 MUXTest pattern Generation for 4:1 MUX
Test pattern Generation for 4:1 MUX
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
 
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...
Efficient Methodology of Sampling UVM RAL During Simulation for SoC Functiona...
 
TMPA-2017: A Survey of High-Performance Computing for Software Verification
TMPA-2017: A Survey of High-Performance Computing for Software VerificationTMPA-2017: A Survey of High-Performance Computing for Software Verification
TMPA-2017: A Survey of High-Performance Computing for Software Verification
 

Similar to Augmenting Field Data for Testing Systems Subject to Incremental Requirements Changes

Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisGenerating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisLionel Briand
 
Search-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing SystemsSearch-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing SystemsLionel Briand
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh Kushwah
 
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...knowdiff
 
Declarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsDeclarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsMonal Daxini
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
 
QA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wantedQA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wantedQAFest
 
The Pill for Your Migration Hell
The Pill for Your Migration HellThe Pill for Your Migration Hell
The Pill for Your Migration HellDatabricks
 
HPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural NetworksHPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural Networksinside-BigData.com
 
Optimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource ConfigurationOptimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource ConfigurationRECAP Project
 
Windows Remote Management - EN
Windows Remote Management - ENWindows Remote Management - EN
Windows Remote Management - ENKirill Nikolaev
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features WSO2
 
MongoDB and the Internet of Things
MongoDB and the Internet of ThingsMongoDB and the Internet of Things
MongoDB and the Internet of ThingsMongoDB
 
Scalding big ADta
Scalding big ADtaScalding big ADta
Scalding big ADtab0ris_1
 
Fabric - Realtime stream processing framework
Fabric - Realtime stream processing frameworkFabric - Realtime stream processing framework
Fabric - Realtime stream processing frameworkShashank Gautam
 
The Ring programming language version 1.9 book - Part 9 of 210
The Ring programming language version 1.9 book - Part 9 of 210The Ring programming language version 1.9 book - Part 9 of 210
The Ring programming language version 1.9 book - Part 9 of 210Mahmoud Samir Fayed
 

Similar to Augmenting Field Data for Testing Systems Subject to Incremental Requirements Changes (20)

Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisGenerating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
 
Search-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing SystemsSearch-Based Robustness Testing of Data Processing Systems
Search-Based Robustness Testing of Data Processing Systems
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’s
 
ADCSS 2022
ADCSS 2022ADCSS 2022
ADCSS 2022
 
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...
Amin Milani Fard: Directed Model Inference for Testing and Analysis of Web Ap...
 
Declarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsDeclarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data models
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
 
QA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wantedQA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wanted
 
The Pill for Your Migration Hell
The Pill for Your Migration HellThe Pill for Your Migration Hell
The Pill for Your Migration Hell
 
HPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural NetworksHPC Impact: EDA Telemetry Neural Networks
HPC Impact: EDA Telemetry Neural Networks
 
Siddhi - cloud-native stream processor
Siddhi - cloud-native stream processorSiddhi - cloud-native stream processor
Siddhi - cloud-native stream processor
 
Optimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource ConfigurationOptimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource Configuration
 
Windows Remote Management - EN
Windows Remote Management - ENWindows Remote Management - EN
Windows Remote Management - EN
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features
 
Weld Strata talk
Weld Strata talkWeld Strata talk
Weld Strata talk
 
MongoDB and the Internet of Things
MongoDB and the Internet of ThingsMongoDB and the Internet of Things
MongoDB and the Internet of Things
 
Scalding big ADta
Scalding big ADtaScalding big ADta
Scalding big ADta
 
Fabric - Realtime stream processing framework
Fabric - Realtime stream processing frameworkFabric - Realtime stream processing framework
Fabric - Realtime stream processing framework
 
The Ring programming language version 1.9 book - Part 9 of 210
The Ring programming language version 1.9 book - Part 9 of 210The Ring programming language version 1.9 book - Part 9 of 210
The Ring programming language version 1.9 book - Part 9 of 210
 

More from Lionel Briand

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Metamorphic Testing for Web System Security
Metamorphic Testing for Web System SecurityMetamorphic Testing for Web System Security
Metamorphic Testing for Web System SecurityLionel Briand
 
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...Lionel Briand
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingLionel Briand
 
Data-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical SystemsData-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical SystemsLionel Briand
 
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled SystemsMany-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled SystemsLionel Briand
 
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...Lionel Briand
 
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...Lionel Briand
 
PRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System LogsPRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System LogsLionel Briand
 
Revisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software TestingRevisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software TestingLionel Briand
 
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...Lionel Briand
 
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and SafetyAutonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and SafetyLionel Briand
 
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...Lionel Briand
 
Reinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case PrioritizationReinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case PrioritizationLionel Briand
 
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...Lionel Briand
 
On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...Lionel Briand
 
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...Lionel Briand
 
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...Lionel Briand
 
A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...Lionel Briand
 

More from Lionel Briand (20)

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Metamorphic Testing for Web System Security
Metamorphic Testing for Web System SecurityMetamorphic Testing for Web System Security
Metamorphic Testing for Web System Security
 
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
Simulator-based Explanation and Debugging of Hazard-triggering Events in DNN-...
 
Fuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation TestingFuzzing for CPS Mutation Testing
Fuzzing for CPS Mutation Testing
 
Data-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical SystemsData-driven Mutation Analysis for Cyber-Physical Systems
Data-driven Mutation Analysis for Cyber-Physical Systems
 
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled SystemsMany-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
Many-Objective Reinforcement Learning for Online Testing of DNN-Enabled Systems
 
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
ATM: Black-box Test Case Minimization based on Test Code Similarity and Evolu...
 
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
Black-box Safety Analysis and Retraining of DNNs based on Feature Extraction ...
 
PRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System LogsPRINS: Scalable Model Inference for Component-based System Logs
PRINS: Scalable Model Inference for Component-based System Logs
 
Revisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software TestingRevisiting the Notion of Diversity in Software Testing
Revisiting the Notion of Diversity in Software Testing
 
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...Applications of Search-based Software Testing to Trustworthy Artificial Intel...
Applications of Search-based Software Testing to Trustworthy Artificial Intel...
 
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and SafetyAutonomous Systems: How to Address the Dilemma between Autonomy and Safety
Autonomous Systems: How to Address the Dilemma between Autonomy and Safety
 
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
Mathematicians, Social Scientists, or Engineers? The Split Minds of Software ...
 
Reinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case PrioritizationReinforcement Learning for Test Case Prioritization
Reinforcement Learning for Test Case Prioritization
 
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
Mutation Analysis for Cyber-Physical Systems: Scalable Solutions and Results ...
 
On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...On Systematically Building a Controlled Natural Language for Functional Requi...
On Systematically Building a Controlled Natural Language for Functional Requi...
 
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
Efficient Online Testing for DNN-Enabled Systems using Surrogate-Assisted and...
 
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...Guidelines for Assessing the Accuracy of Log Message Template Identification ...
Guidelines for Assessing the Accuracy of Log Message Template Identification ...
 
A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...A Theoretical Framework for Understanding the Relationship between Log Parsin...
A Theoretical Framework for Understanding the Relationship between Log Parsin...
 

Recently uploaded

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Recently uploaded (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

Augmenting Field Data for Testing Systems Subject to Incremental Requirements Changes

  • 1. .lusoftware verification & validation VVS Augmenting Field Data for Testing Systems Subject to Incremental Requirements Changes Daniel Di Nardo, Fabrizio Pastore, Lionel Briand SnT Centre, University of Luxembourg Journal First - ACM Transactions on Software Engineering and Methodology Volume 26 Issue 1, July 2017
  • 2. Data Processing Systems • Aa • aa Data Processing Systems
  • 5. Data Processing Systems Processing Workflows Web Crawlers Solution: Reuse Field Data[ICST’15]
  • 6. Data Requirements Change Changes affect Data Fields, Data Types, Constraints Old Test Cases Cannot be Reused Field Data is Not Available
  • 7. Test Input for Base Version Test Input for Updated Version Automatically Generate
  • 8. Original Model Instance Incomplete Updated Model Instance Data Loading Slice-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 9. Original Model Instance Incomplete Updated Model Instance Data Loading Slice-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 10. 1 Transmission Vcdu VcduHeader Packet PacketZone ActiveZoneIdleZone 1 1 1..*1 1 versionNumber : Int spaceCraftId : Int virtualChanId : Int apidValue : Apid sequenceCount : Int dataLength : Int PacketHeader SarPacketHeader coarseTime : Int fineTime : Int GpsrPacketHeader coarseTime : Int fineTime : Int Configuration spaceCraftId : Int checkCrc : Bool idleVcid : Vcid idleApid : Apid VcduConfig vcid : Vcid minPacketSize : Int maxPacketSize : Int apids : Apid[] 1 1 1..* 1 prev 1..* 1 1 1 «DataType» Apid value : Int
  • 11. 1 Transmission Vcdu VcduHeader Packet PacketZone ActiveZoneIdleZone 1 1 1..*1 1 versionNumber : Int spaceCraftId : Int virtualChanId : Int apidValue : Apid sequenceCount : Int dataLength : Int PacketHeader SarPacketHeader coarseTime : Int fineTime : Int GpsrPacketHeader coarseTime : Int fineTime : Int Configuration spaceCraftId : Int checkCrc : Bool idleVcid : Vcid idleApid : Apid VcduConfig vcid : Vcid minPacketSize : Int maxPacketSize : Int apids : Apid[] 1 1 1..* 1 prev context VcduHeader inv: self.vcdu.trans.config.vcduConfigs.vcid →exists(x | x = self.virtualChanId) OCL constraints 1..* 1 1 1 «DataType» Apid value : Int
  • 12. 1 Transmission Vcdu VcduHeader Packet PacketZone ActiveZoneIdleZone 1 1 1..*1 1..* 1 versionNumber : Int spaceCraftId : Int virtualChanId : Int apidValue : Apid sequenceCount : Int dataLength : Int PacketHeader SarPacketHeader coarseTime : Int fineTime : Int GpsrPacketHeader coarseTime : Int fineTime : Int Configuration spaceCraftId : Int checkCrc : Bool idleVcid : Vcid idleApid : Apid VcduConfig vcid : Vcid minPacketSize : Int maxPacketSize : Int apids : Apid[] 1 1 1..* 1 prev context Packet inv: ( self.apidValue.value=1 and self.pHeader.oclIsTypeOf(SarPacketHeader) ) or … 1 1 1 context VcduHeader inv: self.vcdu.trans.config.vcduConfigs.vcid →exists(x | x = self.virtualChanId) OCL constraints «DataType» Apid value : Int
  • 14. 1 Transmission Vcdu VcduHeader Packet PacketZone ActiveZoneIdleZone 1 1 1..*1 1..* 1 versionNumber : Int spaceCraftId : Int virtualChanId : Int apidValue : Apid sequenceCount : Int dataLength : Int PacketHeader «Replacement» MsiPacketHeader coarseTime : Int fineTime : Int opMode : Int status : Int GpsrPacketHeader coarseTime : Int fineTime : Int prev context Packet inv: ( self.apidValue.value=1 and self.pHeader.oclIsTypeOf(SarPacketHeader) ) or … Configuration spaceCraftId : Int checkCrc : Bool idleVcid : Vcid idleApid : Apid VcduConfig vcid : Vcid minPacketSize : Int maxPacketSize : Int apids : Apid[] 1 1 1..* 1 SarPacketHeader coarseTime : Int fineTime : Int context VcduHeader inv: self.vcdu.trans.config.vcduConfigs.vcid →exists(x | x = self.virtualChanId) OCL constraints «DataType» Apid value : Int
  • 15. 1 Transmission Vcdu VcduHeader Packet PacketZone ActiveZoneIdleZone 1 1 1..*1 1..* 1 versionNumber : Int spaceCraftId : Int virtualChanId : Int apidValue : Apid sequenceCount : Int dataLength : Int PacketHeader prev context Packet inv: ( self.apidValue.value=3 or self.apidValue.value=4 and self.pHeader.oclIsTypeOf(MsiPacketHeader) ) or … Configuration spaceCraftId : Int checkCrc : Bool idleVcid : Vcid idleApid : Apid VcduConfig vcid : Vcid minPacketSize : Int maxPacketSize : Int apids : Apid[] 1 1 1..* 1 «Replacement» MsiPacketHeader coarseTime : Int fineTime : Int opMode : Int status : Int GpsrPacketHeader coarseTime : Int fineTime : Int context VcduHeader inv: self.vcdu.trans.config.vcduConfigs.vcid →exists(x | x = self.virtualChanId) OCL constraints «DataType» Apid value : Int
  • 16. Original Model Instance Incomplete Updated Model Instance Data Loading Slice-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 17. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: SarHeader coarseTime=10 fineTime=30 pd1: PacketData data=.. c1: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid1 minPacketSize=200 maxPacketSize=300 apids=<apid1,apid2> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 ph2: SarHeader coarseTime=10 fineTime=30 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph3: SarHeader coarseTime=10 fineTime=30 pd3: PacketData data=.. Original Model Instance
  • 18. Original Model Instance Incomplete Updated Model Instance Data Loading Slicing-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 19. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: SarHeader coarseTime=10 fineTime=30 pd1: PacketData data=.. c1: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid1 minPacketSize=200 maxPacketSize=300 apids=<apid1,apid2> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 ph2: SarHeader coarseTime=10 fineTime=30 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph3: SarHeader coarseTime=10 fineTime=30 pd3: PacketData data=.. Replace obsolete classes
  • 20. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c1: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid1 minPacketSize=200 maxPacketSize=300 apids=<apid1,apid2> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Replace obsolete classes
  • 21. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc2: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Load new configuration
  • 22. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc2: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= context VcduHeader inv: self.vcdu.trans.con g.vcduCon gs.vcid→exists(x | x = self.virtualChanId) Updated data may invalidate constraints
  • 23. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc2: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= context Packet inv: … ( (self.apidValue.value=3 or self.apidValue.value=4) and self.pHeader.oclIsTypeOf(MsiPacketHeader) ) or … Updated constraints may not hold
  • 24. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc2: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Incomplete Updated Model Instance
  • 25. Original Model Instance Incomplete Updated Model Instance Data Loading Slicing-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 26. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Identify all the root-to-leaf paths
  • 27. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Generate a slice for each
  • 28. a1:ActiveZonet1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Generate a slice for each All the instances “linked by an OCL” to an element of the path must belong to the slice context PacketZone inv: self.packets→forAll(x : Packet | self.vcdu.trans.config.vcduConfigs→select(y : VcduConfig | y.vcid = self.vcdu.vcduHeader.virtualChannelId).apids→exists(z : Apid | z = x.apidValue) …
  • 29. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= pd1: PacketData data=.. c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 pd2: PacketData data=.. p3: Packet apidValue=apid1 sequenceCount=1 dataLength=200 pd3: PacketData data=.. ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= Generate a slice for each Elements of collections are linked to the previous element only
  • 30. Constraint solving Slice with updated values Generate slices Incomplete Updated Model Instance
  • 31. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … “Solve” a slice //Declare classes abstract sig Vcdu { trans:one Transmission, packetZone:one PacketZone } .. //Declare class instances one sig vc2 extends VcduConfig{} .. //Facts for associations fact t1.config=c2 .. //Facts for config variables fact { vc2.apids = apid3+apid4.. //Facts for data variables fact { p1.apidValue = apid1 } fact { p1.sequenceCount = 1 } //Alloy predicate for OCLs pred PacketHeaderApid []{ all e: PacketHeader | … Alloy Model UMLtoAlloy OCL constraints…
  • 32. t1:Transmission p1: Packet apidValue=apid1 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode= status= c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … “Solve” a slice UMLtoAlloy OCL constraints… Alloy Analyzer No Solution Relax Model //Facts for data variables fact { p1.apidValue = apid1 } fact { p1.sequenceCount = 1 } //Alloy predicate for OCLs pred PacketHeaderApid []{ all e: PacketHeader | … Remove facts that prevent the generation of a solution Alloy Instance
  • 33. t1:Transmission p1: Packet apidValue=apid3 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode=1 status=1 c2: Configuration spaceCraftId=1 checkCrc=true idleVcid=vcid0 idleApid=apid0 vc1: VcduConfig vcid=vcid2 minPacketSize=200 maxPacketSize=300 apids=<apid3,apid4, apid5,apid6> v1:Vcdu a1:ActiveZone vh1: VcduHeader versionNumber=1 spaceCraftId=1 virtualChanId=vcid1 … “Solve” a slice UMLtoAlloy OCL constraints… Alloy Analyzer No Solution Relax Model //Facts for data variables fact { p1.apidValue = apid1 } fact { p1.sequenceCount = 1 } //Alloy predicate for OCLs pred PacketHeaderApid []{ all e: PacketHeader | … Remove facts that prevent the generation of a solution Alloy Instance
  • 34. Solve slice Slice with updated values Copy to Incomplete Model Instance Generate slices Incomplete Updated Model Instance
  • 35. p2: Packet apidValue=apid1 sequenceCount=2 dataLength=200 ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= t1:Transmission v1:Vcdu a1:ActiveZone vh1 c2: .. vc1 … p1: Packet apidValue=apid3 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode=1 status=1 “Solve” next slice
  • 36. p2: Packet apidValue=apid3 sequenceCount=2 dataLength=200 ph2: MsiHeader coarseTime=10 fineTime=30 opMode= status= t1:Transmission v1:Vcdu a1:ActiveZone vh1 c2: .. vc1 … p1: Packet apidValue=apid3 sequenceCount=1 dataLength=200 ph1: MsiHeader coarseTime=10 fineTime=30 opMode=1 status=1 “Solve” next slice Solving algorithm does not rewrite variables generated in previous steps
  • 37. Solve slice Slice with updated values Copy to Incomplete Model Instance Generate slices Incomplete Updated Model Instance If a value “used” in a previous slice has been modified, restart from first
  • 38. Solve slice Slice with updated values Copy to Incomplete Model Instance Generate slices Valid Updated Model Instance Incomplete Updated Model Instance
  • 39. Original Model Instance Incomplete Updated Model Instance Data Loading Slice-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model
  • 40. Empirical Evaluation • RQ1: How does the proposed approach compare to a non-slicing approach? • RQ2: Does the proposed approach scale to a practical extent? • RQ3: Does the proposed approach allow for the effective testing of new data requirements? • RQ4: Does the proposed approach allow for efficient and effective system testing compared to manual approach?
  • 41. Case Study • Data Processing System for Satellite Data developed by SES • Data Model • 82 classes, 322 attributes, 56 associations, 52 OCL constraints • Manual testing is expensive • 130 class instances, 261 attributes, 1152 constrained attribute values
  • 42. RQ1: How does the proposed approach compare to a non-slicing approach? • To be justified the proposed approach should provide an advantage over one that does not use slicing • Created a simplified technique that does not apply slicing • All attribute values are generated from scratch from a single execution of the Alloy Analyzer • Generated test inputs from 1 to 40 VCDUs • 10 inputs for each size
  • 43. Proposed approach (using slicing) vs a non-slicing approach Scales better than non-slicing approach
  • 44. RQ2: Does the proposed approach scale to a practical extent? • Generation of new data should be fast enough and scale effectively as file size increases • Generated test inputs from 50 to 500 VCDUs • 10 inputs for each size
  • 45. Execution time required to generate inputs vs number of VCDUs Non-trivial inputs generated in reasonable time
  • 46. RQ3: Does the proposed approach allow for the effective testing of new data requirements? • Automatically generate new data intended for use in robustness test cases • Integrate a mutation approach (ICST’15) to generate robustness test cases • Measure code coverage of the source code that implements the new data requirements • Compare with test cases written by engineers Field Data (Version 0) Updated Data (Version 1) Robustness Test Inputs (Version 1) Slicing Based Generation Mutation Based Generation
  • 47. RQ3: Does the proposed approach allow for the effective testing of new data requirements? Test suite S2 Instructions Covered S2 Branches Covered # of Tests Avg Min Max Avg Min Max Auto 74 (77.9%) 74 (77.9%) 74 (77.9%) 9 (81.8%) 9 (81.8%) 9 (81.8%) 103.1 Test suite S2 Instructions Covered S2 Branches Covered # of Tests Avg Min Max Avg Min Max Auto 74 (77.9%) 74 (77.9%) 74 (77.9%) 9 (81.8%) 9 (81.8%) 9 (81.8%) 103.1 Manual 68 (71.6%) - - 8 (72.7%) - - 32 More effective than manual testing
  • 48. RQ4: Does the proposed approach allow for effective system testing? • In the presence of a new software version engineers are interested in testing the whole system • Necessary to test unmodified functions when they process a new a data type (e.g. packet data extraction in the presence of a new packet type) • Same approach of RQ3: robustness testing • Measure code coverage of the whole system • Compare with 32 expensive manually crafted test inputs
  • 49. RQ4: Does the proposed approach allow for effective system testing? More effective than manual testing Test suite Instructions Covered Branches Covered # of Tests Avg Min Max Avg Min Max Auto 23,432.1 (72.2%) 23,273 (71.7%) 23,529 (72.5%) 978.7 (51.3%) 957 (50.2%) 987 (51.8%) 103.1 Manual 23,046 (71.0%) - - 950 (49.8%) - - 32
  • 50. RQ4: Does the proposed approach allow for efficient and effective system testing? • Both data modelling and manual testing are expensive • Data Model: 82 classes, 322 attributes, 56 associations, 52 OCL constraints • Manual test: 130 class instances, 261 attributes, 1152 constrained attribute values • Data model useful for other purposes (e.g., discuss with system engineers) • Manual and automatically generate tests have negligible execution time: • Manual, 10 mins – Automatically generated, 30 mins • Automatically generated tests are more effective
  • 51. Original Model Instance Incomplete Updated Model Instance Data Loading Slice-based Constraint Solving Automatic Model Transformation Data Writing Valid Updated Model Instance Updated DataField Data Data Model