CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

Finding bugs: Analysis Techniques & Tools Comparison of Program Analysis Techniques CS161 Computer Security Cho, Chia Yuan.
Testing and Quality Assurance
LIFE CYCLE MODELS FORMAL TRANSFORMATION
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
Software Engineering COMP 201
CS590 Z Software Defect Analysis Xiangyu Zhang. CS590F Software Reliability What is Software Defect Analysis  Given a software program, with or without.
1 SOFTWARE QUALITY ASSURANCE Basic Principles. 2 Requirements System Design Detailed Design Implementation Installation & Testing Maintenance SW Quality:
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Types and Techniques of Software Testing
Expediting Programmer AWAREness of Anomalous Code Sarah E. Smith Laurie Williams Jun Xu November 11, 2005.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
111 Testing Overview CS 4311 Frank Tsui, Orland Karam, and Barbara Bernal, Essential of Software Engineering, 3rd edition, Jones & Bartett Learning. Sections.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
1. Topics to be discussed Introduction Objectives Testing Life Cycle Verification Vs Validation Testing Methodology Testing Levels 2.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 23, 2011.
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.
Instructor: Peter Clarke
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Cs498dm Software Testing Darko Marinov January 15, 2008.
Software Testing Testing types Testing strategy Testing principles.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Cs498dm Software Testing Darko Marinov January 22, 2008.
Lecture 3 Software Engineering Models (Cont.)
B. Fernández, D. Darvas, E. Blanco Formal methods appliedto PLC code verification Automation seminar CERN – IFAC (CEA) 02/06/2014.
Software testing Main issues: There are a great many testing techniques Often, only the final code is tested.
SYSC Software Validation, Verification and Testing1 SYSC 4101 – Software Validation, Verification and Testing Part II – Software Testing Overview.
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Cs498dm Software Testing Darko Marinov January 17, 2012.
Chapter 12: Software Inspection Omar Meqdadi SE 3860 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Testing. Today’s Topics Why Testing? Basic Definitions Kinds of Testing Test-driven Development Code Reviews (not testing) 1.
EE422C Software Design and Implementation II Vallath Nandakumar Fall 2015.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Test Case Designing UNIT - 2. Topics Test Requirement Analysis (example) Test Case Designing (sample discussion) Test Data Preparation (example) Test.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Introduction to Software Analysis CS Why Take This Course? Learn methods to improve software quality – reliability, security, performance, etc.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Whole Test Suite Generation. Abstract Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 24, 2010.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
SOFTWARE TESTING SOFTWARE TESTING Presented By, C.Jackulin Sugirtha-10mx15 R.Jeyaramar-10mx17K.Kanagalakshmi-10mx20J.A.Linda-10mx25P.B.Vahedha-10mx53.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Introduction to Software Testing Maili Markvardt.
CS 5150 Software Engineering Lecture 21 Reliability 2.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Testing Tutorial 7.
Cs498st Software Testing Tao Xie.
Software Testing Introduction CS 4501 / 6501 Software Testing
Chapter 8 – Software Testing
Verification and Testing
Verification and Validation Overview
Software engineering – 1
runtime verification Brief Overview Grigore Rosu
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
Information Systems Development
Software Engineering EE422C.
CS240: Advanced Programming Concepts
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 26, 2008.
Test Cases, Test Suites and Test Case management systems
Chapter 7 Software Testing.
Presentation transcript:

CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie

Overview Why look for bugs? What are bugs? Where they come from? How to detect them?

Some Costly “Bugs” NASA Mars space missions BMW airbag problems (1999) Priority inversion (2004) Different metric systems (1999) BMW airbag problems (1999) Recall of >15000 cars Ariane 5 crash (1996) Uncaught exception of numerical overflow http://www.youtube.com/watch?v=kYUrqdUyEpI Your own (in)famous example?

Economic Impact “The Economic Impact of Inadequate Infrastructure for Software Testing” NIST Report, May 2002 $59.5B annual cost of inadequate software testing infrastructure $22.2B annual potential cost reduction from feasible infrastructure improvements

