SlideShare a Scribd company logo
Model-based Testing using Microsoft’s
Spec Explorer Tool: A Case Study

Dharmalingam Ganesan

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

1
Spec Explorer - Background
Tester develops a model (a.k.a. model program)
Model program is a simplified version of the SUT
Spec Explorer generates state machines from models
Test cases are automatically derived from state machines
SUT’s behavior is automatically compared with model
Tests failure: Deviation between model and SUT
Tests success: model and SUT are consistent

Supports offline and on-the-fly testing
Offline: Tests are generated and executed against the SUT
On-the-fly: Test generation and execution are interleaved
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

2
Why we used Spec Explorer?
Testing of asynchronous systems (e.g. software bus)
Components communicate indirectly using the pub-sub style

Non-deterministic behaviors
E.g.: Messages received in different orders than published

Support for parameterization
Instantiating the model for multiple connections to the bus
Automatic generation of parameter values and combinations

Support for configurability
Ability to slice models into smaller models using operators
Test cases can be short tests or long tests

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

3
SUT: NASA’s GMSEC API
Message bus for component communication
Standardized API based on the pub-sub style

Supports middleware technologies
Users can configure the middleware of interests
API users are agnostic to middleware vendors’ APIs

Supports multiple programming languages
For example: C, C++, Java, .NET, and Perl
Same concept but different syntax at the API level

Testing question: Can we generate test cases using one
model to test all languages and middleware?
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

4
Developing the model programs
Spec Explorer runs as a plug-in to MS Visual Studio
Model programs are written in C# like syntax
Models are based on the API documentation of GMSEC
Sometimes existing test cases were referred
Developers opinion were taken into consideration

Spec Explorer analyses our models
Generates state machines
Checks whether model satisfies invariants

A selected subset of features were modeled incrementally
Test cases were generated and executed in each increment
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

5
SUT Adapter
Adapter wraps the SUT
Converts data/commands from the model into SUT’s
syntax
Adapter simplifies modeling complexity
Methods of the model should map to the adapter
Our adapter is in C#
We also “print” test code from our adapter for different
languages such C, C++, and Java

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

6
Fragments of model programs
[Rule]
public static void Create([Domain("ConnIdDomain")] int connId)
{
Condition.IsTrue(CanCreate(connId));
Guards enable the rules if
InitConn(connId);
the condition is satisfied.
}
[Rule]
public static void Connect([Domain("ConnIdDomain")]int connId)
{
Condition.IsTrue(CanConnect(connId));
ConnectionData connData = connections[connId];
connData.connected = true;
SetConnState(connId, connData);
}
[Rule]
public static void Disconnect([Domain("ConnIdDomain")]int connId)
{
Condition.IsTrue(CanDisconnect(connId)); CleanupDisconn(connId);
}
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

7
[Rule] methods – Key ideas
Rule methods usually update one or more state variables
State variables are members of our model classes
Rule methods do not call one another
Rule methods get called automatically based on guards
Parameters are configurable
Parameters can be generated using domain generators

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

8
Invariants for Model V&V- Samples
// if a connection is created it can always be destroyed
[StateInvariant]
public static bool CreateDestroy()
{
bool property = !connections.Exists(c => !IsWaitingMode() &&
!CanDestroy(c.Key));
return property;
}
// if a connection is connected it cannot connect again
[StateInvariant]
public static bool ConnNoDuplicate()
{
bool property = !connections.Exists(c => c.Value.connected &&
CanConnect(c.Key));
return property;
}
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

9
Slicing the model - sample
// Create and Destroy connections
machine CreateDestroyScenario() : Main
{
Create* ||| Destroy*
}
machine CreateDestroyProgram() : Main
{
CreateDestroyScenario || DefaultModelProgram
}
machine CreateDestroyTestSuite() : Main where TestEnabled = true
{
construct test cases where strategy = "shorttests" for
CreateDestroyProgram()
}
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

