Verification and Testing

Slides:



Advertisements
Similar presentations
Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Advertisements

Lecture 8: Testing, Verification and Validation
Testing and Quality Assurance
Software Failure: Reasons Incorrect, missing, impossible requirements * Requirement validation. Incorrect specification * Specification verification. Faulty.
INSE - Lecture 11 Testing u Verification testing vs pursuit testing u Philosophy of testing u Stages of testing u Methods of testing u Design of test data.
Program Testing Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Illinois Institute of Technology
1 Software Testing and Quality Assurance Lecture 1 Software Verification & Validation.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
CCSB223/SAD/CHAPTER141 Chapter 14 Implementing and Maintaining the System.
Slide 6.1 CHAPTER 6 TESTING. Slide 6.2 Overview l Quality issues l Nonexecution-based testing l Execution-based testing l What should be tested? l Testing.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
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.
Software testing basic. Main contents  Why is testing necessary?  What is testing?  Test Design techniques  Test level  Test type  How to write.
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.
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
SYSC Software Validation, Verification and Testing1 SYSC 4101 – Software Validation, Verification and Testing Part II – Software Testing Overview.
Jump to first page (C) 1998, Arun Lakhotia 1 Quality Assurance: Reviews and Walkthroughs Arun Lakhotia University of Southwestern Louisiana Po Box
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
A13. Testing Intro Data Structures & SE Computer Science Dept Va Tech Aug., 2001 © Barnette ND, McQuain WD 1 Levels of Verification The Unreachable.
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Engineering Saeed Akhtar The University of Lahore.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Software Testing Mehwish Shafiq. Testing Testing is carried out to validate and verify the piece developed in order to give user a confidence to use reliable.
TESTING FUNDAMENTALS BY K.KARTHIKEYAN.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Static and Integration Testing. Static Testing vs Dynamic Testing  To find defects  This testing includes verification process  without executing.
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.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
CS223: Software Engineering Lecture 25: Software Testing.
Testing Integral part of the software development process.
Software Testing. Software Quality Assurance Overarching term Time consuming (40% to 90% of dev effort) Includes –Verification: Building the product right,
Software Testing Strategies for building test group
Software Testing.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Testing Tutorial 7.
Rekayasa Perangkat Lunak Part-13
C++ Plus Data Structures
Chapter 9, Testing.
SUCHITA M.DAKI TYIT(sem v)
Coupling and Cohesion 1.
Verification and Validation Overview
Verification & Validation
Software testing strategies 2
Lecture 09:Software Testing
Verification and Validation Unit Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Static Testing Static testing refers to testing that takes place without Execution - examining and reviewing it. Dynamic Testing Dynamic testing is what.
Baisc Of Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
CSE 1020:Software Development
Software Development Chapter 1.
Chapter 7 Software Testing.
Software Testing Strategies
Presentation transcript:

Verification and Testing

Assignment Read Ghezzi Chapter 6 through the end of 6.3

Methods for Verifying Software Testing Inspections and Reviews Static checking Performance analysis Reliability analysis Symbolic execution Model checking Formal proofs User studies

Methods for Verifying Qualities Testing Inspections and Reviews Static checking Performance analysis Reliability analysis Symbolic execution Model checking Formal proofs User studies

Motivation The National Institute for Standards and Technology (NIST) reported (2003) Software faults cost $59.5b/year to US market $22.2b could be saved with relatively simple testing practices – and with an expected reduction of Number of faults Development costs Time to market Maintenance costs

Testing -- Definition The process of dynamically exercising a program, to determine whether it meets specific quality requirements such as conformance to specifications, performance, reliability, or robustness. We’ll concentrate here on conformance to specifications.

Testing Basics P is a program, D is the domain of inputs, R is the range of outputs, S is the specification for P P is correct for t in D if P(t) = S(t) A t in D is called a test case A finite subset T of D is called a test suite or test set Testing is all about selecting and applying T, and checking the results P t D R S

Testing Objectives (Informal) Tests are intended to uncover faults in operating software Good test cases have high probabilities of finding an as yet undiscovered fault Successful tests cause program failures, i.e. find undiscovered faults Successful test suites expose lots of faults Cost limits the set of test cases that can be developed, so any statement about testing objectives should involve cost-effectiveness

Testing Terminology Failure: externally visible incorrect program behavior Fault: incorrect portions of code (may involve missing code as well as incorrect code) Error: something bad a programmer did Bug: informal term for fault/failure Debugging: given a failure, find the fault that causes it Testing: find failures Oracle: “device” or “procedure” for determining correctness of output

Testing Versus Static Checking Testing (dynamic) “Run and see” Run tests to see whether failures occur Underlying each failure there are one or more faults to be fixed Static checking No program execution Examples: Inspections Walkthroughs Static Analysis

Faults and Failures Consider the code: SQUARE(z) y = 2 * z print y What’s the fault? Failure? Error? Coincidental correctness: when a faulty program happens to produce correct output on certain inputs that do execute the faulty statement.

Faults and Failures Consider the code fragment: … if ( y >= 2 ) x = 1 / (2-y) endif print y What’s the fault? Failure? Error? Compare this to the prior fault for detection difficulty!

Types of Testing Unit (module) -- individual “units” Integration – groups of units System – software with hardware Acceptance – am I satisfied? Regression – after changes Beta – at specific user sites Where is the most time spent?

Software Development Phases & Testing Develop test plan and system tests; perform technical review Develop integration tests; perform technical review Develop and run unit tests; perform technical review Run integration tests Run system tests Run regression tests Requirements Analysis Phase: Design Phase: Implementation Phase: Integration Phase: Maintenance Phase:

More Terminology Test Case: set of input data (provided at a specific system state) and expected output Test Suite: collection of test cases Test Driver: program written to test a unit module Test Stub: module written to allow testing of a higher level component Test Harness: test environment to run programs with stubs and drivers and check the results Test Plan: description of a testing process including overall approach and specific tests

The “Test Case Problem”: A More Formal Treatment D R S P is a program, D is the domain of inputs, R is the range of outputs, S is the specification for P Choose test suite T subset D s.t. for each fault in P, there exists t member T such that P(t) ≠ S(t) For every P and D such a test suite exists, but there is no algorithm for computing it.

What are the Implications of This? What really is our goal, in testing? It isn’t “achieving correctness” Find “as many faults as we can”? Test “for as long as we can”? Ensure that the probability of failure is sufficiently low? Achieve “sufficient confidence” in the system? How do we define and quantify these things?