Economic Impact – cont. Is Knight's $440 million glitch the costliest computer bug ever? http://money.cnn.com/2012/08/09/technology/knight-expensive-computer-bug/index.html

Terminology Anomaly Bug Crash Defect Error Failure, fault Glitch Hangup Incorrectness …

Dynamic vs. Static Incorrect (observed) behavior Failure Incorrect (unobserved) state Error, latent error Incorrect lines of code Fault, defect

“Bugs” in IEEE 610.12-1990 Fault Error Failure Incorrect lines of code Error Faults cause incorrect (unobserved) state Failure Errors cause incorrect (observed) behavior Not used consistently in literature!

Correctness Common (partial) properties Specific properties Segfaults, uncaught exceptions Resource leaks Data races, deadlocks Statistics based Specific properties Requirements Specification

Traditional Waterfall Model Requirements Analysis Design Checking Implementation Unit Testing Integration System Testing Maintenance Verification

Phases (1) Requirements Design Specify what the software should do Analysis: eliminate/reduce ambiguities, inconsistencies, and incompleteness Design Specify how the software should work Split software into modules, write specifications Checking: check conformance to requirements

Phases (2) Implementation Integration Maintenance Specify how the modules work Unit testing: test each module in isolation Integration Specify how the modules interact System testing: test module interactions Maintenance Evolve software as requirements change Verification: test changes, regression testing

Testing Effort Reported to be >50% of development cost [e.g., Beizer 1990] Microsoft: 75% time spent testing 50% testers who spend all time testing 50% developers who spend half time testing

When to Test The later a bug is found, the higher the cost Orders of magnitude increase in later phases Also the smaller chance of a proper fix Old saying: test often, test early New methodology: test-driven development (write tests before code)

Software is Complex Malleable Intangible Abstract Solves complex problems Interacts with other software and hardware Not continuous

Software Still Buggy Folklore: 1-10 (residual) bugs per 1000 nbnc lines of code (after testing) Consensus: total correctness impossible to achieve for (complex) software Risk-driven finding/elimination of bugs Focus on specific correctness properties

Approaches for Detecting Bugs Software testing Model checking (Static) program analysis

Software Testing Dynamic approach Run code for some inputs, check outputs Checks correctness for some executions Main questions Test-input generation Test-suite adequacy Test oracles

Other Testing Questions Maintenance Selection Minimization Prioritization Augmentation Evaluation Fault Characterization …

Model Checking Typically hybrid dynamic/static approach Checks correctness for all executions Some techniques Explicit-state model checking Symbolic model checking Abstraction-based model checking

Static Analysis Static approach Checks correctness for all executions Some techniques Abstract interpretation Dataflow analysis Verification-condition generation

Comparison Level of automation Type of bugs found Push-button vs. manual Type of bugs found Hard vs. easy to reproduce High vs. low probability Common vs. specific properties Type of bugs (not) found

Soundness and Completeness Do we detect all bugs? Impossible for dynamic analysis Are reported bugs real bugs? Easy for dynamic analysis Most practical techniques and tools are both unsound and incomplete! False positives False negatives

Analysis for Performance Static compiler analysis, profiling Must be sound Correctness of transformation: equivalence Improves execution time Programmer time is more important Programmer productivity Not only finding bugs

Combining Dynamic and Static Dynamic and static analyses equal in limit Dynamic: try exhaustively all possible inputs Static: model precisely every possible state Synergistic opportunities Static analysis can optimize dynamic analysis Dynamic analysis can focus static analysis More discussions than results

Current Status Testing remains the most widely used approach for finding bugs A lot of recent progress (within last decade) on model checking and static analysis Model checking: from hardware to software Static analysis: from sound to practical Vibrant research in the area Gap between research and practice

Topics Related to Finding Bugs How to eliminate bugs? Debugging How to prevent bugs? Programming language design Software development processes How to show absence of bugs? Theorem proving Model checking, program analysis