Regression Testing with its types

Slides:



Advertisements
Similar presentations
Analyzing Regression Test Selection Techniques
Advertisements

Test Yaodong Bi.
Regression Methodology Einat Ravid. Regression Testing - Definition  The selective retesting of a hardware system that has been modified to ensure that.
Copyright A. Andrews, 2003 Regression Testing Department of Computer Science.
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.
Software Quality Assurance Plan
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION REGRESSION TESTING Autumn 2011.
Documentation Testing
1 Software Testing and Quality Assurance Lecture 30 – Testing Systems.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Testing - an Overview September 10, What is it, Why do it? Testing is a set of activities aimed at validating that an attribute or capability.
Chapter 13 & 14 Software Testing Strategies and Techniques
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Commercial Database Applications Testing. Test Plan Testing Strategy Testing Planning Testing Design (covered in other modules) Unit Testing (covered.
CLEANROOM SOFTWARE ENGINEERING.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
© 2012 IBM Corporation Rational Insight | Back to Basis Series Chao Zhang Unit Testing.
Software Testing Life Cycle
CPIS 357 Software Quality & Testing
Software Systems Verification and Validation Laboratory Assignment 3 Integration, System, Regression, Acceptance Testing Assignment date: Lab 3 Delivery.
RUP Implementation and Testing
Teaching material for a course in Software Project Management & Software Engineering – part II.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Chapter 13: Regression Testing Omar Meqdadi SE 3860 Lecture 13 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
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.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
LOGO TESTING Team 8: 1.Nguyễn Hoàng Khánh 2.Dương Quốc Việt 3.Trang Thế Vinh.
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.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Testing JUnit Testing. Testing Testing can mean many different things It certainly includes running a completed program with various inputs It also includes.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
REGRESSION TESTING Software Quality Engineering NC Zunaira Tariq Bese 19B Software Quality Engineering NC Zunaira Tariq Bese 19B.
Software Testing and Quality Assurance Practical Considerations (1) 1.
MANAGEMENT INFORMATION SYSTEM
Applied Software Project Management SOFTWARE TESTING Applied Software Project Management 1.
Software Engineering (CSI 321)
Change Request Management
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Formal Specification.
Software Engineering (CSI 321)
Testing Tutorial 7.
Software Quality Assurance
Testing and Debugging PPT By :Dr. R. Mall.
Software Testing An Introduction.
Different Types of Testing
Software Testing Testing process, Design of test cases.
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Chapter 13 & 14 Software Testing Strategies and Techniques
IS442 Information Systems Engineering
UNIT-1 SOFTWARE TESTING FUNDAMENTALS
Software Project Planning &
Applied Software Implementation & Testing
Some Important Techniques For Regression Testing That You Must Know.
Scenario-based Regression Testing (SRT)
Testing and Test-Driven Development CSC 4700 Software Engineering
Fundamental Test Process
Software Test Automation and Tools
CS 1120: Computer Science II Software Life Cycle
Baisc Of Software Testing
Welcome to Corporate Training -1
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Department of Computer Science Regression Testing.
Lecture 06:Software Maintenance
Regression Testing.
CS 1120: Computer Science II Software Life Cycle
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

Regression Testing with its types

Regression Testing If a piece of Software is modified for any reason testing needs to be done to ensure that it works as specified and that it has not negatively impacted any functionality that it offered previously. This is known as Regression Testing. Regression testing is the practice of running an old test suite after each change to the system or after each bug fix to ensure that no new bug has been introduced due to the change or the bug fix. However, if only a few statements are changed, then the entire test suite need not be run - only those test cases that test the functions that are likely to be affected by the change need to be run.

Regression Testing Regression Testing attempts to verify: That the application works as specified even after the changes/additions/modification were made to it . The original functionality continues to work as specified even after changes/additions/modification to the software application The changes/additions/modification to the software application have not introduced any new bugs

When is Regression Testing necessary? Regression Testing plays an important role in any Scenario where a change has been made to a previously tested software code. Regression Testing is hence an important aspect in various Software Methodologies where software changes enhancements occur frequently. Any Software Development Project is invariably faced with requests for changing Design, code, features or all of them. Some Development Methodologies embrace change. For example ‘Extreme Programming’ Methodology advocates applying small incremental changes to the system based on the end user feedback. Each change implies more Regression Testing needs to be done to ensure that the System meets the Project Goals

Why is Regression Testing important? Any Software change can cause existing functionality to break. Changes to a Software component could impact dependent Components. It is commonly observed that a Software fix could cause other bugs. All this affects the quality and reliability of the system. Hence Regression Testing, since it aims to verify all this, is very important.

Making Regression Testing Cost Effective: Every time a change occurs one or more of the following scenarios may occur: - More Functionality may be added to the system. - More complexity may be added to the system. - New bugs may be introduced. - System may tend to become more and more fragile(Weak)with each change After the change the new functionality may have to be tested along with all the original functionality. With each change Regression Testing could become more and more costly. To make the Regression Testing Cost Effective and yet ensure good coverage one or more of the following techniques may be applied:

Making Regression Testing Cost Effective: Test Automation: If the Test cases are automated the test cases may be executed using scripts after each change is introduced in the system. The execution of test cases in this way helps eliminate oversight, human errors,. It may also result in faster and cheaper execution of Test cases. However there is cost involved in building the scripts. - Selective Testing: Some Teams choose execute the test cases selectively. They do not execute all the Test Cases during the Regression Testing. They test only what they decide is relevant. This helps reduce the Testing Time and Effort.

Regression Testing – What to Test? Since Regression Testing tends to verify the software application after a change has been made everything that may be impacted by the change should be tested during Regression Testing. Generally the following areas are covered during Regression Testing: Any functionality that was addressed by the change. Original Functionality of the system. Performance of the System after the change was introduced.

Regression Testing – How to Test? Like any other Testing Regression Testing Needs proper planning. For an Effective Regression Testing to be done the following ingredients are necessary: Create a Regression Test Plan: Test Plan identified Focus Areas, Strategy, Test Entry and Exit Criteria. It can also outline Testing Prerequisites, Responsibilities, etc. Create Test Cases: Test Cases that cover all the necessary areas are important. They describe what to Test, Steps needed to test, Inputs and Expected Outputs. Test Cases used for Regression Testing should specifically cover the functionality addressed by the change and all components affected by the change. The Regression Test case may also include the testing of the performance of the components and the application after the change(s) were done. Defect Tracking: As in all other Testing Levels and Types It is important Defects are tracked systematically, otherwise it undermines the Testing Effort.

Types of Regression Types of Regression Testing: We have following four types of regression testing techniques. 1) Corrective Regression Testing: Corrective regression testing applies when specifications are unmodified and test cases can be reused. 2) Progressive Regression Testing: Progressive regression testing applies when specifications are modified and new test cases must be designed. 3) The Retest-All Strategy: The retest-all strategy reuses all tests, but this strategy may waste time and resources due to execution of unnecessary tests. When the change to a system is minor, this strategy would be rather wasteful. 4) The Selective Strategy: The selective strategy uses a subset of the existing test cases to reduce the retesting cost. In this strategy, a test unit must be rerun if and only if any of the program entities, e.g. functions, variables etc., it covers have been changed. The challenge is to identify the dependencies between a test case and the program entities it covers.

The Selective Strategy Rothermel and Harrold suggested a typical selective regression testing process, which includes following steps. Step - 1: Identify affected software components after program, P, has been modified to P'. Step - 2: Select a subset of test cases, T', from an existing test suite, T that covers the software components that are affected by the modification. Step - 3: Test modified program P' with T' to establish the correctness of P' with respect to T'. Step - 4: Examine test results to identify failures. Step - 5: Identify and correct the fault(s) that caused a failure. Step 6. Update the test suite and test history for P'.

Selective Regression Testing Techniques Comparison among different Selective Regression Testing Techniques Following four criterions form a framework for evaluation of various selective regression testing techniques. 1) Inclusiveness: It measures the extent to which a technique chooses tests that will expose faults caused by program changes. 2) Precision: It measures the ability of a technique to avoid choosing tests that will not reveal the faults caused by the changes. 3) Efficiency: It measures the computational cost of a technique. 4) Generality: It measures the ability of a technique to handle different language constructs and testing applications.