Combinatorial Testing Review “Combinatorial Software Testing”, Kuhn, Kacker, Lei, Hunter, IEEE Computer, Aug. 2009 Compared “traditional” software test.

Slides:



Advertisements
Similar presentations
Testing and Quality Assurance
Advertisements

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.
Pseudo-Exhaustive Testing for Software Rick Kuhn Vadim Okun National Institute of Standards and Technology Gaithersburg,
IPOG: A General Strategy for T-Way Software Testing
Today’s Agenda  HW #1 Due  Quick Review  Finish Input Space Partitioning  Combinatorial Testing Software Testing and Maintenance 1.
Chapter 1 pp 1-14 Properties of Algorithms Pseudocode.
Rick Kuhn Computer Security Division
Chapter 1 pp 1-14 Properties of Algorithms Pseudocode.
CS102--Object Oriented Programming Lecture 6: – The Arrays class – Multi-dimensional arrays Copyright © 2008 Xiaoyan Li.
Software Testing and Quality Assurance
Testing an individual module
Chapter 18 Testing Conventional Applications
1 Software Testing and Quality Assurance Lecture 5 - Software Testing Techniques.
Propositional Equivalence Goal: Show how propositional equivalences are established & introduce the most important such equivalences.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 9 Functional Testing
PJSISSTA '001 Black-Box Test Reduction Using Input-Output Analysis ISSTA ‘00 Patrick J. Schroeder, Bogdan Korel Department of Computer Science Illinois.
What Exactly are the Techniques of Software Verification and Validation A Storehouse of Vast Knowledge on Software Testing.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Com1040 Systems Design and Testing Part II – Testing (Based on A.J. Cowling’s lecture notes) LN-Test3: Equivalence classes and boundary conditions Marian.
TESTING.
Domain testing Tor Stålhane. Domain testing revisited We have earlier looked at domain testing as a simple strategy for selecting test cases. We will.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Combinatorial Methods for Event Sequence Testing D. Richard Kuhn 1, James M. Higdon 2, James F. Lawrence 1,3, Raghu N. Kacker 1, Yu Lei 4 1 National Institute.
Automated Combinatorial Testing for Software Rick Kuhn and Raghu Kacker National Institute of Standards and Technology Gaithersburg, MD.
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
Requirements-based Test Generation for Functional Testing (© 2012 Professor W. Eric Wong, The University of Texas at Dallas) 1 W. Eric Wong Department.
The OWASP Foundation OWASP AppSec DC October This is a work of the U.S. Government and is not subject to copyright protection.
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Construction Lecture 18 Software Testing.
White Box-based Coverage Testing (© 2012 Professor W. Eric Wong, The University of Texas at Dallas) 111 W. Eric Wong Department of Computer Science The.
Today’s Agenda  Reminder: HW #1 Due next class  Quick Review  Input Space Partitioning Software Testing and Maintenance 1.
Case Study: Black-Box Testing Prepared by Stephen M. Thebaut, Ph.D. University of Florida Software Testing and Verification Lecture 6.1.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Testing the Programs CS4311 – Spring 2008 Software engineering, theory and practice, S. Pfleeger, Prentice Hall ed. Object-oriented and classical software.
Some facts about the cal() program February 5, 2015 Paul Ammann, SWE 437 with thanks to Bob Kurtz.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Mutation Testing Breaking the application to test it.
MUTACINIS TESTAVIMAS Benediktas Knispelis, IFM-2/2 Mutation testing.
Mutation Testing Laraib Zahid & Mariam Arshad. What is Mutation Testing?  Fault-based Testing: directed towards “typical” faults that could occur in.
A PRELIMINARY EMPIRICAL ASSESSMENT OF SIMILARITY FOR COMBINATORIAL INTERACTION TESTING OF SOFTWARE PRODUCT LINES Stefan Fischer Roberto E. Lopez-Herrejon.
Cs498dm Software Testing Darko Marinov January 24, 2012.
TESTING BASED ON ERROR GUESSING Rasa Zavistanavičiūtė, IFME-0/2.
Introduction to Software Testing (2nd edition) Chapter 5 Criteria-Based Test Design Paul Ammann & Jeff Offutt
Functional testing, Equivalence class testing
Domain Testing Functional testing which tests the application by giving inputs and evaluating its appropriate outputs. system does not accept invalid and.
Propositional Equivalence
SOFTWARE TESTING OVERVIEW
Input Space Partition Testing CS 4501 / 6501 Software Testing
Verification and Testing
Warm Up Problem of the Day Lesson Presentation Lesson Quizzes.
Testing Approaches.
Overview Functional Testing Boundary Value Testing (BVT)
Constructive Cost Model
Chapter 10 Verification and Validation of Simulation Models
Fun facts about the cal() program
Sergiy Vilkomir January 20, 2012
IPOG: A General Strategy for T-Way Software Testing
Software Verification and Validation
Software Verification and Validation
Overview Functional Testing Boundary Value Testing (BVT)
IPOG: A general strategy for t-way software testing by Lei, Yu, IEEE /2/2019 Mehra N Borazjany.
Software Verification and Validation
Chapter 10: Testing and Quality Assurance
Mutation Testing Faults are introduced into the program by creating many versions of the program called mutants. Each mutant contains a single fault. Test.
Presentation transcript:

Combinatorial Testing Review “Combinatorial Software Testing”, Kuhn, Kacker, Lei, Hunter, IEEE Computer, Aug Compared “traditional” software test development with simple combinatorial pairwise testing (2-way combinations) Measures: – fault detection effectiveness, – fault detection rate

Pairwise covering array All pairs of values appear somewhere in array

10 Project Study Two teams of testers One group – ad hoc test development (common practice) – use cases based on requirements documents Second group – all pairwise combinations of system input values

Results Higher fault detection effectiveness (13% better) for 2-way tests Much higher fault detection per hour 2.4X

Questions to think about Why were results better for 2-way test? Why was fault detection rate so much higher? Input model refers to the set of parameter names and values used in testing. For a given input model, when might the “use case” scenario based test method be better than 2- way?

Fault distribution for various application domains What does this graph suggest about the effectiveness of pairwise (2-way) testing?

Oracle-free Testing with Two-layer Covering Arrays Rick Kuhn National Institute of Standards and Technology Gaithersburg, MD East Carolina University NSF Research Experiences for Undergraduates June 29, 2015

Some current approaches

New method Consider equivalence classes Example: shipping cost based on distance d and weight w, with packages 10 in a third class. Then for cost function f(d,w), f(d, 0.2) = f(d, 0.9), for equal values of d. But f(d, 0.2) ≠f(d, 5.0), because two different weight classes are involved.

Basic property of equivalence classes

Can we use this property for testing? Let’s do an example: access control. access is allowed if (1) subject is employee and time is in working hours and it’s a weekday; or (2) subject is an employee with administrative privileges; or (3) subject is an auditor and it is a weekday. Equivalence classes for time of day and day of the week time = minutes past midnight ( ), ( ), ( ). Days of the week = weekend and weekdays, designated as (1,7) and (2..6) respectively.

Code we want to test int access_chk() { if (emp && t >= START && t = MON && d <= FRI) return 1; else if (emp && p) return 2; else if (aud && d >= MON && d <= FRI) return 3; else return 0; }

Establish equivalence classes emp: boolean day: (1,7), (2,6) A1 A2 time: (0,100,539),(540,1020),(1021,1439) B1 B2 B3 priv: boolean aud: boolean emp (bool) : 0,1 day (enum) : A1,A2 time (enum): B1,B2,B3 priv (bool): 0,1 aud (bool) : 0,1

All of these should be equal Eq. class A1 Eq. class B1

These should also be equal Eq. class A2 Eq. class B1 Now we’re using class A2

Covering array Primary array: 0,A2,B1,1,1 1,A1,B1,0,0 0,A1,B2,1,0 1,A2,B2,0,1 0,A1,B3,0,1 1,A2,B3,1,0 One secondary array for each row Class A2 = (2,6) Class B1 = (0,539) emp: boolean day: (1,7), (2,6) A1 A2 time: (0,539),(540,1020),(1021, 1439) B1 B2 B3 priv: boolean aud: boolean

Run the tests Correct code output: Faulty code: if (emp && t>=START && t==END && d>=MON && d<=FRI) return 1; Faulty code output:

What’s happening here? Input domain Incorrect boundary We simply detect inconsistency between partitions

Can this really work on practical code? Primary x secondary#teststotal faults detected 3-way x 3-way285x way x 3-way970x Experiment: TCAS code (same used in earlier model checking tests) Small C module, 12 variables Seeded faults in 41 variants Results: More than half of faults detected Large number of tests -> but fully automated, no human intervention We envision this type of checking as part of the build process; can be used in parallel with static analysis, type checking

Prototype tool

Next Steps Realistic trial use Different constructions for secondary array, e.g., random values Formal analysis of applicability – range of applicability/effectiveness, limitations, special cases Determine how many faults can be detected this way Develop tools to incorporate into build process

Why this works for testing If Ai, Bi, Ci, etc. are equivalence classes, A1 = 0,1,2; A2 = 300,400; etc. B1 = 22,33,55; B2 = 12, 50,99 etc. C1 = 1000, 2000, 4000 …. etc. then: f(0, 22, …) = f(1, 22,1000,…) = f(2, 22,1000,…) and since eq. class B1 includes 22,33,55, then f(0, 22, …) = f(0, 33,1000,…) = f(0, 55,1000,…) = f(1, 22,1000,…) = f(1, 33,1000,…) = f(1, 55,1000,…) … and on and on … using all possible combinations of equivalent values We use a covering array of t-way combinations to make it tractable

Why this works for testing If Ai, Bi, Ci, etc. are equivalence classes, A1 = 0,1,2; A2 = 300,400; etc. B1 = 22,33,55; B2 = 12, 50,99 etc. C1 = 1000, 2000, 4000 …. etc. then: