Software Failure: Reasons Incorrect, missing, impossible requirements * Requirement validation. Incorrect specification * Specification verification. Faulty.

Slides:



Advertisements
Similar presentations
Lecture 2: testing Book: Chapter 9 What is testing? Testing is not showing that there are no errors in the program. Testing cannot show that the program.
Advertisements

Testing and Quality Assurance
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
1 Software Engineering Lecture 11 Software Testing.
November 2005J. B. Wordsworth: J5DAMQVT1 Design and Method Quality, Verification, and Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Illinois Institute of Technology
Testing an individual module
Outline Types of errors Component Testing Testing Strategy
Lecturer: Dr. AJ Bieszczad Chapter 87-1 How does software fail? Wrong requirement: not what the customer wants Missing requirement Requirement impossible.
OHT 9.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 Chapter 9.3 Software Testing Strategies.
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.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
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.
BY: GARIMA GUPTA MCA FINAL YEAR WHAT IS SOFTWARE TESTING ? SOFTWARE TESTING IS THE PROCESS OF EXECUTING PROGRAMS OR SYSTEM WITH THE INTENT.
CMSC 345 Fall 2000 Unit Testing. The testing process.
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 Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
1 Program Correctness CIS 375 Bruce R. Maxim UM-Dearborn.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Software Testing Testing types Testing strategy Testing principles.
Testing Methods Carl Smith National Certificate Year 2 – Unit 4.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
The Software Development Process
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.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
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 the Programs CS4311 – Spring 2008 Software engineering, theory and practice, S. Pfleeger, Prentice Hall ed. Object-oriented and classical software.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Chapter 8 Testing the Programs 8.1 Software Faults and Failures 1. Introduction  faults: A: definition: the problem caused by error B: cause: X: the software.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
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.
Software Engineering TESTING Compiled by: Dr. S. Prem Kumar
Software Testing.
Rekayasa Perangkat Lunak Part-13
Software Testing.
Software Testing Techniques
Verification and Testing
Some Simple Definitions for Testing
Chapter 13 & 14 Software Testing Strategies and Techniques
Types of Testing Visit to more Learning Resources.
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software testing strategies 2
Software Testing (Lecture 11-a)
Lecture 09:Software Testing
Chapter 8 Testing the Programs Shari L. Pfleeger Joann M. Atlee 4th Edition.
Verification and Validation Unit Testing
Software testing.
Chapter 10 – 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.
Software Testing “If you can’t test it, you can’t design it”
Software Development Chapter 1.
Chapter 10: Testing and Quality Assurance
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

Software Failure: Reasons Incorrect, missing, impossible requirements * Requirement validation. Incorrect specification * Specification verification. Faulty system design * Design reviews. Faulty software code * Unit testing. Faulty hardware infrastructure

Human Factor Developers, analysts and users make ‘simple’ mistakes. These mistakes can be uncovered and corrected with the help review meetings, verification, validation and testing process. However, mistakes made due to miscommunication or misunderstanding are much harder to notice.

Fault Types Algorithmic Incorrect process steps Computation Incorrect formulas Precision Rounding errors, small data types Documentation Incorrect interface/API docs leads to program errors Load / Capacity Timing / Synchronization Performance

Fault Distribution (HP)

Test Process Organization

Test Types Unit testing: verifies that the component functions property (in a controlled environment) with the expected input. Integration testing: ensures that the system components work together as they are supposed. Function testing: determines if the functions described in the requirement are performed. Successful function test yields validated system. Acceptance testing: performed by customers, system is checked against the requirements. Deployment testing: the software is tested again once it is deployed in a new (clean) environment.

Views of the Test Objects Black Box: internal structure is unknown - Difficult to test comprehensively White Box/Clear Box: internal structure is known - Possible to devise specific & boundary tests

Code Examination Code Review Independent / external reviewers examine and critique the code Code Walkthrough You walk the reviewers through your code Code Inspection checks the code against predetermined list of concerns + Can uncover up to 90% of faults! ! It is best to use well prepared reviewers that are very well familiar with the product. - Does not uncover requirement or design faults.

Formal Proof Techniques 1.Write assertions that describes code’s input and output conditions. These should be logical statements. 2.Draw a flow chart diagram of the code. 3.Using the flow chart and assertions devise a series of theorems that trace logical transformations performed by the code for various paths through the flow chart. 4.Prove the theorems. + Develops understanding of the code + Ensures algorithm correctness - Difficult to set up and carry out the proofs - Impractical / impossible for complex algorithms

Choosing Test Cases Ideally we want to test every possible input. When the inputs are limitless or impractical to enumerate we need to separate data into the equivalence classes (when the object is white box). Then it would be sufficient to test data drawn from the equivalence class. Equivalence classes need to be picked out such that they cover all branches and switches in the code in order to maximize the code coverage. If the code under investigation maintains state we must devise a sequence of tests such that all states of the finite state machine are tried. We also need to test boundary conditions as well as invalid input.

Test Thoroughness Approaches Statement testing: every statement has to be tested. Branch testing: every brunch must be process in both directions. Path testing: every distinct path through the code must be tested. Definition-use testing: every path from every definition (variable) to every use of that definition must be tested.

Unit Testing Comparison

Read Chapter 8 from the white book.