Paul Ammann & Jeff Offutt

Slides:



Advertisements
Similar presentations
Introduction to Software Testing Chapter 1
Advertisements

Introduction to Software Testing Chapter 1 Model-Driven Test Design Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 1 Paul Ammann & Jeff Offutt SUMMARY OF PARTS 1 AND 2 FROM LAST WEEK.
Introduction to Software Testing Chapter 9.2 Challenges in Testing Software – Software Testability Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 5.5 Input Space Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.5 Input Space Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
Pedro Reales Mateo University of Castilla-La Mancha Alarcos Research Group University of Castilla-La Mancha Macario Polo Usaola University of Castilla-La.
1 Software Testing and Quality Assurance Lecture 12 - The Testing Perspective (Chapter 2, A Practical Guide to Testing Object-Oriented Software)
.NET Mobile Application Development Introduction to Mobile and Distributed Applications.
Course Organization Course Software Testing & Verification 2014/15 Wishnu Prasetya.
Introduction to Software Testing Chapter 5.2 Program-based Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 5.5 Input Space Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Software Testing and Maintenance Lecture 4 Graph Coverage for Design Element Paul Ammann & Jeff Offutt Instructor: Hossein Momeni Mazandaran.
Introduction to Software Testing Chapter 9.1 Challenges in Testing Software – Testing for Emergent Properties: Safety and Security Paul Ammann & Jeff Offutt.
Introduction to Software Testing Chapter 8.1 Building Testing Tools –Instrumentation Paul Ammann & Jeff Offutt
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
1 Graph Coverage (4). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Section
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Introduction to Software Testing Paul Ammann & Jeff Offutt Updated 24-August 2010.
Introduction to Software Testing (2nd edition) Chapter 7.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.1 Challenges in Testing Software – Testing for Emergent Properties: Safety and Security.
Introduction to Software Testing Chapter 9.2 Program-based Grammars Paul Ammann & Jeff Offutt
Introduction to Software Testing (2nd edition) Chapter 4 Putting Testing First Paul Ammann & Jeff Offutt August.
Introduction to Software Testing Model-Driven Test Design and Coverage testing Paul Ammann & Jeff Offutt Update.
Software Testing and Quality Assurance Practical Considerations (1) 1.
Introduction to Software Testing (2nd edition) Chapter 5 Criteria-Based Test Design Paul Ammann & Jeff Offutt
Testability.
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Generating Automated Tests from Behavior Models
User-centred system design process
Introduction to Software Testing Chapter 9.2 Program-based Grammars
Input Space Partition Testing CS 4501 / 6501 Software Testing
Software Testing An Introduction.
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Graph Coverage for Design Elements CS 4501 / 6501 Software Testing
Introduction to Software Testing Chapter 5.1 Syntax-based Testing
CS 425/625 Software Engineering Software Evolution
Introduction to Software Testing Chapter 2 Model-Driven Test Design
Introduction to Software Testing Chapter 9.2 Program-based Grammars
Paul Ammann & Jeff Offutt
Introduction to Software Testing
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 3 Test Automation
Software Engineering Experimentation
Introduction to Software Testing Chapter 5.2 Program-based Grammars
Testing and Test-Driven Development CSC 4700 Software Engineering
Fault Tolerance Distributed Web-based Systems
Test Driven Lasse Koskela Chapter 9: Acceptance TDD Explained
Test Automation CS 4501 / 6501 Software Testing
Chapter 6 – Architectural Design
ISP Coverage Criteria CS 4501 / 6501 Software Testing
Graph Coverage for Design Elements CS 4501 / 6501 Software Testing
Paul Ammann & Jeff Offutt
Logic Coverage for Source Code CS 4501 / 6501 Software Testing
Introduction to Software Testing Chapter 5.1 Syntax-based Testing
State Handling CS 4640 Programming Languages for Web Applications
[Based in part on SWE 432 and SWE 632 materials by Jeff Offutt, GMU]
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Krug 4 Animal, Mineral, or Vegetable
State Handling CS 4640 Programming Languages for Web Applications
Presentation transcript:

Paul Ammann & Jeff Offutt http://www.cs.gmu.edu/~offutt/softwaretest/ Introduction to Software Testing Chapter 9.2 Challenges in Testing Software – Software Testability Paul Ammann & Jeff Offutt http://www.cs.gmu.edu/~offutt/softwaretest/

Chapter 9 Outline Software Testability Testing for Emergent Properties: Safety and Security Software Testability Test Criteria and the Future of Software Testing Software Testability Paul Ammann and Jeff Offutt, Introduction to Software Testing, Cambridge University Press, Cambridge, UK, ISBN 0-52188-038-1, 2008 Introduction to Software Testing (Ch 9.2) © Ammann & Offutt 2

Testability Overview Testability is distinct from software testing General definition : An estimate or measurement of a conditional probability – assuming that a software artifact contains a fault, how likely is it that testing will reveal that fault ? What do we do with testability estimates ? Pay more attention to components with low testability – code reviews, formal analysis, stronger test criteria Modify low testability components to increase their testability We have more confidence in components with high testability Risk analysis – low testability components represent risk that management needs to be aware of Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

Model of Testability If a program has a fault, how difficult will it be to find a test that causes a failure ? Simple model Out failure causing Inputs P Testability = | failure causing | | Input | X 100 % Impractical to measure Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

Approximating Testability Testability can be approximated with the RIP model and mutation Given a location X in a program P P: entry X exit R = % inputs from some distribution that reach X Induce faults (mutants) I = % inputs that cause a fault to infect (average over N faults) P = % infected states that propagate to output Sensitivity (X) = R * I * P Testability (P) = F (Sensitivity (X)), for all X in P Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

Issues in Approximating Testability Reasonable input distribution ? How to induce faults ? What faults ? How to measure propagation ? Expensive! Information hiding reduces propagation Assertion checking can be used to increase testability Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

Testability of OO Software Information hiding decreases testability State information is saved in instance variables No direct access to instance variables Inheritance compounds the problem Instance variables are defined in ancestor classes – harder to get to These are primarily issues of observability Increasing observability in OO software : Require additional get ( ) methods – must be done during development Use Java reflection to access internal variables – hard to interpret the data values This is an area of ongoing research Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

Testability of Web Applications Both controllability and observability are very low User interface and most software components distributed on different computers Server software may be distributed even further Most communication is through message passing Much of the inter-component communication goes through the client Stateless HTTP messages State is kept in an unusual combination of technologies Cookies and session objects Testability in web applications is still very much an open research area Introduction to Software Testing (Ch 9.2) © Ammann & Offutt

How best to measure testability is still an open research problem Testability Summary Testability can give valuable information to testers, managers and developers Testability is often thought of as combining two characteristics of software Controllability and observability Measuring testability is a very technical task How best to measure testability is still an open research problem Introduction to Software Testing (Ch 9.2) © Ammann & Offutt