University of Coimbra, DEI-CISUC

Slides:



Advertisements
Similar presentations
Lecture 8: Testing, Verification and Validation
Advertisements

Testing and Quality Assurance
Alternate Software Development Methodologies
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development.
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Presenter : Shih-Tung Huang Tsung-Cheng Lin Kuan-Fu Kuo 2015/6/15 EICE team Model-Level Debugging of Embedded Real-Time Systems Wolfgang Haberl, Markus.
1 SWE Introduction to Software Engineering Lecture 5.
Developing Dependable Systems CIS 376 Bruce R. Maxim UM-Dearborn.
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
Software Fault Injection Kalynnda Berens Science Applications International Corporation NASA Glenn Research Center.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Principle of Functional Verification Chapter 1~3 Presenter : Fu-Ching Yang.
Software Process and Product Metrics
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
Automated Tests in NICOS Nightly Control System Alexander Undrus Brookhaven National Laboratory, Upton, NY Software testing is a difficult, time-consuming.
Introduction to Software Testing
Methodology for Architectural Level Reliability Risk Analysis Lalitha Krothapalli CSC 532.
Copyright Critical Software S.A All Rights Reserved. VAL-COTS Validation of Real Time COTS Products Ricardo Barbosa, Henrique Madeira, Nuno.
Software Architecture Risk Assessment (SARA) Tool Khader Basha Shaik Problem Report Defense Master of Science in Computer Science Lane Department of Computer.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Software Faults and Fault Injection Models --Raviteja Varanasi.
Evaluation of Safety Critical Software -- David L. Parnas, -- A. John van Schouwen, -- Shu Po Kwan -- June 1990 Presented By Zhuojing Li.
Injection of Faults for SW Validation Henrique Madeira, 6/out/2007.
Naaliel Mendes, João Durães, Henrique Madeira CISUC, Department of Informatics Engineering University of Coimbra {naaliel, jduraes,
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Chapter 6 : Software Metrics
Copyright Critical Software S.A All Rights Reserved. G-SWFIT A Technique for Fault Injection in Executable Code SAS’07, Morgantown Sept. 25th-27th.
Protecting the Public, Astronauts and Pilots, the NASA Workforce, and High-Value Equipment and Property Mission Success Starts With Safety Believe it or.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Jump to first page (c) 1999, A. Lakhotia 1 Software engineering? Arun Lakhotia University of Louisiana at Lafayette Po Box Lafayette, LA 70504, USA.
Software Metrics – part 2 Mehran Rezaei. Software Metrics Objectives – Provide State-of-art measurement of software products, processes and projects Why.
BE-SECBS FISA 2003 November 13th 2003 page 1 DSR/SAMS/BASP IRSN BE SECBS – IRSN assessment Context application of IRSN methodology to the reference case.
21-22 May 2004IMPROQ 2004 / Impact of SW Processes on Quality Workshop 1 Quality for Components: Component and Component- Based Software Quality Issues.
Testing Techniques Software Testing Module ( ) Dr. Samer Hanna.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Research Heaven, West Virginia FY2003 Initiative: Hany Ammar, Mark Shereshevsky, Walid AbdelMoez, Rajesh Gunnalan, and Ahmad Hassan LANE Department of.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Architecture Risk Assessment (SARA) Tool Khader Shaik, Wallid Abdelmoez, Dr. Hanny Ammar Lane Department of Computer Science and Electrical Engineering,
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.
Over View of CENELC Standards for Signalling Applications
Toulouse, September 2003 Page 1 JOURNEE ALTARICA Airbus ESACS  ISAAC.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
Advanced Software Engineering Lecture 4: Process & Project Metrics.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Dynamic Testing.
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
Dependable Technologies for Critical Systems Robustness and Stress Testing RTEMS Final Presentation.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Software Design Process. What is software? mid-1970s executable binary code ‘source code’ and the resulting binary code 1990s development of the Internet.
Certification of Reusable Software Artifacts
Software Testing Strategies for building test group
Software Testing Introduction CS 4501 / 6501 Software Testing
Chapter 8 – Software Testing
Verification and Testing
University of Napoli Federico II
Chapter 13 & 14 Software Testing Strategies and Techniques
Software Processes.
Introduction to Software Testing
Software Engineering with Reusable Components
Chapter 10 – Software Testing
Measurement What is it and why do it? 2/23/2019
© Oxford University Press All rights reserved.
Chapter 7 Software Testing.
Luca Simoncini PDCC, Pisa and University of Pisa, Pisa, Italy
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

University of Coimbra, DEI-CISUC Injection of realistic software faults for experimental software risk assessment Henrique Madeira Critical Software, SA and University of Coimbra, DEI-CISUC Coimbra, Portugal NASA IV&V Facility, Fairmont, WV, USA, August 8, 2005 Universidade de Coimbra

What’s the point of injecting software faults? Software faults are most probably the major cause of computer system outages Goals: Experimental risk assessment in component-based software development Dependability evaluation of COTS components Robustness testing Fault tolerance layer evaluation Dependability benchmarking

Two possible injection points Injection of interface faults in software components (classical robustness testing) Interface faults SW component under test Output Input Injection of realistic software faults inside software components (new approach) Software faults Target SW component Output Input

Example of results obtained with interface faults (robustness testing) Robustness failure in RTEMS 4.5.0 Excerpt of application code: requestedSize1 = 4294967295; returnStatus = rtems_region_get_segment (regionId, requestedSize1, option, timeout, ptsegment1); Result: Memory exception at fffffffc (illegal address) Unexpected trap (0x09) at address 0x0200aaac Data access exception at 0xfffffffc This software fault was discovered automatically by the Xception robustness testing tool!

Example of results obtained with injection of software faults What happens if a software bug in a device driver becomes active? Software faults are injected in a device driver using the G-SWFIT technique. The device is heavily used by programs running during test. Availability Feedback Stability Worst Best Windows XP Windows 2000 Windows NT

Component-based software development Vision: development of systems using pre-fabricated components. Reuse custom components or buy software components available from software manufactures (Commercial-Off-The-Shelf: COTS). Potential advantages: Reduce development effort since the components are already developed, tested, and matured by execution in different contexts Improve system quality Achieve of shorter time-to-market Improve management of increased complexity of software Trend → use general-purpose COTS components and develop domain specific components.

Some potential problems COTS In general, functionality description is not fully provided. No guarantee of adequate testing. COTS must be assessed in relation to their intended use. The source code is normally not available (makes it impossible white box verification & validation of COTS). Reuse of custom components in a different context may expose components faults. Using COTS (or reusing custom components) represent a risk! How to assess (and reduce) that risk?

Case-study: I-don’t-care-about software architecture diagram Software components Different sizes Different levels of granularity

What’s the risk of using it in my system? Question 1 This is a COTS! What’s the risk of using it in my system?

Question 2 This is custom component previously built! What’s the risk of reusing it in my system?

Question 3 This is a new custom component! What’s the risk of using it without further testing?

Experimental risk assessment Example of question: What’s the risk of using Component 3 in my system? Software complexity metrics Injection of software faults Risk = prob. of bug * prob. of bug activation * impact of bug activation

Again, two possible injection points Injection of interface faults Injection of realistic SW faults

Why injection or real software faults? Injection of SW faults Injection of SW faults Error propagation through non conventional channels is a reality. Faults injected inside components are more representative.

How to inject software faults? Use G-SWFIT (ISSRE 2002, DSN 2003, DSN 2004) Injects the top N most common software faults. This top N is based on field data (our study + ODC data from IBM) and corresponds to ~65% of the bugs found in field data. Injects faults in executable code. Largely independent on the programming language, compiler, etc that have generated the executable code. G-SWFIT is now a reasonably mature technique.

G-SWFIT Generic software fault injection technique Target executable code Low-level code mutation engine Low level mutated versions 01X110001001001 010110X01001001 010110001001001 . . . 010110001X01001 01011000100X001 Library of software fault injection operators Emulate common programmer mistakes The technique can be applied to binary files prior to execution or to in-memory running processes

Experimental risk assessment (again) Example of question: What’s the risk of using Component 3 in my system? Software complexity metrics Injection of software faults Risk = prob. of bug * prob. of bug activation * impact of bug activation

Estimation of the probability of residual bugs Target code Many studies indicate that fault probability correlates with the software module complexity Metrics of software complexity base on: Static feature of the code; Dynamic features; Possible information on the development process (type of tests, etc); ...

Estimation of bug activation probability and bug impact Target code Software faults Test campaigns to evaluate the activation probability and the impact of software faults (bugs) inside the component in the rest of the system. Use software metrics to choose the modules to inject faults and define trigger locations accordingly.

Conclusions and current work on experimental risk assessment Experimental software risk assessment seems to be viable. Risk is a multi-dimensional measure. Many software risks can be assessed, depending on the property I’m interested in. Current work: Improve the G-SWFIT technique: Improving current tool. Expansion of the mutation operator library Construction of a field-usable tool for software fault emulation in Java environments Study of software metrics and available tools. Composeability measures. Real case-studies to demonstrate the methodology.