SlideShare a Scribd company logo
1© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Model-based Testing of a Software Bus
applied on Core Flight Executive
Dharmalingam Ganesan, Mikael Lindvall
Dave McComas (NASA GSFC)
Presented at Flight Software Workshop, Pasadena, CA, 2014
2© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Traditional Test Automation
 Only test execution is automated
 E.g. Junit, CuTest, etc.
 Test cases are manually constructed
 Effort intensive
 Some issues with traditional testing:
 Insufficient coverage of off-nominal behaviors
 Tests are too-detailed with low-level details
 Not easy to test multi-tasking architecture
 More on this later.
3© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Model-based Testing (MBT)
 The tester develops a model (a.k.a. testing models)
 instead of writing suite of test cases
 The model becomes the test oracle
 Test cases are auto-generated from the model
 based on requirements, API documentations
 Key benefits:
 Tester works at a high-level of abstraction
 Innumerable number of test cases derived from the model
 Triggers many, if not all, off-nominal behaviors
 Precise specification
4© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
System under test (SUT)
• The Core Flight Software System (CFS)
• a mission-independent, platform-independent, Flight
Software (FSW) environment integrating a reusable core
flight executive (cFE)
• The CFS is a product-line developed by the NASA
Goddard Space Flight Center (GSFC)
• CFS is implemented in C
• cFE layer of the CFS is open source
5© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
cFE/CFS Context Diagram
Inter-task Message Router (SW Bus)
Transponders
Commands
Real-time Telemetry (UDP)
Comm Cards
File downlink
(CFDP)
Summit Chip
Mass
Storage
System
CFDP File
Transfer
File
Manager
Local
Storage
Data
Storage
Event
Services
Executive
Services
Time
Services
1553 Bus
Support
Software
Bus
Command
Ingest
Telemetry
Output
Table
Services
EDAC
Memory
Scrubber
Self
Test
Memory
Dwell
Instrument
Manager
Checksum
Memory
Manager
GN&C
Applications
(4)
Mission Apps
cFE core App
CFS Applications
Stored
Commanding
Software
Scheduler
Health &
Safety
Manager
House-
keeping
Limit
Checker
6© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
MBT of Software Bus
 cFE has a software bus (SB)
 Apps communicate indirectly using the SB
 Publish-Subscribe architectural style
 SB has unit-tests (developed by NASA GSFC)
 Good coverage but
 not taking multi-tasking into consideration
 Goals: find defects related to multi-tasking (difficult!)
 Generate test cases for SB
 Generate the “bubbles” (the apps on previous slide)
 Demonstrate the applicability of MBT
 Developed an approach of testing SB
 Allows testing of multi-tasking architectures
7© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Scope of the current model
 Modeled the following behaviors
 Create Pipes (to hold messages)
 Delete Pipes
 Subscribe to Messages
 Send Messages
 Receive Messages
 Multiple Apps (dynamically instantiated)
 Innumerable test cases (in C) auto-generated
 Model based on Microsoft’s Spec Explorer Tool
 Will get back to this
8© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Challenges of testing a SB
 To test a SB we need apps that publish-subscribe
 Apps are runtime tasks that communicate using the
SB
 Apps publish/subscribe to messages
 Each app cannot decide on its own the correctness
 Correctness depends on the global state of the system
 E.g: subscribe(msg), RecvMsg() may not work if no other
task is publishing any message
 The order of execution of tasks also matters
 Need a test architecture!
9© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Test Architecture – Key Ideas
 Parent/Child architecture for testing
 Each test case is a parent
 Each test case runs as an app
 At run-time, one or more child tasks are spanned by
the parent
 Model controls the behavior of the parent
 All test assertions are decided by the parent
 All child tasks share the codebase
 How the parent and children communicate?
 Why not just use the software bus itself?
10© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Test Architecture
CFE
Paren
t
Child
1
Child
2
Child
n
Command Pipe
All child tasks share the codebase
11© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Test Architecture – Key Ideas
 Each child task subscribes to all commands, such as
Create Pipe, Delete Pipe, Subscribe, etc.
 Parent broadcast commands to all child tasks
 Communication uses CFE infrastructure
 Task id of the child is also part of the message struct
 Only the target child can perform a certain command
 Child tasks perform the command and send the
return code back to the parent
 Child tasks send out a result msg
 Parent task subscribes to the result msg
 The parent verifies test assertion
 Asserts are generated from the model
12© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Spec Explorer – Brief Background
 Tester develops a model (a.k.a. model program)
 Spec Explorer runs as a plug-in to MS Visual Studio
 Model programs are written in C# like syntax
 The model program is a simplified version of the
SUT
 Spec Explorer generates state machines from
models
 Also checks whether model satisfies invariants
 Helps in validating the model
 Test cases are automatically derived from state
machines
 SUT’s behavior is automatically compared with
model
13© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Abstractions for the model program
 Model program is another implementation of the
SUT
 But we do not want to create two implementations
 No one wants to maintain two implementations
 No one wants to develop a system two times
 How did we create a simplified version of the SUT?
 Key idea: Apply abstractions
Model of GPM, which uses CFE
14© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Sample abstractions for a model
 Model is agnostic to multi-tasking complexity of the
SB
 Model has a very simple message structure
 Message is modeled as an int (not C structures)
 Message queues/pipes are also abstracted
 Finite depth
 Message queues are modeled as simple sequences
 instead of using shared memory
 No pointers, threads, semaphores at the model level
 Very simple data structure using very basic data types
 int, boolean, maps
15© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Structure of the model program
E.g.: Number of apps, pipes
Represent the state of the bus
Used for excluding the uninteresting states
Which states are good for terminating tests
Models the actual logic of the software bus
Preconditions for enabling the rule methods to fire
Generates values for rule method
Utilties for rule methods and guards
16© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
State Data
17© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Fragments of the model program
Rules are enabled only if Condition.IsTrue returns true
18© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Fragments of the guards
19© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Slicing the model for specific tests
20© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Generated from the model program
We generate
the model!
In “regular”
MBT you have
to manually
create the
model.
21© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Generated test sequences - sample
Each chain is a test case
22© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
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 “print” test code from our adapter in C
 Converts C# tests into C tests
 Recall that CFE’s SB interface is in C
23© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Our abstracted interface for Testing
int32 InitApp_w(int32 appName);
int32 CreatePipe_w(int32 appName, int32 pipeName, int32
pipeDepth);
int32 DeletePipe_w(int32 appName, int32 pipeName);
int32 Subscribe_w(int32 appName, int32 msgId, int32 pipeName);
int32 UnSubscribe_w(int32 appName, int32 msgId, int32
pipeName);
int32 RcvMsg_w(int32 appName, int32 pipeName, int32*
actualMsgId);
int32 SendMsg_w(int32 appName, int32 msgId);
24© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Sample generated test case
void Parent_TestAppMain( void ) {
int32 status;
uint32 RunStatus = CFE_ES_APP_RUN;
Parent_TestAppInit();
status = InitApp_w(APP_0);
assert(status == CFE_SUCCESS);
status = CreatePipe_w(APP_0, PIPE_0, 1);
assert(status == CFE_SUCCESS);
status = Subscribe_w(APP_0, MSG_0, PIPE_0);
assert(status == CFE_SUCCESS);
status = Subscribe_w(APP_0, MSG_1, PIPE_0);
assert(status == CFE_SUCCESS);
status = UnSubscribe_w(APP_0, MSG_1, PIPE_0);
assert(status == CFE_SUCCESS);
CFE_ES_ExitApp(RunStatus);
}
25© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Advantages of using Model-Based Testing
 The model focuses on the domain (easier to
understand)
 Instead of being source code oriented (harder to
understand)
 We automatically generate an endless number of
executable test cases (high coverage)
 Instead of manually writing individual test cases
 The information is in one place: in the model, easy to
maintain
 Instead of being spread out (hard to maintain)
 The test cases can easily be run over and over again
26© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
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 apps
 Models are programs
 Ideal for programmers (who prefer coding)
 Models can be formally verified
 Invariants encoded in the model help to validate the
model
27© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Challenges with Spec Explorer
 Modeling errors can lead to infinite state machine
 Need to be careful even for small models (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?
28© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Applicability to other flight software
 The same approach is applicable to other types of
sw
 Requirements are that
 The software has an interface (e.g. API, GUI)
 Through which commands (stimuli) can be sent
 Through which results (responses) can be received
 Need (some) specification
 Optional: Sample test cases, API usage examples
29© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Conclusion
 MBT works well for testing of multi-tasking
architecture
 In this case of a software bus
 Parent/Child test architecture facilitates testing
 Individual tasks cannot decide correctness of their own
 Parent coordinates with children and asserts correctness
 Models and generated state machines: a good spec!
 Innumerable number of test cases from the model
 Test cases are agnostic to cFE syntax but still executable
 Need to be careful in managing the model’s
complexity
 Abstraction is important
 Otherwise the model will be as complex as the system under
30© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Acknowledgement
 Jan-Philip Quirmbach (Fraunhofer Intern)
 cFE is open source – not an issue for foreign interns
 Alan Cudmore (NASA GSFC)
 OSMA SARP:
 Martha Wetherholt (NASA HQ)
 Ken Rehm (NASA IV&V)
 Ricky A. Forquer (NASA IV&V)
 This work was partly funded by SARP
31© 2014 Fraunhofer USA, Inc.
Center for Experimental Software Engineering
Questions
 Dharma Ganesan (dganesan@fc-md.umd.edu)
Ad

More Related Content

What's hot (20)

Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software Architecture
Dharmalingam Ganesan
 
Automatic Test Case Generation
Automatic Test Case GenerationAutomatic Test Case Generation
Automatic Test Case Generation
Adnan Causevic
 
Rv11
Rv11Rv11
Rv11
Wolfgang Grieskamp
 
Analysis of Testability of a Flight Software Product Line
Analysis of Testability of a Flight Software Product LineAnalysis of Testability of a Flight Software Product Line
Analysis of Testability of a Flight Software Product Line
Dharmalingam Ganesan
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Wolfgang Grieskamp
 
Automated Traceability for Software Engineering Tasks
Automated Traceability for Software Engineering TasksAutomated Traceability for Software Engineering Tasks
Automated Traceability for Software Engineering Tasks
Dharmalingam Ganesan
 
Software testing tools (free and open source)
Software testing tools (free and open source)Software testing tools (free and open source)
Software testing tools (free and open source)
Wael Mansour
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing Tools
Dr Ganesh Iyer
 
Hands-on Experience Model based testing with spec explorer
Hands-on Experience Model based testing with spec explorer Hands-on Experience Model based testing with spec explorer
Hands-on Experience Model based testing with spec explorer
Rachid Kherrazi
 
Verification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICsVerification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICs
Dr. Shivananda Koteshwar
 
Types of test tools
Types of test toolsTypes of test tools
Types of test tools
Vaibhav Dash
 
SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)
Amr E. Mohamed
 
The Impact of Test Ownership and Team Structure on the Reliability and Effect...
The Impact of Test Ownership and Team Structure on the Reliability and Effect...The Impact of Test Ownership and Team Structure on the Reliability and Effect...
The Impact of Test Ownership and Team Structure on the Reliability and Effect...
Kim Herzig
 
system verilog
system verilogsystem verilog
system verilog
Vinchipsytm Vlsitraining
 
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug PredictionIt's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
sjust
 
Issre2014 test defectprediction
Issre2014 test defectpredictionIssre2014 test defectprediction
Issre2014 test defectprediction
Kim Herzig
 
Testing Tool Evaluation Criteria
Testing Tool Evaluation CriteriaTesting Tool Evaluation Criteria
Testing Tool Evaluation Criteria
basma_iti_1984
 
Formal Verification
Formal VerificationFormal Verification
Formal Verification
Ilia Levin
 
Parasoft fda software compliance part2
Parasoft fda software compliance   part2Parasoft fda software compliance   part2
Parasoft fda software compliance part2
Engineering Software Lab
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
Sung Kim
 
Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software Architecture
Dharmalingam Ganesan
 
Automatic Test Case Generation
Automatic Test Case GenerationAutomatic Test Case Generation
Automatic Test Case Generation
Adnan Causevic
 
Analysis of Testability of a Flight Software Product Line
Analysis of Testability of a Flight Software Product LineAnalysis of Testability of a Flight Software Product Line
Analysis of Testability of a Flight Software Product Line
Dharmalingam Ganesan
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Wolfgang Grieskamp
 
Automated Traceability for Software Engineering Tasks
Automated Traceability for Software Engineering TasksAutomated Traceability for Software Engineering Tasks
Automated Traceability for Software Engineering Tasks
Dharmalingam Ganesan
 
Software testing tools (free and open source)
Software testing tools (free and open source)Software testing tools (free and open source)
Software testing tools (free and open source)
Wael Mansour
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing Tools
Dr Ganesh Iyer
 
Hands-on Experience Model based testing with spec explorer
Hands-on Experience Model based testing with spec explorer Hands-on Experience Model based testing with spec explorer
Hands-on Experience Model based testing with spec explorer
Rachid Kherrazi
 
Verification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICsVerification challenges and methodologies - SoC and ASICs
Verification challenges and methodologies - SoC and ASICs
Dr. Shivananda Koteshwar
 
Types of test tools
Types of test toolsTypes of test tools
Types of test tools
Vaibhav Dash
 
SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)
Amr E. Mohamed
 
The Impact of Test Ownership and Team Structure on the Reliability and Effect...
The Impact of Test Ownership and Team Structure on the Reliability and Effect...The Impact of Test Ownership and Team Structure on the Reliability and Effect...
The Impact of Test Ownership and Team Structure on the Reliability and Effect...
Kim Herzig
 
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug PredictionIt's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
It's Not a Bug, It's a Feature — How Misclassification Impacts Bug Prediction
sjust
 
Issre2014 test defectprediction
Issre2014 test defectpredictionIssre2014 test defectprediction
Issre2014 test defectprediction
Kim Herzig
 
Testing Tool Evaluation Criteria
Testing Tool Evaluation CriteriaTesting Tool Evaluation Criteria
Testing Tool Evaluation Criteria
basma_iti_1984
 
Formal Verification
Formal VerificationFormal Verification
Formal Verification
Ilia Levin
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
Sung Kim
 

Viewers also liked (13)

Linux binary analysis and exploitation
Linux binary analysis and exploitationLinux binary analysis and exploitation
Linux binary analysis and exploitation
Dharmalingam Ganesan
 
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOADLoad-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
Dharmalingam Ganesan
 
Exploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An ExampleExploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An Example
Dharmalingam Ganesan
 
Verifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product LineVerifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product Line
Dharmalingam Ganesan
 
Testing of C software components using Models
Testing of C software components using ModelsTesting of C software components using Models
Testing of C software components using Models
Dharmalingam Ganesan
 
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
Threat Modeling: Applied on a Publish-Subscribe Architectural StyleThreat Modeling: Applied on a Publish-Subscribe Architectural Style
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
Dharmalingam Ganesan
 
Reverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device SoftwareReverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device Software
Dharmalingam Ganesan
 
Explaining my Phd Thesis to layman
Explaining my Phd Thesis to laymanExplaining my Phd Thesis to layman
Explaining my Phd Thesis to layman
Dharmalingam Ganesan
 
Architecture Analysis of Systems based on Publish-Subscribe Systems
Architecture Analysis of Systems based on Publish-Subscribe SystemsArchitecture Analysis of Systems based on Publish-Subscribe Systems
Architecture Analysis of Systems based on Publish-Subscribe Systems
Dharmalingam Ganesan
 
Self-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriverSelf-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriver
seleniumconf
 
Carbon Finance
Carbon FinanceCarbon Finance
Carbon Finance
Ajay Dhamija
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
Bob Binder
 
Ethical hacking & Information Security
Ethical hacking & Information SecurityEthical hacking & Information Security
Ethical hacking & Information Security
Ajay Dhamija
 
Linux binary analysis and exploitation
Linux binary analysis and exploitationLinux binary analysis and exploitation
Linux binary analysis and exploitation
Dharmalingam Ganesan
 
Load-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOADLoad-time Hacking using LD_PRELOAD
Load-time Hacking using LD_PRELOAD
Dharmalingam Ganesan
 
Exploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An ExampleExploiting Cryptographic Misuse - An Example
Exploiting Cryptographic Misuse - An Example
Dharmalingam Ganesan
 
Verifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product LineVerifying Architectural Design Rules of a Flight Software Product Line
Verifying Architectural Design Rules of a Flight Software Product Line
Dharmalingam Ganesan
 
Testing of C software components using Models
Testing of C software components using ModelsTesting of C software components using Models
Testing of C software components using Models
Dharmalingam Ganesan
 
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
Threat Modeling: Applied on a Publish-Subscribe Architectural StyleThreat Modeling: Applied on a Publish-Subscribe Architectural Style
Threat Modeling: Applied on a Publish-Subscribe Architectural Style
Dharmalingam Ganesan
 
Reverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device SoftwareReverse Architecting of a Medical Device Software
Reverse Architecting of a Medical Device Software
Dharmalingam Ganesan
 
Explaining my Phd Thesis to layman
Explaining my Phd Thesis to laymanExplaining my Phd Thesis to layman
Explaining my Phd Thesis to layman
Dharmalingam Ganesan
 
Architecture Analysis of Systems based on Publish-Subscribe Systems
Architecture Analysis of Systems based on Publish-Subscribe SystemsArchitecture Analysis of Systems based on Publish-Subscribe Systems
Architecture Analysis of Systems based on Publish-Subscribe Systems
Dharmalingam Ganesan
 
Self-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriverSelf-Generating Test Artifacts for Selenium/WebDriver
Self-Generating Test Artifacts for Selenium/WebDriver
seleniumconf
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
Bob Binder
 
Ethical hacking & Information Security
Ethical hacking & Information SecurityEthical hacking & Information Security
Ethical hacking & Information Security
Ajay Dhamija
 
Ad

Similar to Model-based Testing of a Software Bus - Applied on Core Flight Executive (20)

Requirements driven Model-based Testing
Requirements driven Model-based TestingRequirements driven Model-based Testing
Requirements driven Model-based Testing
Dharmalingam Ganesan
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
Andrey Karpov
 
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDzQualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Paulo Batuta
 
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
Mickael Istria
 
Neha Arora_Resume
Neha Arora_ResumeNeha Arora_Resume
Neha Arora_Resume
Neha Arora
 
Beekman5 std ppt_13
Beekman5 std ppt_13Beekman5 std ppt_13
Beekman5 std ppt_13
Department of Education - Philippines
 
Software Architecture - Allocation taxonomies: building, deployment and distr...
Software Architecture - Allocation taxonomies: building, deployment and distr...Software Architecture - Allocation taxonomies: building, deployment and distr...
Software Architecture - Allocation taxonomies: building, deployment and distr...
Jose Emilio Labra Gayo
 
Testing Presentation
Testing PresentationTesting Presentation
Testing Presentation
sureshpkumar
 
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Erika Barron
 
Best Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native ApplicationsBest Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native Applications
Kevin Whinnery
 
ShwetaKBijay-resume
ShwetaKBijay-resumeShwetaKBijay-resume
ShwetaKBijay-resume
Kumari Shweta Bijay
 
Cloud Reliability: Decreasing outage frequency using fault injection
Cloud Reliability: Decreasing outage frequency using fault injectionCloud Reliability: Decreasing outage frequency using fault injection
Cloud Reliability: Decreasing outage frequency using fault injection
Jorge Cardoso
 
Handalian shelkey mobile-presentation_upa_2010
Handalian shelkey mobile-presentation_upa_2010Handalian shelkey mobile-presentation_upa_2010
Handalian shelkey mobile-presentation_upa_2010
Lisa Renery Handalian
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
svilen.ivanov
 
Model level debugging and profiling, Code Generation Conference 2014
Model level debugging and profiling, Code Generation Conference 2014Model level debugging and profiling, Code Generation Conference 2014
Model level debugging and profiling, Code Generation Conference 2014
Juha-Pekka Tolvanen
 
Track g semiconductor test program - testinsight
Track g  semiconductor test program - testinsightTrack g  semiconductor test program - testinsight
Track g semiconductor test program - testinsight
chiportal
 
Ovp Introduction Presentation (04 Feb 10)
Ovp Introduction Presentation (04 Feb 10)Ovp Introduction Presentation (04 Feb 10)
Ovp Introduction Presentation (04 Feb 10)
simon56
 
Software development slides
Software development slidesSoftware development slides
Software development slides
iarthur
 
Automating The Process For Building Reliable Software
Automating The Process For Building Reliable SoftwareAutomating The Process For Building Reliable Software
Automating The Process For Building Reliable Software
guest8861ff
 
50120140502017
5012014050201750120140502017
50120140502017
IAEME Publication
 
Requirements driven Model-based Testing
Requirements driven Model-based TestingRequirements driven Model-based Testing
Requirements driven Model-based Testing
Dharmalingam Ganesan
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
Andrey Karpov
 
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDzQualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Paulo Batuta
 
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
Mickael Istria
 
Neha Arora_Resume
Neha Arora_ResumeNeha Arora_Resume
Neha Arora_Resume
Neha Arora
 
Software Architecture - Allocation taxonomies: building, deployment and distr...
Software Architecture - Allocation taxonomies: building, deployment and distr...Software Architecture - Allocation taxonomies: building, deployment and distr...
Software Architecture - Allocation taxonomies: building, deployment and distr...
Jose Emilio Labra Gayo
 
Testing Presentation
Testing PresentationTesting Presentation
Testing Presentation
sureshpkumar
 
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Erika Barron
 
Best Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native ApplicationsBest Practices for Cross-Platform Native Applications
Best Practices for Cross-Platform Native Applications
Kevin Whinnery
 
Cloud Reliability: Decreasing outage frequency using fault injection
Cloud Reliability: Decreasing outage frequency using fault injectionCloud Reliability: Decreasing outage frequency using fault injection
Cloud Reliability: Decreasing outage frequency using fault injection
Jorge Cardoso
 
Handalian shelkey mobile-presentation_upa_2010
Handalian shelkey mobile-presentation_upa_2010Handalian shelkey mobile-presentation_upa_2010
Handalian shelkey mobile-presentation_upa_2010
Lisa Renery Handalian
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
svilen.ivanov
 
Model level debugging and profiling, Code Generation Conference 2014
Model level debugging and profiling, Code Generation Conference 2014Model level debugging and profiling, Code Generation Conference 2014
Model level debugging and profiling, Code Generation Conference 2014
Juha-Pekka Tolvanen
 
Track g semiconductor test program - testinsight
Track g  semiconductor test program - testinsightTrack g  semiconductor test program - testinsight
Track g semiconductor test program - testinsight
chiportal
 
Ovp Introduction Presentation (04 Feb 10)
Ovp Introduction Presentation (04 Feb 10)Ovp Introduction Presentation (04 Feb 10)
Ovp Introduction Presentation (04 Feb 10)
simon56
 
Software development slides
Software development slidesSoftware development slides
Software development slides
iarthur
 
Automating The Process For Building Reliable Software
Automating The Process For Building Reliable SoftwareAutomating The Process For Building Reliable Software
Automating The Process For Building Reliable Software
guest8861ff
 
