Midterm Wednesday Oct. 27, 7pm, room 142

Similar documents
Regression Tes+ng. Midterm Wednesday Oct. 26, 7:00-8:30pm Room 142

Lecture 21. Regression Testing Path Spectra. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

A METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH

Dr. N. Sureshkumar Principal Velammal College of Engineering and Technology Madurai, Tamilnadu, India

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL

An Empirical Evaluation of Test Adequacy Criteria for Event-Driven Programs

A Lightweight Process for Change Identification and Regression Test Selection in Using COTS Components

Improving Test Suites via Operational Abstraction

Regression Test Selection for Black-box Dynamic Link Library Components

Software Testing TEST CASE SELECTION AND ADEQUECY TEST EXECUTION

An Empirical Study of Regression Test Selection Techniques

Compatibility and regression testing of COTS-component-based software

SFWR ENG 3S03: Software Testing

An Integrated Regression Testing Framework to Multi-Threaded Java Programs

Chapter 3. Requirement Based System Test Case Prioritization of New and Regression Test Cases. 3.1 Introduction

Software Quality Assurance (SQA) Software Quality Assurance

ASSESSING INVARIANT MINING TECHNIQUES FOR CLOUD-BASED UTILITY COMPUTING SYSTEMS

Efficient Regression Test Model for Object Oriented Software

Test Suite Reduction with Selective Redundancy

Review of Regression Test Case Selection Techniques

Improving Test Suites via Operational Abstraction

Scaling Regression Testing to Large Software Systems

Empirical Studies of Test Case Prioritization in a JUnit Testing Environment

Programming Languages and Techniques (CIS120)

Facts About Testing. Cost/benefit. Reveal faults. Bottom-up. Testing takes more than 50% of the total cost of software development

Nikita Goel, Madhuri Sharma

TO facilitate the testing of evolving software, a test suite is

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

BRANCH COVERAGE BASED TEST CASE PRIORITIZATION

A Controlled Experiment Assessing Test Case Prioritization Techniques via Mutation Faults

PRIORITIZE REGRESSION TEST CASES

Test Factoring: Focusing test suites on the task at hand

Getting those Bugs Out --Software Testing

Topics in Software Testing

Exploring Econometric Model Selection Using Sensitivity Analysis

2. Background and Related Work This section provides prior work in testing of software component, static binary code analysis, and firewall analysis.

Extended Program Invariants: Applications in Testing and Fault Localization

Effective Test Case Prioritization Technique in Web Application for Regression Test Suite

A Study of Effective Regression Testing

Enterprise Miner Tutorial Notes 2 1

Exploiting Synergy Between Testing and Inferred Partial Specifications

Regression Testing in Research And Practice

Improving software testing cost-effectiveness through dynamic partitioning

A Test Suite Reduction Method based on Test Requirement Partition

MTAT : Software Testing

Chianti: A Tool for Change Impact Analysis of Java Programs

Regression Test Case Prioritization Based on Historical Test Case Performance Data

TEST CASE PRIORITIZATION ALGORITHM BASED UPON MODIFIED CODE COVERAGE IN REGRESSION TESTING

Integration Testing. Conrad Hughes School of Informatics. Slides thanks to Stuart Anderson

Three General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams

Scalable Statistical Bug Isolation

ARTICLE IN PRESS. The Journal of Systems and Software xxx (2011) xxx xxx. Contents lists available at ScienceDirect

INTRODUCTION TO SOFTWARE ENGINEERING

Computer Science and Software Engineering University of Wisconsin - Platteville 9-Software Testing, Verification and Validation

Integration Testing. Unit Test vs Integration Testing 1. Unit Testing vs Integration Testing 2. Unit testing: isolation, stub/mock objects

MINTS: A General Framework and Tool for Supporting Test-suite Minimization

Chapter 9. Software Testing

Decision Trees Dr. G. Bharadwaja Kumar VIT Chennai

Class 17. Discussion. Mutation analysis and testing. Problem Set 7 discuss Readings

Integrating Customized Test Requirements with Traditional Requirements in Web Application Testing

Information Systems. Software Engineering. MCQ - Part 2

Software Testing. Massimo Felici IF

Program Analysis. Program Analysis

On the Use of Mutation Faults in Empirical Assessments of Test Case Prioritization Techniques

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Model Based Test Case Prioritization for Testing Component Dependency in CBSD Using UML Sequence Diagram

Related reading: Effectively Prioritizing Tests in Development Environment Introduction to Software Engineering Jonathan Aldrich

Lecture 15 Software Testing

CMPSCI 521/621 Homework 2 Solutions

CSE 158. Web Mining and Recommender Systems. Midterm recap

COVERAGE BASED TEST SUITE AUGMENTATION TECHNIQUES-A SURVEY

Test cases can then be replayed and used to test web systems

Testing Exceptions with Enforcer