10
Composition of slices - sample
// Connect and Disconnect scenario
machine ConnectDisconnectScenario() : Main where forExploration = false
{
CreateDestroyScenario ||| (Connect* ||| Disconnect*)
}
machine ConnMgmtProgram() : Main where Group = "Connect, Disconnect"
{
(ConnectDisconnectScenario || DefaultModelProgram)
}
machine ConnMgmtTestSuite() : Main where TestEnabled = true, Group = "Test"
{
construct test cases where strategy = "shorttests" for ConnMgmtProgram()
}

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

11
Generated state machine - sample

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

12
Generated test sequences - sample

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

13
Advantages of using Spec Explorer
Generated tests are pretty readable
This is due to the ability to slice models into smaller models

Data parameters are well handled
E.g., Model can be configured to test multiple connections

Non-determinism is not a problem
Tests do not fail because messages arrived in different orders

Models are programs
Ideal for programmers (who prefer coding than drawing)
But we can visualize the generated (small) state machines

Models can be formally verified
Invariants encoded in the model help to validate the model
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

14
Challenges with Spec Explorer
Modeling errors can lead to infinite state machine
Need to be careful with unbounded types (e.g., int parameters)

Syntax for slicing the model is powerful but not that easy
Easy to misuse some of (algebraic) operators for slicing

Completeness of our slices
Did we miss any combination of behaviors during slicing?

Model debugging. For example:
Why a new state was generated?
Where/Why the invariants are violated?

Managing the model’s abstraction level
Which aspects of the SUT can be moved to the adapter
Which aspects of the SUT can be left out in the testing, etc.
© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

15
Benefits to SUT
Numerous specification issues during modeling time
Models and generated state machines can be used a spec.

New test failures on a tested system
Often issues with the SUT
In some cases, issues with the model program and/or adapters
Most issues were corner-cases

Innumerable number of test cases from the model
Test cases are agnostic to a particular programming language
Same tests for all supported languages and middleware

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

16
Questions
Dharma Ganesan (dganesan@fc-md.umd.edu)

© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering

17

More Related Content

PDF
SRE for Everyone: Making Tomorrow Better Than Today
PPTX
MobileIron Presentation
PPTX
Lancement de la toute première Tribe du programme Next Gen IS/IT chez Thales
PDF
Systems Analysis and Design 9th Edition Kendall Solutions Manual
PPT
Database security
 
DOCX
Cloud computing notes unit I as per RGPV syllabus
PDF
MuleSoft Madrid Meetup #5 slides 21st January 2021
PDF
Plan stratégique des systèmes d’information de l’État de Genève 2009-2013
SRE for Everyone: Making Tomorrow Better Than Today
MobileIron Presentation
Lancement de la toute première Tribe du programme Next Gen IS/IT chez Thales
Systems Analysis and Design 9th Edition Kendall Solutions Manual
Database security
 
Cloud computing notes unit I as per RGPV syllabus
MuleSoft Madrid Meetup #5 slides 21st January 2021
Plan stratégique des systèmes d’information de l’État de Genève 2009-2013

What's hot (17)

PPTX
Simulasi digital season 5
PDF
【IVS CTO Night & Day】AWS Media Services
PPTX
L’Agile au sein d’un groupe bancaire : mythe ou réalité ?
PDF
A comprehensive guide to mule soft mule 4
PDF
Forum2021_AC13 Crise cyber
PPTX
DC UNIT 1 cs 3551 DISTRIBUTED COMPUTING.pptx
PDF
Software requirements engineering problems and challenges erp implementation ...
PDF
Optimizations in Spark; RDD, DataFrame
PDF
Architecture Challenges In Cloud Computing
PDF
Software Engineering Past Papers (Short Questions)
PPTX
Simulasi digital season 7 smt 2
PPTX
Importance of data model
PPTX
#MSDEVMTL Introduction à #SonarQube
PDF
Basics of DBMS - Traditional File System
PPTX
Performance testing - Accenture
PDF
Scaling real world applications using gevent
PDF
Ar si-c1-2
Simulasi digital season 5
【IVS CTO Night & Day】AWS Media Services
L’Agile au sein d’un groupe bancaire : mythe ou réalité ?
A comprehensive guide to mule soft mule 4
Forum2021_AC13 Crise cyber
DC UNIT 1 cs 3551 DISTRIBUTED COMPUTING.pptx
Software requirements engineering problems and challenges erp implementation ...
Optimizations in Spark; RDD, DataFrame
Architecture Challenges In Cloud Computing
Software Engineering Past Papers (Short Questions)
Simulasi digital season 7 smt 2
Importance of data model
#MSDEVMTL Introduction à #SonarQube
Basics of DBMS - Traditional File System
Performance testing - Accenture
Scaling real world applications using gevent
Ar si-c1-2
Ad

Viewers also liked (20)

PPTX
Model-based Testing of a Software Bus - Applied on Core Flight Executive
PPTX
Load-time Hacking using LD_PRELOAD
PPTX
Linux binary analysis and exploitation
PDF
Automated Test Case Generation and Execution from Models
PPTX
Verifying Architectural Design Rules of a Flight Software Product Line
PDF
Interface-Implementation Contract Checking
PDF
Testing of C software components using Models
PDF
Exploiting Cryptographic Misuse - An Example
PDF
Reverse Engineering of Software Architecture
PPTX
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
PDF
Test automation is dead CoDe Copenhagen 2016
PPTX
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
PPTX
Reverse Architecting of a Medical Device Software
PDF
Ivv workshop model-based-testing-of-nasa-systems
PPTX
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
PPTX
Secure application programming in the presence of side channel attacks
PPTX
Automated testing of NASA Software - part 2
PPTX
Explaining my Phd Thesis to layman
PPTX
Architecture Analysis of Systems based on Publish-Subscribe Systems
PPTX
Automated Testing of NASA Software
Model-based Testing of a Software Bus - Applied on Core Flight Executive
Load-time Hacking using LD_PRELOAD
Linux binary analysis and exploitation
Automated Test Case Generation and Execution from Models
Verifying Architectural Design Rules of a Flight Software Product Line
Interface-Implementation Contract Checking
Testing of C software components using Models
Exploiting Cryptographic Misuse - An Example
Reverse Engineering of Software Architecture
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
Test automation is dead CoDe Copenhagen 2016
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
Reverse Architecting of a Medical Device Software
Ivv workshop model-based-testing-of-nasa-systems
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Secure application programming in the presence of side channel attacks
Automated testing of NASA Software - part 2
Explaining my Phd Thesis to layman
Architecture Analysis of Systems based on Publish-Subscribe Systems
Automated Testing of NASA Software
Ad

Similar to Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study (20)

PDF
Requirements driven Model-based Testing
PDF
Model based software testing
PPT
12 Rational Solo Pruebas 2009
PPT
Presentation Of Mbt Tools
PDF
MBT_Installers_Dev_Env
PDF
Hands-on Experience Model based testing with spec explorer
PPTX
Techorama 2017 - Testing the unit, and beyond.
PPTX
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
PDF
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
PDF
AI in SE: A 25-year Journey
PDF
Model Driven Developing & Model Based Checking: Applying Together
PPT
PDF
Software Engineering Research: Leading a Double-Agent Life.
PDF
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
PDF
Se research update
PPTX
RIA 06 & 07 - Unit Testing in Detail
PDF
Embedded world 2017
PPTX
Incremental Model Queries for Model-Dirven Software Engineering
PPTX
Slicing Models of Real-time Embedded Systems (MDOELS2018)
PDF
Targeting Property-Based Testing inside out
Requirements driven Model-based Testing
Model based software testing
12 Rational Solo Pruebas 2009
Presentation Of Mbt Tools
MBT_Installers_Dev_Env
Hands-on Experience Model based testing with spec explorer
Techorama 2017 - Testing the unit, and beyond.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
AI in SE: A 25-year Journey
Model Driven Developing & Model Based Checking: Applying Together
Software Engineering Research: Leading a Double-Agent Life.
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
Se research update
RIA 06 & 07 - Unit Testing in Detail
Embedded world 2017
Incremental Model Queries for Model-Dirven Software Engineering
Slicing Models of Real-time Embedded Systems (MDOELS2018)
Targeting Property-Based Testing inside out

More from Dharmalingam Ganesan (20)

PDF
.NET Deserialization Attacks
PDF
Reverse Architecting using Relation Algebra.pdf
PDF
How to exploit rand()?
PDF
Cyclic Attacks on the RSA Trapdoor Function
PDF
An Analysis of RSA Public Exponent e
PDF
An Analysis of Secure Remote Password (SRP)
PDF
Thank-a-Gram
PDF
Active Attacks on DH Key Exchange
PDF
Can I write to a read only file ?
PPTX
How do computers exchange secrets using Math?
PDF
On the Secrecy of RSA Private Keys
PDF
Computing the Square Roots of Unity to break RSA using Quantum Algorithms
PDF
Analysis of Short RSA Secret Exponent d
PDF
Dependency Analysis of RSA Private Variables
PDF
Analysis of Shared RSA Modulus
PDF
RSA Game using an Oracle
PDF
RSA Two Person Game
PDF
RSA without Integrity Checks
PPTX
RSA without Padding
PDF
Solutions to online rsa factoring challenges
.NET Deserialization Attacks
Reverse Architecting using Relation Algebra.pdf
How to exploit rand()?
Cyclic Attacks on the RSA Trapdoor Function
An Analysis of RSA Public Exponent e
An Analysis of Secure Remote Password (SRP)
Thank-a-Gram
Active Attacks on DH Key Exchange
Can I write to a read only file ?
How do computers exchange secrets using Math?
On the Secrecy of RSA Private Keys
Computing the Square Roots of Unity to break RSA using Quantum Algorithms
Analysis of Short RSA Secret Exponent d
Dependency Analysis of RSA Private Variables
Analysis of Shared RSA Modulus
RSA Game using an Oracle
RSA Two Person Game
RSA without Integrity Checks
RSA without Padding
Solutions to online rsa factoring challenges

Recently uploaded (20)

PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Tartificialntelligence_presentation.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Machine Learning_overview_presentation.pptx
PPTX
1. Introduction to Computer Programming.pptx
OMC Textile Division Presentation 2021.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Programs and apps: productivity, graphics, security and other tools
Univ-Connecticut-ChatGPT-Presentaion.pdf
TLE Review Electricity (Electricity).pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Heart disease approach using modified random forest and particle swarm optimi...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation_ Review paper, used for researhc scholars
Tartificialntelligence_presentation.pptx
Assigned Numbers - 2025 - Bluetooth® Document
SOPHOS-XG Firewall Administrator PPT.pptx
Getting Started with Data Integration: FME Form 101
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cloud_computing_Infrastucture_as_cloud_p
Machine Learning_overview_presentation.pptx
1. Introduction to Computer Programming.pptx

Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study

  • 1. Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study Dharmalingam Ganesan © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 1
  • 2. Spec Explorer - Background Tester develops a model (a.k.a. model program) Model program is a simplified version of the SUT Spec Explorer generates state machines from models Test cases are automatically derived from state machines SUT’s behavior is automatically compared with model Tests failure: Deviation between model and SUT Tests success: model and SUT are consistent Supports offline and on-the-fly testing Offline: Tests are generated and executed against the SUT On-the-fly: Test generation and execution are interleaved © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 2
  • 3. Why we used Spec Explorer? Testing of asynchronous systems (e.g. software bus) Components communicate indirectly using the pub-sub style Non-deterministic behaviors E.g.: Messages received in different orders than published Support for parameterization Instantiating the model for multiple connections to the bus Automatic generation of parameter values and combinations Support for configurability Ability to slice models into smaller models using operators Test cases can be short tests or long tests © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 3
  • 4. SUT: NASA’s GMSEC API Message bus for component communication Standardized API based on the pub-sub style Supports middleware technologies Users can configure the middleware of interests API users are agnostic to middleware vendors’ APIs Supports multiple programming languages For example: C, C++, Java, .NET, and Perl Same concept but different syntax at the API level Testing question: Can we generate test cases using one model to test all languages and middleware? © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 4
  • 5. Developing the model programs Spec Explorer runs as a plug-in to MS Visual Studio Model programs are written in C# like syntax Models are based on the API documentation of GMSEC Sometimes existing test cases were referred Developers opinion were taken into consideration Spec Explorer analyses our models Generates state machines Checks whether model satisfies invariants A selected subset of features were modeled incrementally Test cases were generated and executed in each increment © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 5
  • 6. SUT Adapter Adapter wraps the SUT Converts data/commands from the model into SUT’s syntax Adapter simplifies modeling complexity Methods of the model should map to the adapter Our adapter is in C# We also “print” test code from our adapter for different languages such C, C++, and Java © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 6
  • 7. Fragments of model programs [Rule] public static void Create([Domain("ConnIdDomain")] int connId) { Condition.IsTrue(CanCreate(connId)); Guards enable the rules if InitConn(connId); the condition is satisfied. } [Rule] public static void Connect([Domain("ConnIdDomain")]int connId) { Condition.IsTrue(CanConnect(connId)); ConnectionData connData = connections[connId]; connData.connected = true; SetConnState(connId, connData); } [Rule] public static void Disconnect([Domain("ConnIdDomain")]int connId) { Condition.IsTrue(CanDisconnect(connId)); CleanupDisconn(connId); } © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 7
  • 8. [Rule] methods – Key ideas Rule methods usually update one or more state variables State variables are members of our model classes Rule methods do not call one another Rule methods get called automatically based on guards Parameters are configurable Parameters can be generated using domain generators © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 8
  • 9. Invariants for Model V&V- Samples // if a connection is created it can always be destroyed [StateInvariant] public static bool CreateDestroy() { bool property = !connections.Exists(c => !IsWaitingMode() && !CanDestroy(c.Key)); return property; } // if a connection is connected it cannot connect again [StateInvariant] public static bool ConnNoDuplicate() { bool property = !connections.Exists(c => c.Value.connected && CanConnect(c.Key)); return property; } © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 9
  • 10. Slicing the model - sample // Create and Destroy connections machine CreateDestroyScenario() : Main { Create* ||| Destroy* } machine CreateDestroyProgram() : Main { CreateDestroyScenario || DefaultModelProgram } machine CreateDestroyTestSuite() : Main where TestEnabled = true { construct test cases where strategy = "shorttests" for CreateDestroyProgram() } © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 10
  • 11. Composition of slices - sample // Connect and Disconnect scenario machine ConnectDisconnectScenario() : Main where forExploration = false { CreateDestroyScenario ||| (Connect* ||| Disconnect*) } machine ConnMgmtProgram() : Main where Group = "Connect, Disconnect" { (ConnectDisconnectScenario || DefaultModelProgram) } machine ConnMgmtTestSuite() : Main where TestEnabled = true, Group = "Test" { construct test cases where strategy = "shorttests" for ConnMgmtProgram() } © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 11
  • 12. Generated state machine - sample © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 12
  • 13. Generated test sequences - sample © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 13
  • 14. Advantages of using Spec Explorer Generated tests are pretty readable This is due to the ability to slice models into smaller models Data parameters are well handled E.g., Model can be configured to test multiple connections Non-determinism is not a problem Tests do not fail because messages arrived in different orders Models are programs Ideal for programmers (who prefer coding than drawing) But we can visualize the generated (small) state machines Models can be formally verified Invariants encoded in the model help to validate the model © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 14
  • 15. Challenges with Spec Explorer Modeling errors can lead to infinite state machine Need to be careful with unbounded types (e.g., int parameters) Syntax for slicing the model is powerful but not that easy Easy to misuse some of (algebraic) operators for slicing Completeness of our slices Did we miss any combination of behaviors during slicing? Model debugging. For example: Why a new state was generated? Where/Why the invariants are violated? Managing the model’s abstraction level Which aspects of the SUT can be moved to the adapter Which aspects of the SUT can be left out in the testing, etc. © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 15
  • 16. Benefits to SUT Numerous specification issues during modeling time Models and generated state machines can be used a spec. New test failures on a tested system Often issues with the SUT In some cases, issues with the model program and/or adapters Most issues were corner-cases Innumerable number of test cases from the model Test cases are agnostic to a particular programming language Same tests for all supported languages and middleware © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 16
  • 17. Questions Dharma Ganesan ([email protected]) © 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 17