Debugging, Alpha & Beta Testing.

Slides:



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

Testing Relational Database
Software Testing Strategies
Lecture 8: Testing, Verification and Validation
Testing (1) Let’s look at : Principles of testing The testing process
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 TESTING Przygotował: Marcin Lubawski. 2 Testing Process AnalyseDesignMaintainBuildTestInstal Software testing strategies Verification Validation.
Programming Types of Testing.
Testing Important to guarantee quality of software
Documentation Testing
Debugging By: Issam Benstitou Khouloud Mrabet Samir NAQOS supervised by Dr Kettani D.
Testing an individual module
Chapter Eighteen Software Testing Strategies
Software Engineering Lecture 13 Software Testing Strategies 1.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 24 Slide 1 Critical Systems Validation 1.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 13b: Software Testing Strategies Software Engineering: A Practitioner’s Approach, 6/e Chapter.
TESTING.
Chapter 2 The process Process, Methods, and Tools
Software Testing Testing types Testing strategy Testing principles.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
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.
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
Chapter SIX Implementation, Testing and Pragmatics Making it a reality.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
CS 360 Lecture 15.  A strategic approach to testing  Functionality meets the requirements that guided its design.  Responds correctly to all types.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
1 Lecture 15: Chapter 19 Testing Object-Oriented Applications Slide Set to accompany Software Engineering: A Practitioner’s Approach, 7/e by Roger S. Pressman.
Software Quality Assurance and Testing Fazal Rehman Shamil.
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.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Software Testing Strategies for building test group
Group mambers: Maira Naseer (BCS ).
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Software Engineering (CSI 321)
Software Testing.
Testing More In CS430.
Testing and Debugging PPT By :Dr. R. Mall.
SOFTWARE TESTING OVERVIEW
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Levels Of Testing and Special Tests
IS442 Information Systems Engineering
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software testing strategies 1
Introduction to Software Testing
Chapter 24 Testing Object-Oriented Applications
Lecture 09:Software Testing
Verification and Validation Unit Testing
Critical Systems Validation
Software engineering -1
Chapter 19 Testing Object-Oriented Applications
Chapter 10 – Software Testing
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.
System Testing.
Chapter 19 Testing Object-Oriented Applications
Software Engineering Lecture 17.
Chapter 17 Software Testing Strategies.
Software Testing Strategies
Presented by KARRI GOVINDA RAO ,
Presentation transcript:

Debugging, Alpha & Beta Testing

Debugging Process Debugging occurs as a consequence of successful testing, debugging is the process that results in the removal of the error.

Debugging Process debugging process begins with the execution of a test case. Results are assessed and a lack of correspondence between expected and actual performance is encountered. In many cases the error is being caused by yet another hidden cause, debugging process attempts to match symptom with cause, thereby leading to error correction. The debugging process will always have one of two outcomes: the cause will be found and corrected, the cause will not be found. In the latter case, the person performing debugging may suspect a cause, design a test case to help validate that suspicion, and work toward error correction in an iterative fashion. Why is debugging so difficult? The answer is the human psychology.

Debugging Process There are a few characteristics of bugs provide some clues: The symptom and the cause may be geographically remote. That is, the symptom may appear in one part of a program, while the cause may actually be located at a site that is far away. The symptom may disappear (temporarily) when another error is corrected. The symptom may actually be caused by nonerrors (e.g., round-off inaccuracies). The symptom may be caused by human error that is not easily traced. The symptom may be a result of timing problems, rather than processing problems. It may be difficult to accurately reproduce input conditions (e.g., a real-time application in which input ordering is indeterminate). The symptom may be intermittent. This is particularly common in embedded systems that couple hardware and software inextricably. The symptom may be due to causes that are distributed across a number of tasks running on different processors

Debugging Approaches Regardless of the approach that is taken, debugging has one overriding objective: to find and correct the cause of a software error. The objective is realized by a combination of systematic evaluation, intuition, and luck. The basis of debugging is to locate the problem's source [the cause] by binary partitioning, through working hypotheses that predict new values to be examined. In general, three categories for debugging approaches may be proposed : Brute force, Backtracking, Cause elimination.

Debugging Approaches 1) Brute Force: It is most common and least efficient. We apply brute force debugging methods when all else fails. Using a "let the computer find the error" philosophy, memory dumps are taken, run-time traces are invoked, and the program is loaded with WRITE statements. It can lead us to a clue that can lead us to the cause of an error. 2) Backtracking: is common and used in small programs, Beginning at the site where a symptom has been uncovered, the source code is traced backward (manually) until the site of the cause is found. Unfortunately, as the number of source lines increases, the number of potential backward paths may become unmanageably large. 3) Cause Elimination: Introduces the concept of binary partitioning, Data related to the error occurrence are organized to isolate potential causes A "cause hypothesis" is devised and the aforementioned data are used to prove or disprove the hypothesis. Alternatively, a list of all possible causes is developed and tests are conducted to eliminate each.

Debugging Approaches Once a bug has been found, it must be corrected. Van Vleck suggests three simple questions that every software engineer should ask before making the "correction" that removes the cause of a bug. Is the cause of the bug reproduced in another part of the program? In many situations, a program defect is caused by an erroneous pattern of logic that may be reproduced elsewhere. Explicit consideration of the logical pattern may result in the discovery of other errors. 2) What "next bug" might be introduced by the fix I'm about to make? Before the correction is made, the source code (or, better, the design) should be evaluated to assess coupling of logic and data structures. If the correction is to be made in a highly coupled section of the program, special care must be taken when any change is made. 3) What could we have done to prevent this bug in the first place? This question is the first step toward establishing a statistical software quality assurance approach. If we correct the process as well as the product, the bug will be removed from the current program and may be eliminated from all future programs.

Validation Testing At the culmination of integration testing, software is completely assembled as a package, interfacing errors have been uncovered and corrected, and a final series of software tests—validation testing—may begin. validation succeeds when software functions in a manner that can be reasonably expected by the customer. Reasonable expectations are defined in the Software Requirements Specification. The specification contains a section called Validation Criteria. Validation Test Criteria: Software validation is achieved through a series of black-box tests that demonstrate conformity with requirements. After each validation test case has been conducted, one of two possible conditions exist: The function or performance characteristics conform to specification and are accepted. A deviation from specification is uncovered and a deficiency list is created.

Validation Test Criteria Deviation or error discovered at this stage in a project can rarely be corrected prior to scheduled delivery. It is often necessary to negotiate with the customer to establish a method for resolving deficiencies. Configuration Review: An important element of the validation process is a configuration review. The intent of the review is to ensure that all elements of the software configuration have been properly developed, are catalogued, and have the necessary detail to bolster the support phase of the software life cycle.

Alpha and Beta Testing It is virtually impossible for a software developer to foresee how the customer will really use a program. Instructions for use may be misinterpreted; Strange combinations of data may be regularly used. output that seemed clear to the tester may be unintelligible to a user in the field. When custom software is built for one customer, a series of acceptance tests are conducted to enable the customer to validate all requirements. Tests are conducted by the end user rather than software engineers, an acceptance test can range from an informal "test drive" to a planned and systematically executed series of tests. Acceptance testing can be conducted over a period of weeks or months, thereby uncovering cumulative errors that might degrade the system over time.

Alpha and Beta Testing If software is developed as a product to be used by many customers, it is impractical to perform formal acceptance tests with each one. So Most software product builders use a process called alpha and beta testing to uncover errors that only the end-user seems able to find. Alpha Testing: The alpha test is conducted at the developer's site by a customer. The software is used in a natural setting with the developer and recording errors and usage problems. Alpha tests are conducted in a controlled environment.

Alpha and Beta Testing Beta Testing: The beta test is conducted at one or more customer sites by the end-user of the software. Unlike alpha testing, the developer is generally not present. Therefore, the beta test is a "live" application of the software in an environment that cannot be controlled by the developer. The customer records all problems (real or imagined) that are encountered during beta testing and reports these to the developer at regular intervals. As a result of problems reported during beta tests, software engineers make modifications and then prepare for release of the software product to the entire customer base.

Alpha Vs. Beta Testing Alpha Testing: Testing a software product which is not the final version. This software does not have to necessarily contain the full functionality required for an application however core functionality to accept input an generate output is required. Alpha testing is done by client side people in development environment. In Alpha testing client comes to testing environment and will do testing while 80 of the application has been developed and tested Beta Testing: Beta Testing is last stage of testing where a product is sent outside the company or offer the product for free trial download. testing is done by client side people in real time environment. In Beta testing complete application package will be installed in client environment (ie) Real time environment and will do testing in the application which is completed (100 ) development and testing