Software Testing for Developer Development Testing. Duvan Luong, Ph.D. Operational Excellence Networks

A NOVEL APPROACH FOR PRIORTIZATION OF OPTIMIZED TEST CASES

ECE199JL: Introduction to Computer Engineering Fall 2012 Notes Set 2.4. Example: Bit-Sliced Comparison

Automated Acceptance testing by Developers & Automated Functional Testing by Testers

Elided Conditionals. Steven P. Reiss. Manos Renieris ABSTRACT. Categories and Subject Descriptors. General Terms. Keywords 1.

Regression Test Case Selection &PrioritizationUsing Dependence Graph and Genetic Algorithm

News. CSE 130: Programming Languages. Environments & Closures. Functions are first-class values. Recap: Functions as first-class values

Unsupervised Learning. Presenter: Anil Sharma, PhD Scholar, IIIT-Delhi

CPSC 340: Machine Learning and Data Mining. Feature Selection Fall 2016

Combining Algebraic Constraints with Graph-based Intelligent Testbench Automation by Mike Andrews, Verification Technologist, Mentor Graphics

Prioritization of Regression Tests using Singular Value Decomposition with Empirical Change Records

A Regression Test Selection Technique for Graphical User Interfaces

Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code (contd)

Some Applications of Graph Bandwidth to Constraint Satisfaction Problems

Coloring 3-Colorable Graphs

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

NFV PM Thought Experiments Yaakov (J) Stein

Mixture models and clustering

Class-Component Testability Analysis

A Comparative Study of Five Regression Testing Algorithms

Requirements satisfied : Result Vector : Final : Matrix M. Test cases. Reqmts

Advanced Compiler Construction

PREDICTION OF DESIGN PARAMETERS IN SHIP DESIGNING BASED ON DATA MINING TECHNIQUE BY COMBINING GENETIC PROGRAMMING WITH SELF ORGANIZING MAP

The Value of Peering. ISP/IXP Workshops. Last updated 23 rd March 2015

Integrating White- and Black-Box Techniques for Class-Level Regression Testing

EVENT-DRIVEN software (EDS) is a class of software that is

Test Suite Minimization An Empirical Investigation. Jeffery von Ronne A PROJECT. submitted to. Oregon State University. University Honors College

Transcription:

Regression Testing Midterm Wednesday Oct. 27, 7pm, room 142 In class, closed book eam Includes all the material covered up (but not including) symbolic eecution Need to understand the concepts, know the basic terminology Answer questions about midterm week before eam

Reading assignment: Invariant Based Testing Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin, Dynamically Discovering Likely Program Invariants to Support Program Evolution, IEEE Transactions on Software Engineering, vol. 27, no. 2, Feb. 2001, pp. 99-123. Michael Harder, Jeff Mellen, and Michael D. Ernst, Improving Test Suites via Operational Abstraction'' 25th International Conference on Software Engineering, Portland, Oregon, May 2003, pp. 60-71. Last reading assignment before eam Why is regression testing a problem? Large systems can take a l.o.n.g time to retest e.g., 6 months of regression testing before every release Sometimes it is difficult and time consuming to create the tests Sometimes it is difficult and time consuming to evaluate the tests e.g., may not be able to automatically determine if the results are correct for eisting and/or new test cases may require a person in the loop (GUI and simulation eamples) to create and evaluate the results Cost of testing can prevent software improvements

Regression Testing Primarily selecting from eisting test cases Plus, adding some new test cases Perhaps, deleting or updating some old test cases Usually view this as deletion plus addition trying to instill confidence that changes are correct new functionality and corrected/modified functionality behave as they should unchanged functionality is indeed unchanged Automated support for Regression testing Test environment or infrastructure support Specification of test cases and results E.g., Junit Capture and replay Especially for GUI components Test data selection support Select a subset of the eisting test cases Based on what? Select new test data to eercise new functionality Based on what? Typically coverage criteria and functional test cases

Steps in regression testing Given: a program P originally tested with test set T producing results R and a modified version of the program P Identify the changes to P Select T a subset of T to re-eecute P Test P with T and reestablish correctness of P with respect to T Create new tests T as necessary Regression Testing Selection Criteria Rothermel and Harrold Developed a framework for analytically comparing regression testing criteria Later used this framework to eperimentally compare regression testing criteria

Regression Testing Criteria a test case t T is fault-revealing if it produces incorrect outputs for P In general, can not determine which elements of T are fault revealing a test case t T is modification-revealing if it produces different outputs for P than for P Modification-revealing test cases over-approimates the fault revealing test cases In general, can not determine which elements of T are modification revealing a test case t T is modification-traversing if it eecutes a statement in P that has changed Modification-traversing over-approimates modification revealing Can be computed Retest selection Some Alternatives: Fault revealing (Conservative and Precise) -impossible to compute Modification revealing (Conservative, but not precise) -also impossible to compute Modification traversing -easier to compute Retest all (Conservative, but not precise )- trivial to compute

