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.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

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.
Formal Methods and Testing Goal: software reliability Use software engineering methodologies to develop the code. Use formal methods during code development.
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.
Lecture 8: Testing, Verification and Validation
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
1 Software Engineering Lecture 11 Software Testing.
Software Failure: Reasons Incorrect, missing, impossible requirements * Requirement validation. Incorrect specification * Specification verification. Faulty.
1 CODE TESTING Principles and Alternatives. 2 Testing - Basics goal - find errors –focus is the source code (executable system) –test team wants to achieve.
Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Chapter 13 & 14 Software Testing Strategies and Techniques
1 Joe Meehean. 2 Testing is the process of executing a program with the intent of finding errors. -Glenford Myers.
1 Functional Testing Motivation Example Basic Methods Timing: 30 minutes.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
System/Software Testing
Software Testing. Recap Software testing – Why do we do testing? – When it is done? – Who does it? Software testing process / phases in software testing.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
TESTING.
Managing the development and purchase of information systems (Part 1)
CMSC 345 Fall 2000 Unit Testing. The testing process.
EGR 2261 Unit 5 Control Structures II: Repetition  Read Malik, Chapter 5.  Homework #5 and Lab #5 due next week.  Quiz next week.
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.
1 Testing Course notes for CEN Outline  Introduction:  terminology and philosophy  Factors that influence testing  Testing techniques.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Errors And How to Handle Them. GIGO There is a saying in computer science: “Garbage in, garbage out.” Is this true, or is it just an excuse for bad programming?
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
CSE403 Software Engineering Autumn 2001 More Testing Gary Kimura Lecture #10 October 22, 2001.
Testing Testing Techniques to Design Tests. Testing:Example Problem: Find a mode and its frequency given an ordered list (array) of with one or more integer.
Black Box Testing Techniques Chapter 7. Black Box Testing Techniques Prepared by: Kris C. Calpotura, CoE, MSME, MIT  Introduction Introduction  Equivalence.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
INTRUDUCTION TO SOFTWARE TESTING TECHNIQUES BY PRADEEP I.
(1) Unit Testing and Test Planning CS2110: SW Development Methods These slides design for use in lab. They supplement more complete slides used in lecture.
Week 9 Data structures / collections. Vladimir Misic Week 9 Monday, 4:20:52 PM2 Data structures (informally:) By size: –Static (e.g. arrays)
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Testing Chapter 23 IB103 Week 12 (part 3). Verify that a complex (any) program works correctly, that the program meets specifications The chapter reviews.
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 Quality Assurance and Testing Fazal Rehman Shamil.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Chapter 1 The Phases of Software Development. Software Development Phases ● Specification of the task ● Design of a solution ● Implementation of solution.
CSC 395 – Software Engineering Lecture 27: White-Box Testing.
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.
Testing Tutorial 7.
Software Testing.
Rekayasa Perangkat Lunak Part-13
Chapter 13 & 14 Software Testing Strategies and Techniques
Types of Testing Visit to more Learning Resources.
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Lecture 09:Software 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.
Chapter 15 Debugging.
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.
CSE403 Software Engineering Autumn 2000 More Testing
CSE 1020:Software Development
Review of Previous Lesson
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:

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 in rooms and  The notes for the lectures are available online.  Additional handouts on OOD and things discussed last week and this week are available outside my office.

What is Testing?  Testing is the process of finding errors in the system implementation.  The intent of testing is to find problems with the system.

What is Debugging?  Debugging is the process of finding the source of errors and fixing such errors.  Testing is done before debugging.

Why Test?  The purpose of testing is to identify implementation errors before the product is shipped.  The errors may be:  Actual bugs in the code.  Incorrect implementation of the requirements or functional specifications. Misunderstandings Incomplete requirements or functional specifications.

What Testing is not  Testing is not a random process.  There is a rhyme and reason to the process.  Testing is not debugging.  Testing identifies the problems.  Debugging finds the location of a problem and fixes the problem.

Who is responsible for Testing?  Multiple people are responsible for testing a system.  Initially the programmers are responsible for testing their implementation but this is not systems testing.  Usually a testing team will perform the majority of the tests, particularly at the system level.  The customer will also test the entire system. Alpha and Beta testing.

Who is responsible for Debugging?  There is also a number of people who are responsible for debugging.  If there is a testing team responsible for testing the system, this team will also attempt to precisely identify the problem and report it to the appropriate programmer.  The programmer is responsible for determining the actual problem and repairing it.  The customer should not debug a system.

When does Testing Begin?  Testing begins during the implementation phase.  The programmer is responsible for testing their unit to ensure the code meets the design and functional specifications.  As multiple units become available and can be combined, system testing can begin by the testing team. It is not unusual for implementation and testing phases to overlap. This is particularly true with today’s shorter development cycles.

What is tested?  The system is tested by:  Units of the system. In object oriented programming the classes would be tested.  Related units of the system.  The entire system.

How are Tests Passed?  A system passes the tests if it produces results that are consistent with the functional specification and requirements.  The program does what it is supposed to do.  The program does not do anything it is not supposed to.

How are Tests Passed?  If any single unit test fails, then the entire system is not correct.  If all unit tests pass, then there is a good probability that the entire system will work together.

Types of Testing  Formal verification is a process that uses mathematical and logical assertions to prove that the program is correct.  Formal verification is difficult to do.

Types of Testing  Empirical testing is the process of generating test cases and running the tests to show that errors exist.  Empirical testing involves observing the results of using the system.  Empirical testing can only prove that an error exists. It can not prove that there are no errors.

Empirical Testing  There are two types of Empirical Testing.  White box testing: Requires access to the actual implementation code. Requires the development of test cases that will exercise each unit of the system, and possible “flows” through the system based upon the actual implementation. All statements, all decisions, all conditions, and all inputs. This type of testing is not very practical but sometimes it is required.

Empirical Testing  Methodologies that are used for White Box testing are: Statement coverage Decision coverage Condition coverage Decision/condition coverage Multiple-condition coverage

Empirical Testing  Black Box Testing: Typically a testing team develops use cases based upon the requirements and functional specification without looking at the actual implementation. Tests valid and invalid inputs but can not possibly test all inputs. Must determine what subset of inputs will sufficiently cover all inputs. You want to break the system, it is your job with Black Box Testing.

Empirical Testing  Methodologies for Black Box Testing: Equivalence partitioning: A set of inputs that are processed identically by the program Legal input values Numeric/non-numeric values Boundary Testing Error Guessing What is the difference between white box and black box testing?

Testing Statement Coverage  Statement coverage tests that each statement in the system is executed at least once by the test data.  Testing the statement coverage is necessary but is not sufficient.

Testing Statement Coverage  What problems can you find? if (a > 1) && (b == 2){ x = x / a; } if (a == 2) || ( x > 1) { x++; } Assume that a = 2, b = 2, and that x is properly defined and initialized.

Testing Decision Coverage  Testing for Decision Coverage requires testing every decision for both a true and false outcome.

Testing Decision Coverage if (a > 1) && (b == 2){ x = x / a; } if (a == 2) || ( x > 1) { x++; } Assume a = 2, b = 2, x > 1 Assume a = 1, b = 2, x = 0

Testing Decision Coverage  Testing for Decision Coverage also tests for statement coverage in modern languages.  This is not true of languages that have multiple entry points, contain self- modifying code, etc.

Testing Condition Coverage  Testing Condition Coverage requires testing each possible outcome for every condition within a decision at least once.  The Decision Coverage testing only covered half of the cases in the previous example. The cases are: a > 1 (1) b == 2 (2) a == 2 (3) x > 1 (4)

Testing Condition Coverage if (a > 1) && (b == 2){ x = x / a; } if (a == 2) || ( x > 1) { x++; } Assume a = 2, b = 2, x = 4 Assume a = 1, b = 3, x = 1

Multiple-Condition Coverage  Testing for Multiple-condition coverage requires test cases that test all possible combinations of condition outcomes for every decision tested.  This type of testing will generate many test cases.

Debugging  Debugging should be a formal process of attempting to narrow down the location of the problem and then identifying the problem.  Debugging does not mean simply changing code until the problem goes away.  Debugging requires thinking about what might be the problem.

Debugging  Methods of determining the location of a bug:  Use extra output statements in the program to trace the program execution.  Use a debugger to trace the program execution.  Possibly write special test code to exercise parts of the program in special ways that will allow you to better understand the error.

Debugging  Potentially test a certain range of values to see which ones fail.  Attempt to eliminate parts of the program as the problem, thus narrowing your search.  Check that the data is valid.  Many times, the location where you see the first instance of the bug is not the source of the bug.

Fixing Bugs  Steps for fixing bugs.  Fix only one bug at a time and then rerun the same exact tests. Changing multiple things makes id difficult to identify which change caused the behavior change.  If the problem appears to be fixed, still run a full test suite to ensure the “fix” did not break something else.

General Rules to follow  Test your code as your write it:  Test the code boundaries.  Test pre- and post- conditions. The necessary or expected properties before and after the code is executed.  Use assertions (if you are programming in C or C++)  Program defensively by adding code to handle the “can not happen” cases.  Check error returns

General Rules to Follow  Steps for Systematic Testing  Test incrementally by writing part of the system, test it, then write some more code, test that code, etc.  Test the simple parts of the system first.  Know what output you are expecting.  Compare independent implementations of a library or program provide the same answers.

General Rules  Ensure that testing covers every statement of the program. Every line of the program should be exercised by at least one test.