Ad

More from Dharmalingam Ganesan (20)

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

Recently uploaded (20)

[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
Ranking Google
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studiesTroubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Tier1 app
 
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business StageA Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
SynapseIndia
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Beyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraftBeyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraft
Dmitrii Ivanov
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
The Elixir Developer - All Things Open
The Elixir Developer - All Things OpenThe Elixir Developer - All Things Open
The Elixir Developer - All Things Open
Carlo Gilmar Padilla Santana
 
Robotic Process Automation (RPA) Software Development Services.pptx
Robotic Process Automation (RPA) Software Development Services.pptxRobotic Process Automation (RPA) Software Development Services.pptx
Robotic Process Automation (RPA) Software Development Services.pptx
julia smits
 
Artificial hand using embedded system.pptx
Artificial hand using embedded system.pptxArtificial hand using embedded system.pptx
Artificial hand using embedded system.pptx
bhoomigowda12345
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
Memory Management and Leaks in Postgres from pgext.day 2025
Memory Management and Leaks in Postgres from pgext.day 2025Memory Management and Leaks in Postgres from pgext.day 2025
Memory Management and Leaks in Postgres from pgext.day 2025
Phil Eaton
 
Solar-wind hybrid engery a system sustainable power
Solar-wind  hybrid engery a system sustainable powerSolar-wind  hybrid engery a system sustainable power
Solar-wind hybrid engery a system sustainable power
bhoomigowda12345
 
Digital Twins Software Service in Belfast
Digital Twins Software Service in BelfastDigital Twins Software Service in Belfast
Digital Twins Software Service in Belfast
julia smits
 
GC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance EngineeringGC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance Engineering
Tier1 app
 
Programs as Values - Write code and don't get lost
Programs as Values - Write code and don't get lostPrograms as Values - Write code and don't get lost
Programs as Values - Write code and don't get lost
Pierangelo Cecchetto
 
Medical Device Cybersecurity Threat & Risk Scoring
Medical Device Cybersecurity Threat & Risk ScoringMedical Device Cybersecurity Threat & Risk Scoring
Medical Device Cybersecurity Threat & Risk Scoring
ICS
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509
Fermin Galan
 
[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts[gbgcpp] Let's get comfortable with concepts
[gbgcpp] Let's get comfortable with concepts
Dimitrios Platis
 
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
!%& IDM Crack with Internet Download Manager 6.42 Build 32 >
Ranking Google
 
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdfTop Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
Top Magento Hyvä Theme Features That Make It Ideal for E-commerce.pdf
evrigsolution
 
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studiesTroubleshooting JVM Outages – 3 Fortune 500 case studies
Troubleshooting JVM Outages – 3 Fortune 500 case studies
Tier1 app
 
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business StageA Comprehensive Guide to CRM Software Benefits for Every Business Stage
A Comprehensive Guide to CRM Software Benefits for Every Business Stage
SynapseIndia
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Beyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraftBeyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraft
Dmitrii Ivanov
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
Robotic Process Automation (RPA) Software Development Services.pptx
Robotic Process Automation (RPA) Software Development Services.pptxRobotic Process Automation (RPA) Software Development Services.pptx
Robotic Process Automation (RPA) Software Development Services.pptx
julia smits
 
Artificial hand using embedded system.pptx
Artificial hand using embedded system.pptxArtificial hand using embedded system.pptx
Artificial hand using embedded system.pptx
bhoomigowda12345
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
Memory Management and Leaks in Postgres from pgext.day 2025
Memory Management and Leaks in Postgres from pgext.day 2025Memory Management and Leaks in Postgres from pgext.day 2025
Memory Management and Leaks in Postgres from pgext.day 2025
Phil Eaton
 
Solar-wind hybrid engery a system sustainable power
Solar-wind  hybrid engery a system sustainable powerSolar-wind  hybrid engery a system sustainable power
Solar-wind hybrid engery a system sustainable power
bhoomigowda12345
 
Digital Twins Software Service in Belfast
Digital Twins Software Service in BelfastDigital Twins Software Service in Belfast
Digital Twins Software Service in Belfast
julia smits
 
GC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance EngineeringGC Tuning: A Masterpiece in Performance Engineering
GC Tuning: A Masterpiece in Performance Engineering
Tier1 app
 
Programs as Values - Write code and don't get lost
Programs as Values - Write code and don't get lostPrograms as Values - Write code and don't get lost
Programs as Values - Write code and don't get lost
Pierangelo Cecchetto
 
Medical Device Cybersecurity Threat & Risk Scoring
Medical Device Cybersecurity Threat & Risk ScoringMedical Device Cybersecurity Threat & Risk Scoring
Medical Device Cybersecurity Threat & Risk Scoring
ICS
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509
Fermin Galan
 

Model-based Testing of a Software Bus - Applied on Core Flight Executive

  • 1. 1© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Model-based Testing of a Software Bus applied on Core Flight Executive Dharmalingam Ganesan, Mikael Lindvall Dave McComas (NASA GSFC) Presented at Flight Software Workshop, Pasadena, CA, 2014
  • 2. 2© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Traditional Test Automation  Only test execution is automated  E.g. Junit, CuTest, etc.  Test cases are manually constructed  Effort intensive  Some issues with traditional testing:  Insufficient coverage of off-nominal behaviors  Tests are too-detailed with low-level details  Not easy to test multi-tasking architecture  More on this later.
  • 3. 3© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Model-based Testing (MBT)  The tester develops a model (a.k.a. testing models)  instead of writing suite of test cases  The model becomes the test oracle  Test cases are auto-generated from the model  based on requirements, API documentations  Key benefits:  Tester works at a high-level of abstraction  Innumerable number of test cases derived from the model  Triggers many, if not all, off-nominal behaviors  Precise specification
  • 4. 4© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering System under test (SUT) • The Core Flight Software System (CFS) • a mission-independent, platform-independent, Flight Software (FSW) environment integrating a reusable core flight executive (cFE) • The CFS is a product-line developed by the NASA Goddard Space Flight Center (GSFC) • CFS is implemented in C • cFE layer of the CFS is open source
  • 5. 5© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering cFE/CFS Context Diagram Inter-task Message Router (SW Bus) Transponders Commands Real-time Telemetry (UDP) Comm Cards File downlink (CFDP) Summit Chip Mass Storage System CFDP File Transfer File Manager Local Storage Data Storage Event Services Executive Services Time Services 1553 Bus Support Software Bus Command Ingest Telemetry Output Table Services EDAC Memory Scrubber Self Test Memory Dwell Instrument Manager Checksum Memory Manager GN&C Applications (4) Mission Apps cFE core App CFS Applications Stored Commanding Software Scheduler Health & Safety Manager House- keeping Limit Checker
  • 6. 6© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering MBT of Software Bus  cFE has a software bus (SB)  Apps communicate indirectly using the SB  Publish-Subscribe architectural style  SB has unit-tests (developed by NASA GSFC)  Good coverage but  not taking multi-tasking into consideration  Goals: find defects related to multi-tasking (difficult!)  Generate test cases for SB  Generate the “bubbles” (the apps on previous slide)  Demonstrate the applicability of MBT  Developed an approach of testing SB  Allows testing of multi-tasking architectures
  • 7. 7© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Scope of the current model  Modeled the following behaviors  Create Pipes (to hold messages)  Delete Pipes  Subscribe to Messages  Send Messages  Receive Messages  Multiple Apps (dynamically instantiated)  Innumerable test cases (in C) auto-generated  Model based on Microsoft’s Spec Explorer Tool  Will get back to this
  • 8. 8© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Challenges of testing a SB  To test a SB we need apps that publish-subscribe  Apps are runtime tasks that communicate using the SB  Apps publish/subscribe to messages  Each app cannot decide on its own the correctness  Correctness depends on the global state of the system  E.g: subscribe(msg), RecvMsg() may not work if no other task is publishing any message  The order of execution of tasks also matters  Need a test architecture!
  • 9. 9© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Test Architecture – Key Ideas  Parent/Child architecture for testing  Each test case is a parent  Each test case runs as an app  At run-time, one or more child tasks are spanned by the parent  Model controls the behavior of the parent  All test assertions are decided by the parent  All child tasks share the codebase  How the parent and children communicate?  Why not just use the software bus itself?
  • 10. 10© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Test Architecture CFE Paren t Child 1 Child 2 Child n Command Pipe All child tasks share the codebase
  • 11. 11© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Test Architecture – Key Ideas  Each child task subscribes to all commands, such as Create Pipe, Delete Pipe, Subscribe, etc.  Parent broadcast commands to all child tasks  Communication uses CFE infrastructure  Task id of the child is also part of the message struct  Only the target child can perform a certain command  Child tasks perform the command and send the return code back to the parent  Child tasks send out a result msg  Parent task subscribes to the result msg  The parent verifies test assertion  Asserts are generated from the model
  • 12. 12© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Spec Explorer – Brief Background  Tester develops a model (a.k.a. model program)  Spec Explorer runs as a plug-in to MS Visual Studio  Model programs are written in C# like syntax  The model program is a simplified version of the SUT  Spec Explorer generates state machines from models  Also checks whether model satisfies invariants  Helps in validating the model  Test cases are automatically derived from state machines  SUT’s behavior is automatically compared with model
  • 13. 13© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Abstractions for the model program  Model program is another implementation of the SUT  But we do not want to create two implementations  No one wants to maintain two implementations  No one wants to develop a system two times  How did we create a simplified version of the SUT?  Key idea: Apply abstractions Model of GPM, which uses CFE
  • 14. 14© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Sample abstractions for a model  Model is agnostic to multi-tasking complexity of the SB  Model has a very simple message structure  Message is modeled as an int (not C structures)  Message queues/pipes are also abstracted  Finite depth  Message queues are modeled as simple sequences  instead of using shared memory  No pointers, threads, semaphores at the model level  Very simple data structure using very basic data types  int, boolean, maps
  • 15. 15© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Structure of the model program E.g.: Number of apps, pipes Represent the state of the bus Used for excluding the uninteresting states Which states are good for terminating tests Models the actual logic of the software bus Preconditions for enabling the rule methods to fire Generates values for rule method Utilties for rule methods and guards
  • 16. 16© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering State Data
  • 17. 17© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Fragments of the model program Rules are enabled only if Condition.IsTrue returns true
  • 18. 18© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Fragments of the guards
  • 19. 19© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Slicing the model for specific tests
  • 20. 20© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Generated from the model program We generate the model! In “regular” MBT you have to manually create the model.
  • 21. 21© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Generated test sequences - sample Each chain is a test case
  • 22. 22© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 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 “print” test code from our adapter in C  Converts C# tests into C tests  Recall that CFE’s SB interface is in C
  • 23. 23© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Our abstracted interface for Testing int32 InitApp_w(int32 appName); int32 CreatePipe_w(int32 appName, int32 pipeName, int32 pipeDepth); int32 DeletePipe_w(int32 appName, int32 pipeName); int32 Subscribe_w(int32 appName, int32 msgId, int32 pipeName); int32 UnSubscribe_w(int32 appName, int32 msgId, int32 pipeName); int32 RcvMsg_w(int32 appName, int32 pipeName, int32* actualMsgId); int32 SendMsg_w(int32 appName, int32 msgId);
  • 24. 24© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Sample generated test case void Parent_TestAppMain( void ) { int32 status; uint32 RunStatus = CFE_ES_APP_RUN; Parent_TestAppInit(); status = InitApp_w(APP_0); assert(status == CFE_SUCCESS); status = CreatePipe_w(APP_0, PIPE_0, 1); assert(status == CFE_SUCCESS); status = Subscribe_w(APP_0, MSG_0, PIPE_0); assert(status == CFE_SUCCESS); status = Subscribe_w(APP_0, MSG_1, PIPE_0); assert(status == CFE_SUCCESS); status = UnSubscribe_w(APP_0, MSG_1, PIPE_0); assert(status == CFE_SUCCESS); CFE_ES_ExitApp(RunStatus); }
  • 25. 25© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Advantages of using Model-Based Testing  The model focuses on the domain (easier to understand)  Instead of being source code oriented (harder to understand)  We automatically generate an endless number of executable test cases (high coverage)  Instead of manually writing individual test cases  The information is in one place: in the model, easy to maintain  Instead of being spread out (hard to maintain)  The test cases can easily be run over and over again
  • 26. 26© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering 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 apps  Models are programs  Ideal for programmers (who prefer coding)  Models can be formally verified  Invariants encoded in the model help to validate the model
  • 27. 27© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Challenges with Spec Explorer  Modeling errors can lead to infinite state machine  Need to be careful even for small models (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?
  • 28. 28© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Applicability to other flight software  The same approach is applicable to other types of sw  Requirements are that  The software has an interface (e.g. API, GUI)  Through which commands (stimuli) can be sent  Through which results (responses) can be received  Need (some) specification  Optional: Sample test cases, API usage examples
  • 29. 29© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Conclusion  MBT works well for testing of multi-tasking architecture  In this case of a software bus  Parent/Child test architecture facilitates testing  Individual tasks cannot decide correctness of their own  Parent coordinates with children and asserts correctness  Models and generated state machines: a good spec!  Innumerable number of test cases from the model  Test cases are agnostic to cFE syntax but still executable  Need to be careful in managing the model’s complexity  Abstraction is important  Otherwise the model will be as complex as the system under
  • 30. 30© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Acknowledgement  Jan-Philip Quirmbach (Fraunhofer Intern)  cFE is open source – not an issue for foreign interns  Alan Cudmore (NASA GSFC)  OSMA SARP:  Martha Wetherholt (NASA HQ)  Ken Rehm (NASA IV&V)  Ricky A. Forquer (NASA IV&V)  This work was partly funded by SARP
  • 31. 31© 2014 Fraunhofer USA, Inc. Center for Experimental Software Engineering Questions  Dharma Ganesan (dganesan@fc-md.umd.edu)
  翻译: