Software Testing An Introduction.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software Testing Techniques
Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves.
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.
Test process essentials Riitta Viitamäki,
Chapter 14 Testing Tactics
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Software Testing Prasad G.
Introduction to Software Testing
Software Testing & Strategies
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Black Box Software Testing
Software Reliability Growth. Three Questions Frequently Asked Just Prior to Release 1.Is this version of software ready for release (however “ready” is.
Extreme Programming Software Development Written by Sanjay Kumar.
Dillon: CSE470: QUALITY ASSURANCE1 Software Qualities Maintainer User Customer Good Documentation Readable Code Good Design Low Cost Portability Increased.
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.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
CMSC 345 Fall 2000 Unit Testing. The testing process.
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.
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Software Engineering Lecture 14: Testing Techniques and Strategies.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Chapter 8 Testing. Principles of Object-Oriented Testing Å Object-oriented systems are built out of two or more interrelated objects Å Determining the.
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.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
08120: Programming 2: SoftwareTesting and Debugging Dr Mike Brayshaw.
Software Testing. System/Software Testing Error detection and removal determine level of reliability well-planned procedure - Test Cases done by independent.
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.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
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.
CS223: Software Engineering Lecture 25: Software Testing.
Testing Integral part of the software development process.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVIII. Software Testing.
Software Engineering Principle (SEP521)
Programų testuojamumas
Group mambers: Maira Naseer (BCS ).
Module A Fundamentals of Testing
Regression Testing with its types
Testing Tutorial 7.
Software Testing.
SOFTWARE TESTING OVERVIEW
Software Testing Techniques
Software Engineering (CSI 321)
Software Testing Testing process, Design of test cases.
Software engineering – 1
Some Simple Definitions for Testing
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
UNIT-IV ECS-602 Software engineering PART-I
Introduction to Software Testing
Software testing.
CS240: Advanced Programming Concepts
Chapter 10 – Software Testing
Baisc Of Software Testing
Welcome to Corporate Training -1
Software Testing.
Test Cases, Test Suites and Test Case management systems
© Oxford University Press All rights reserved.
Chapter 7 Software Testing.
08120: Programming 2: SoftwareTesting and Debugging
Presented by KARRI GOVINDA RAO ,
Presentation transcript:

Software Testing An Introduction

Software Testing Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation. Generally 30 to 40 percent of Project cost is incurred in Testing only. It may increase five times in case of software like, flight control, nuclear reactor monitoring . Its goal is to design a series of test cases that have a high likelihood of finding errors— but how? That’s where software testing techniques enter the picture. Only Review and SQA cannot uncover all the errors, Every time the program is executed, the customer tests it! Therefore, you have to execute the program before it gets to the customer with the specific intent of finding and removing all errors. Testing is the one step in the software process that could be viewed (psychologically, at least) as destructive rather than constructive.

Software Testing Testing requires that the developer discard preconceived notions of the "correctness" of software just developed and overcome a conflict of interest that occurs when errors are uncovered. There's a myth that if we were really good at programming, there would be no bugs to catch. Testing Objectives: Testing is a process of executing a program with the intent of finding an error. A good test case is one that has a high probability of finding an as-yet-undiscovered error. A successful test is one that uncovers an as-yet-undiscovered error. Our objective is to design tests that systematically uncover different classes of errors and to do so with a minimum amount of time and effort. Another advantages is that we come to know that software is working as per the specifications. Also data collected as testing is conducted provide a good indication of software reliability and some indication of software quality as a whole. Testing can not show the absence of errors but only presence.

Software Testing Principles All tests should be traceable to customer requirements: coz most severe defects are those that fail to meet the software requirement. Tests should be planned long before testing begins: Planning to be done by requirement model is ready, detailed definition of test when design model is ready. The Pareto principle applies to software testing: that 80 percent of all errors uncovered during testing will likely be traceable to 20 percent of all program components. Then these components must be isolated and thoroughly tested. Testing should begin “in the small” and progress toward testing “in the large.”: i.e. Unit testing to System Testing. Exhaustive testing is not possible: it is impossible to execute every combination of paths during testing. 6. To be most effective, testing should be conducted by an independent third party:

Software Testability Software testability is simply how easily [a computer program] can be tested. Sometimes it is discussed by the programmers with the people going to test the software, that how to increase the testability. The Checklist for testability: Operability. "The better it works, the more efficiently it can be tested.“ Observability. "What you see is what you test.“:If you can see the various states of the software, the code etc. Controllability. "The better we can control the software, the more the testing can be automated and optimized.” Decomposability. "By controlling the scope of testing, we can more quickly isolate problems and perform smarter retesting.“ Simplicity. "The less there is to test, the more quickly we can test it.“ Stability. "The fewer the changes, the fewer the disruptions to testing.“ Understandability. "The more information we have, the smarter we will test."

Features of Good Test A good test has a high probability of finding an error. A good test is not redundant. Testing time and resources are limited. There is no point in conducting a test that has the same purpose as another test. Every test should have a different purpose. A good test should be “best of breed” .In a group of tests that have a similar intent, time and resource limitations may mitigate toward the execution of only a subset of these tests. 4. A good test should be neither too simple nor too complex. 6

Error, Fault, and Failure Error: It is used in two different ways: one is the difference between the actual output of the software and the correct output. It is also used to refer to human action that results in software containing a defect or fault. Fault: is a condition that causes a system to fail in performing its required function, it is synonymous with the term bug. It should be noted that the only faults that a software has are "design faults"; there is no wear and tear in software. Failure: is the inability of a system or component to perform a required function according to its specifications. Failure is produced due to a fault. There can be no general definition of failure, and it is up to the project manager or end user to decide what will be considered a failure for reliability purposes. 7

Some important Implications Presence of an error (in the state) implies that a failure must have occurred. observance of a failure implies that a fault must be present in the system. The presence of a fault does not imply that a failure must occur. Normally during testing we check the behavior of the software, and we detect the faults, due to this reliance on behaviour observation, testing can only reveal the presence of faults, not their absence. If there is no failure we cannot say that there is no fault. This makes "when to stop testing" one of the hard issues in testing. Once the faults have been found expensive task of debugging is to be performed. 8

Test Oracles Test oracle: is a mechanism, different from the program itself, that can be used to check the correctness of the output of the program for the test cases. Often the oracles are human beings, who can make mistakes. Generally oracles check the errors by considering the specifications, But if the specifications have not been properly defined then failures are not properly detected. 9

Test Cases and Test Criteria Test cases are that which means that we can check the faults of the software for the various kind of inputs. Ideally successful execution of all test cases implies that there are no errors in the program. Each test case requires more money, effort needed to generate test cases. Hence less no. of test cases are designed. Main goals of testing are: Minimize the no. of test cases, and maximize no. of errors. Ideal set of test cases is one that includes all the possible inputs to the program. This is often called exhaustive testing, However it is infeasible. 10

Psychology of Testing There are a number of heuristics and rules of thumb for deciding the test cases, selecting test cases is still a creative activity that relies on the ingenuity of the tester. Hence the Psychology of the Person testing is important. Hence we can define testing as the process of executing a program with the intent of finding errors. 11