Improving Usability of Fault Injection

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Goals Give you a feeling of what Eclipse is.
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
CASE Tools CIS 376 Bruce R. Maxim UM-Dearborn. Prerequisites to Software Tool Use Collection of useful tools that help in every step of building a product.
Institute of Computing Jaca: a Reflective Fault Injection Tool based on Patterns Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State.
SIMULATING ERRORS IN WEB SERVICES International Journal of Simulation: Systems, Sciences and Technology 2004 Nik Looker, Malcolm Munro and Jie Xu.
© 2008 IBM Corporation Behavioral Models for Software Development Andrei Kirshin, Dolev Dotan, Alan Hartman January 2008.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Managing Software Quality
University of Coimbra, DEI-CISUC
ITEC224 Database Programming
An Introduction to Software Architecture
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Cluster Reliability Project ISIS Vanderbilt University.
Testing Workflow In the Unified Process and Agile/Scrum processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Construction Lecture 18 Software Testing.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Fault Tolerance Benchmarking. 2 Owerview What is Benchmarking? What is Dependability? What is Dependability Benchmarking? What is the relation between.
Verification of FT System Using Simulation Petr Grillinger.
© 2006, National Research Council Canada © 2006, IBM Corporation Solving performance issues in OTS-based systems Erik Putrycz Software Engineering Group.
EDCC-8 28 April 2010 Valencia, Spain MobiLab Roberto Natella, Domenico Cotroneo {roberto.natella,
Mantid Stakeholder Review Nick Draper 01/11/2007.
Faculty Advisor – Dr. Suraj Kothari Client – Jon Mathews Team Members – Chaz Beck Marcus Rosenow Shaun Brockhoff Jason Lackore.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
Reviews Crawler (Detection, Extraction & Analysis) FOSS Practicum By: Syed Ahmed & Rakhi Gupta April 28, 2010.
Survey of Tools to Support Safe Adaptation with Validation Alain Esteva-Ramirez School of Computing and Information Sciences Florida International University.
Outsourcing, subcontracting and COTS Tor Stålhane.
Chapter – 8 Software Tools.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Evaluating the Fault Tolerance Capabilities of Embedded Systems via BDM M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dipartimento di Automatica.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
TTCN-3 Testing and Test Control Notation Version 3.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVII. Verification and Validation.
SOFTWARE TESTING TRAINING TOOLS SUPPORT FOR SOFTWARE TESTING Chapter 6 immaculateres 1.
M&CML: A Monitoring & Control Specification Modeling Language
SQL Database Management
CIS 375 Bruce R. Maxim UM-Dearborn
Chapter 19: Network Management
Muen Policy & Toolchain
Goals Give you a feeling of what Eclipse is.
Extending Model-Driven Engineering in Tango
Introduction to Advanced Java Programming
ATTRACT TWD Symposium, Barcelona, Spain, 1st July 2016
A Security Review Process for Existing Software Applications
FPGA: Real needs and limits
Dependability Evaluation and Benchmarking of
Behavioral Models for Software Development
Introduction to Software Testing
Thursday’s Lecture Chemistry Building Musspratt Lecture Theatre,
Testing and Test-Driven Development CSC 4700 Software Engineering
System Concept Simulation for Concurrent Engineering
Test Automation CS 4501 / 6501 Software Testing
Using JDeveloper.
Software Engineering with Reusable Components
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Execute your Processes
Design Yaodong Bi.
Software Development Process Using UML Recap
Presentation transcript:

Improving Usability of Fault Injection Università degli Studi di Napoli Federico II Italy D. Cotroneo, L. De Simone, A.K. Iannillo, A. Lanzaro, R. Natella

Outline Introduction Fault Injection Tools Key Features Demo

Introduction I’ll first show you a brief introduction of the topic

Software Fault Injection an approach for gaining confidence about fault-tolerance properties of a software system, by deliberately injecting perturbations in the software to emulate faulty components and stressful conditions. Validating fault-tolerance mechanisms Aiding FMECAs (Failure Mode, Effects, and Criticality Analysis) Dependability benchmarking I’d like to give you first a definition of what I mean for SFI (definition) The application of SFI are several and can be classified in (click) SFI can evaluate error detection and handling mechanisms (such as assertions and exception handlers) against faulty hardware and software components, and to improve such mechanisms if needed Developers can quantify the impact of a faulty component on the overall system (e.g., in terms of catastrophic system failures), and mitigate risks by testing the most critical components and by revising the system design SFI helps developers to choose among alternative systems or components the one that provides the best dependability and/or performance in the presence of faults

Fault Injection Process Test Case Generation Definition of workload Definition of faultload (what, where and when to inject) Test Execution Build project Run project Inject faults Result Analysis Gather information Failure analysis The steps a practitioner should follow are generally three (click) First, he/she should generate the test case through the definition of workload and fault load (click) Then the tests should be executed, that is: - (click) Finally, the result should be analysed. In order to do that we should retrieve the some information from the execution and analyse the failures.

Usability Satisfaction Efficiency Effectiveness Fault Injection Portability Fault Injection Integration Fault Injection Flexibility "The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use.“ [ISO definition] Non Instrusiveness Our work is focused on the usability of fault injection. But what is usability? According to the ISO, usability is (definition) In the topic of fault injection, usability requires to take care of several aspects, such as: Integration, the possibility to use the FI inside the software development process without efforts Portability, the ability to reuse a fault injection tool for different target system Flexibility, the ability to use different fault models and to extend them Non-Intrusiveness, the ability of a fault injector to not introduce significant perturbations that would distort the results of experiments http://www.w3.org/2002/Talks/0104-usabilityprocess/slide3-0.html

Fault Injection Tools Let’s have a glance at some (very few) fault injection tools

Fault Injection-based Automated Testing environment (FIAT) Extraction of real-time communication Tasks User-provided Fault Class Definition User-provided Experiment Description Results (coverage and latency measures, raw data) the FIAT environment has been designed for the injection of error patterns into executing software that are representative of errors that are likely to be generated by software and hardware. FIAT software can fault inject user application code and data. A workload is an observable set of real-time communicating tasks. Analysis with a attribute extractors (tool), that returns task tables. Fault Class definition is a template describing a set of workload or system modifications, which are representative of a group of physical/logical faults having common properties. As in any abstract type, the fault class can be instantiated, meaning that each method is applied to the associated domain and a specific fault (fault instance) is generated automatically by a fault instance generator. The experiment description is a high level description of an experiment flow, which includes workload, fault injection and data collection commands (In a specific format). In FIAT two types of data analysis are available: a set of predefined functions such as workload profiling and error coverage statistics; and a relational data base query language which enables the users to define their own analysis goals. The fault injection manager provides experiment interface to assist the library preparation, experiment definition, experiment execution and data analyzer. --------------------------- Link of 4 program attachment (workload monitor, fault injector, error detection/reporting, fault tolerant arch).

NFTAPE User-provided Campaign Strategy Scripts Lightweight Fault Injectors Results (system logs) NFTAPE is an automated fault injection tool that support, among others, Multiple Fault Models, Multiple Fault Triggers, Multiple Targets. The user should provide the campaign strategy (where, what and when to inject) specifying triggers and LWFI. These two are loaded in the target node as process, controlled through a communication handler. During the experiments, the target logs are retrieved for further analysis. ------------------------------------------------------------- A motivating factor for developing NFTAPE came from failing to find an automated fault injection tool that would support the set of features needed to evaluate a computer system developed to run scientific experiments in space. A partial list of the requirements includes: Multiple Fault Models, Multiple Fault Triggers, Multiple Targets, Versatile Error Reporting Model. NFTAPE also provides an API to further facilitate development of fault injectors (fault model). Distributed fault injection based analyzes need to manage several cooperating processes (e.g., workload generators, monitors or heartbeats, target applications, loggers,triggers, acceptance tests, and LWFI processes). Managing them entails providing parameters for the process, starting the process, recognizing error conditions (such as invalid filename or arguments), processing data from the process, and capturing the process termination. In order to provide these services, we require the Process Manager to be a parent of all processes involved in a given fault injection campaign (e.g., injectors, monitors, application).

Model-Implemented Fault Injection tool (MODIFI) MODIFI targets behaviour models in Simulink, adata flow graphical programming language tool for modeling, simulating and analyzing multi domain dynamic systems. The first step for a user of MODIFI is to supply a Simulink model as target for the fault injection and a corresponding stimuli file. The next step is to select fault models, which are implemented as failure mode functions (FMF) in MODIFI, for each of the signals in the behavior model that shall be subject to fault injection. The third step during configuration of fault-injection experiments is to define safety requirements (failure detectors). The fourth and final configuration step is related to different aspects of time. The user can define when to observe the system behavior and when to inject fault. -------------------------------------------- The stimuli file serves two purposes: to define the simulation time (time step and length) and provide signal values for all input ports in the entire system for the duration of the simulation. The FMFs available are derived from the XML description supplied during the first configuration step.

Key Features Now I’ll show you step by step how we would like to implement the fault injection process

Generate Fault Injection Tests What to inject? Where to inject? When to inject? gather information about the project from an IDE a wizard guides the user in selecting what/where/when to inject (based on project info) possibility to choose among several injectors and fault models The first issue is how to generate fault injection tests. We have to define… In order to get the information about the project, we can rely on the IDE, the environment where the software has been created and developed. Then a wizard… We can also dynamically choose among…

Execute Tests reuse of the builder and launcher provided by the IDE (for the build and launch steps of fault injection) the IDE allows to access and to instrument/modify the code and configuration of the target project Inject faults Build the project Run the project In order to execute tests, we should be able to… Thanks to the IDE, we can reuse its builder and launcher (that have been already configured previously during the development process) for the execution of tests. Furthermore, the IDE…

Analyse Results Gather the measurements of the launch Define failure modes Present the results use IDE facilities for retrieving launch information and outputs use of Wizard to set up (application-dependant) failure detectors an integrated analyser presents results through graphical interfaces. Finally, an import issue is to analyse the results. We must… For this purpose, we can use the IDE facilities for… (that’s because we are using the IDE launcher) In order to detect the failure mode of the software, we can use a wizard… We’ll see this later in the next slide In addiction to these, an integrated…

Application-Dependent Failure Detectors Selection of the I/O channels to be monitored during the execution Output files, standard output, standard error… Configuration of criteria for correlating failure modes with the I/O channels Find patterns in output files (e.g., keywords) Compare faulty traces to fault-free trace We consider two kinds of failure mode, and so, detector: dependant and not. Not dependant are failures such as crash or hang. For the dependant failure detection, we should follow two separate steps.

Demo Now we’re moving to the most interesting part of the presentation the demo. But first few information.

Eclipse Plug-in Extends the workbench UI with wizards and dialogs Uses the JFace UI framework to present data and information Uses the Resource plugin to control the project files and related eclipse configuration files Uses of Program Debug and Launch support We implemented the FIT as an Eclipse plug-in. Eclipse is an integrated development environment (IDE). It contains a base workspace and an extensible plug-in system for customizing the environment. A software component in Eclipse is called a plug-in, that allows to extend the IDE functionality. The JFace UI framework provides several standard dialogs and a framework for building your own dialogs and wizards. We'll look at the different kinds of dialogs and wizards and how to build them. An essential plug-in for Eclipse IDE applications is the resources plug-in (named org.eclipse.core.resources). The resources plug-in provides services for accessing the projects, folders, and files that a user is working with. The resources plug-in in the Eclipse platform allows you to manage a set of source files for a program and compile them using an incremental project builder.

Demo Experiment Use of the Eclipse Plug-in for a Java Standalone Application Traffic Collision Avoidance System (TCAS) algorithm implemented in Java We will go through the three phases of Fault Injection Testing in order to see how the plugin handles them Creation of Fault Injection Campaign Run Experiments Crash Failure Detector Application-Dependent Failure Detector