SAFE Regression Testing Criteria If the selection criterion is safe,then all of the eisting test cases that could epose a fault have been selected In other words, (T - T ) cannot uncover any faults in the system For t (T - T ), then either t is no longer in the domain or Statements eecuted by t are not impacted by the changes to the code I.e., no statements in the eecution of these test cases were changed An Empirical Study T. L. Graves, M. J. Harrold, J. M. Kim, A. Porter and G. Rothermel, "An Empirical Study of Regression Test Selection Techniques," ACM Transactions on Software Engineering and Methodology, 10 (2), April 2001, pp. 184-208. Eperiment to evaluate Fault detection effectiveness Regression testing is usually not more effective than the original test set Retest-all has good fault detection effectiveness, but may not be cost effective Cost effectiveness Are there techniques that have the similar fault detection effectiveness but the cost of the analysis is significantly less than the test cases it eliminates Cost to compute T versus the cost of eecuting (T-T ) assuming little or no loss in effectiveness

Program studied 7 C++ programs from Siemens 138-516 LOCs Many versions of each 9-41 versions Each version had one seeded fault 2 larger programs 6 Klocs/ 33 versions/multiple faults 49 Klocs/ 5 versions/ multiple faults Test pools, test suites, test cases Test pools Test cases with known edge coverage 1000 edge-coverage test suites selected from the pool randomly Selected test cases to achieve edge-coverage Assume n k test cases needed for the kth suite 1000 non-edge coverage test suites Selected randomly from the pool Kth test suite has n k test cases, so non-edge coverage has a buddy edge-coverage test suite of the same size

Regression testing techniques studied Minimization - select test cases from the test suite so that every edge or node associated with the change is eercised often resulted in a single test case Safe - every test case in a suite that eercises a statement that has been deleted, modified, or is new How do we know if a test case will eercise new statements? Dealing with new code a c f

Dealing with new code a b Test cases that eercise any of the immediate predecessor nodes of a new statement are assumed to eercise the new statement c f Regression testing techniques studied (continued) Data flow-every test case in a test suite that eercises a def-use pair affected by a deleted or modified statement Not quite safe Not full dependence Random-select 25%/50%/75% of the test cases in a suite chosen randomly Retest-all

Test case size reduction Random and test-all select a test suite size that is 25%, 50%, 75%, and 100%, respectively, of T by definition Minimization: ~1% test suite size Safe:~60% test suite size Data flow: 54% test suite size Fault detection effectiveness For minimization, random, and test-all The larger the test suite size the better the fault detection Improvement diminishes as the % gets higher testall 100% random75% random 50% random25% minimization 20 40 60 80 100 Effectiveness (%)

Fault detection effectiveness: safe Safe test suite size averaged 60% of original, but only performed slightly better than random(75%) There was significant variance in the test suite reduction Some programs resulted in almost no reduction in original test suite size Larger programs tended to have a larger reduction in the test suite size for some programs the payoff was significant best case: 5% of the test cases were required Size reduction often depended on where a change was located a Changes to leaf nodes/ components required few test cases b d c e Changes to root node/ component required all test cases f

As Reported by Microsoft for Regression Testing To perform test selection, CRANE uses Microsoft s Echelon test prioritization scheme [22]. Echelon analyzes differences between two binaries, at a basic binary block level, and then uses previously archived code coverage information to identify tests that will trigger eecution through maimum number of changed binary blocks. Echelon prioritizes the selected tests by changed blocks covered per test cost unit ratio. Tests that add more coverage to the changed code per unit of effort will end up at top of the list. At this time, we use Echelon as a test prioritization rather than pure test selection tool i.e. we do not recommend that only the selected tests be eecuted on a fi but rather that they are run first. Another comment about MS processes, describing a regression testing tool, CRANE For the situations where certain portions of changed code will be identified as not covered through eisting tests, these test gaps are an important indicator of test cost ideally all changed code should be eecuted before the release therefore new tests need to be defined and run. In our tool, a source level view of changes represents this information in a form of green (covered by eisting tests) and red (not covered) coloring of all changed lines of code. Our recommendation is that all currently uncovered parts of code have tests developed and eecuted for them.

Suggested regression testing process Determine the set of safe test cases, T safe This can be run as a background job Cost is basically irrelevant Select from these safe test cases, T selected % selected depends on resources available Other studies have suggested selecting the largest changed files Rerun selected test cases Cost of eecuting test cases Cost of evaluating the results Can often be automated Select new test cases to eercise new functionality In background, may want to rerun (T safe -T selected ) Recompute coverage Regression Testing Conclusion Regression testing is a serious problem for some systems Want to reduce test suite size but not fault detection Need prediction models to select test cases Prediction models Safe selection techniques might still return too many test cases Need to combine with prioritization techniques Simple selection techniques, such as LOC and change info, might be sufficient