Input Space Partitioning

Similar documents
Introduction to Software Testing Chapter 4 Input Space Partition Testing

Introduction. Easy to get started, based on description of the inputs

Equivalence Class Partitioning. Equivalence Partitioning. Definition and Example. Example set of classes

Input Space Partitioning

EECS 4313 Software Engineering Testing. Topic 05: Equivalence Class Testing Zhen Ming (Jack) Jiang

Input Space Partitioning

CS 4387/5387 SOFTWARE V&V LECTURE 4 BLACK-BOX TESTING

Functional Testing (Black Box Testing)

Agenda. Predicate Testing. CSE 5321/4321, Ali Sharifara, UTA

Software Testing. 1. Testing is the process of demonstrating that errors are not present.

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

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Specification-based test design

6.001 Notes: Section 8.1

[Ch 6] Set Theory. 1. Basic Concepts and Definitions. 400 lecture note #4. 1) Basics

CSE 230 Computer Science II (Data Structure) Introduction

Problem One: A Quick Algebra Review

Programming Embedded Systems

Quality Assurance in Software Development

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Suppose that the following is from a correct C++ program:

Black-box Testing Techniques

Reasoning About Imperative Programs. COS 441 Slides 10

CS159. Nathan Sprague. September 30, 2015

Assertions. Assertions - Example

Testing: Test design and testing process

CSE 143 SAMPLE MIDTERM

Model Counting with Applications to CodeHunt

CSE 331 Midterm Exam 11/9/15 Sample Solution

References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1

TITAN 5300 Software. Unit Test Guidelines. S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart. Revision 2.0

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

Software Test. Levels of test. Types of test. Regression test The JUnit tool for unit testing Java programs. System test Integration test Unit test

Software Testing. Lecturer: Sebastian Coope Ashton Building, Room G.18

Functional Specifications Document

Integrating the classification tree method with combinatorial testing: test selection strategy

MTAT : Software Testing

Software Quality Assurance Dynamic Test

Name. 6b, Triangles. 1. A bridge contains beams that form triangles, as shown below.

Testing and Debugging

CSE431 Translation of Computer Languages

Software Testing Fundamentals. Software Testing Techniques. Information Flow in Testing. Testing Objectives

COMP 3705 Advanced Software Engineering: Software Testing

BASIC ELEMENTS OF A COMPUTER PROGRAM

linaye/gl.html

11 Using JUnit with jgrasp

CSC 1052 Algorithms & Data Structures II: Recursion

Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan

CSE 331 Winter 2016 Midterm Solution

Catching Defects: Design or Implementation Phase? Design-by-Contract (Dbc) Test-Driven Development (TDD) Motivation of this Course

Basic Verification Strategy

Topic 7: Algebraic Data Types

Triangles. You have learned to be careful with. EXAMPLE L E S S O N 1.

Topics in Software Testing

Combinatorial testing. Angelo Gargantini - University of Bergamo Italy TAROT summer school June 2010

Comparing procedure specifications

Assertions, pre/postconditions

Introduction to Software Testing Chapter 3, Sec# 3.3 Logic Coverage for Source Code

Fault, Error, and Failure

PESIT Bangalore South Campus

UNIVERSITY OF MUMBAI T.Y.B.Sc. INFORMATION TECHNOLOGY) (Semester V) (Practical) EXAMINATION OCTOBER 2014 SOFTWARE TESTING Seat No. : Max.

CS 1110: Introduction to Computing Using Python Loop Invariants

PES INSTITUTE OF TECHNOLOGY- BANGALORE SOUTH CAMPUS

double d0, d1, d2, d3; double * dp = new double[4]; double da[4];

Machine Learning (CSE 446): Decision Trees

Equivalence Class Partitioning and Boundary Value Analysis -Black Box Testing Techniques

CSE 331 Midterm Exam Sample Solution 2/18/15

ACT476 Professional Project II Test Case Development Team Name Project Tester

Cardinality of Sets. Washington University Math Circle 10/30/2016

Software Testing 1. Introduction

CSE wi Midterm Exam 2/8/18. Name UW ID #

Year 6 Summer Term Week 1 to 2 Geometry: Properties of Shapes

Outline. iterator review iterator implementation the Java foreach statement testing

Test s in i g n III Week 16

CSE 331 Final Exam 3/16/15 Sample Solution

CS 3 Introduction to Software Engineering. 3: Exceptions

Software Testing and Maintenance

1 The smallest free number

Principles of Testing and Analysis. COMP 4004 Fall Notes Adapted from Dr. A. Williams

Documenting, Using, and Testing Utility Classes

Testing Theory. Agenda - What will you learn today? A Software Life-cycle Model Which part will we talk about today? Theory Lecture Plan

What is Structural Testing?

Lecture 7: Type Systems and Symbol Tables. CS 540 George Mason University

Chapter 4 Loops. int x = 0; while ( x <= 3 ) { x++; } System.out.println( x );

Classes, interfaces, & documentation. Review of basic building blocks

Testing. UW CSE 160 Winter 2016

Subject: PROBLEM SOLVING THROUGH C Time: 3 Hours Max. Marks: 100

1 Black Box Test Data Generation Techniques

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 8: SEP. 29TH INSTRUCTOR: JIAYIN WANG

CSE 331 Software Design and Implementation. Lecture 4 Specifications

The testing process. Component testing. System testing

COMP : Trees. COMP20012 Trees 219

Specifications. CSE 331 Spring 2010

Programming Languages Third Edition

Pages and 68 in [JN] conventions for using exceptions in Java. Chapter 8 in [EJ] guidelines for more effective use of exceptions.

Solutions to Quiz 1 (October 19, 2015)

Chapter 5 Errors. Bjarne Stroustrup

A Decision-Theoretic Rough Set Model

EECS 4313 Software Engineering Testing. Topic 01: Limits and objectives of software testing Zhen Ming (Jack) Jiang

Transcription:

Input Space Partitioning Instructor : Ali Sharifara CSE 5321/4321 Summer 2017 CSE 5321/4321, Ali Sharifara, UTA 1

Input Space Partitioning Introduction Equivalence Partitioning Boundary-Value Analysis Summary CSE 5321/4321, Ali Sharifara, UTA 2

Agenda Quick Review Input Space Partitioning CSE 5321/4321, Ali Sharifara, UTA 3

Introduction Testing is about choosing elements from input domain The input domain of a program consists of all possible inputs that could be taken by the program Easy to get started, based on description of the inputs CSE 5321/4321, Ali Sharifara, UTA 4

Input Domain For even small programs, the input domain is so large that it might be infinite. (e.g. gcd(int x, int y)) Input parameters define the scope of the input domain: Parameters to a method Data read from a file Global variable User level inputs etc Domain for each input parameter is partitioned into regions At least one value is chosen from each region CSE 5321/4321, Ali Sharifara, UTA 5

Quick Review What is the test selection problem? What is the main idea of input space partitioning? CSE 5321/4321, Ali Sharifara, UTA 6

Test Selection Problem Ideally, the test selection problem is to select a subset T of the input domain such that the execution of T will reveal all errors. In practice, the test selection problem is to select a subset of T within budget such that it reveals as many error as possible. CSE 5321/4321, Ali Sharifara, UTA 7

Partitioning Partition the input domain into a relatively small number of groups, and then select one representative from each group. Based on two properties: 1. Completeness: The partition must cover the entire domain. 2. Disjointness: The blocks must not overlap. 1 2 3 4 Valid V1 I1 V2 I2 Invalid V3 CSE 5321/4321, Ali Sharifara, UTA 8

Partitioning Cont. Domain D Partition scheme q of D The partition q defines a set of blocks, Bq = b1, b2, bq The Partition must satisfy two properties : The partition must cover the entire domain (completeness) The blocks must not overlap (disjointness) Partitioning of input domain D into three blocks CSE 5321/4321, Ali Sharifara, UTA 9

Using Partitions - Assumptions Choose a value from each partition Each value is assumed to be equally useful for testing Find characteristics in the input : parameters, semantic, description, Partition each characteristics Choose tests by combining values from characteristics Some possible characteristic examples: Input X is null Order of the input file F (sorted, inverse sorted, arbitrary) Input device (DVD, CD, VCR, computer, ) Each characteristic C allows the tester to define a partition CSE 5321/4321, Ali Sharifara, UTA 10

Choosing Partitions Choosing (or defining) partitions seems easy, but is easy to get wrong Consider the order of file F CSE 5321/4321, Ali Sharifara, UTA 11

Properties of Partitions If the partitions are not complete or disjoint, that means the partitions have NOT been considered carefully enough They should be reviewed carefully, like any design attempt Different alternatives should be considered CSE 5321/4321, Ali Sharifara, UTA 12

Example Consider a program that is designed to sort a sequence of integers into the ascending order. What is the input domain of this program? Input domain modeling Invalid 1 2 3 V1 I1 I2 4 Valid V2 V3 CSE 5321/4321, Ali Sharifara, UTA 13

Input Space Partitioning Introduction Equivalence Partitioning Boundary-Value Analysis Summary CSE 5321/4321, Ali Sharifara, UTA 15

Partition (review!) A partition defines a set of equivalent classes, or blocks All the members in an equivalence class contribute to error detection in the same way A partition must satisfy two properties: Completeness: A partition must cover the entire domain Disjoint: The blocks must not overlap A partition is usually based on certain characteristic e.g., whether a list of integer is sorted or not, whether a list allows duplicates or not CSE 5321/4321, Ali Sharifara, UTA 16

Input Domain Modeling Step 1: Identify testable components, which could be a method, a use case, or the entire system Step 2: Identify all of the parameters that can affect the behavior of a given testable component Input parameters, environment configurations, state variables. For example, insert(obj) typically behaves differently depending on whether the object is already in a list or not. Step 3: Identify characteristics, and create partitions for each characteristic Step 4: Select values from each partition, and combine them to create tests CSE 5321/4321, Ali Sharifara, UTA 17

Exercise A tester defined three characteristics based on the input parameter car : Where Made, Energy Source, and Size. The following partitionings for these characteristics have at least two mistakes. Correct them. Where Made Energy Source Size North America Gas 2-door Europe Electric 4-door Asia Hybrid Hatch-back CSE 5321/4321, Ali Sharifara, UTA 18

Different Approaches to Input Domain Modeling (IDM) Interface-Based IDM Functionality-Based IDM CSE 5321/4321, Ali Sharifara, UTA 19

Interface-Based Input Domain Modeling (1) The main idea is to identify parameters and values, typically in isolation, based on the interface of the component under test. Advantage: Relatively easy to identify characteristics Disadvantage: IDM may be incomplete and hence additional characteristics are needed Not all information is reflected in the interface, and testing some functionality may require parameters in combination CSE 5321/4321, Ali Sharifara, UTA 20

Interface-Based Input Domain Modeling (2) Range: one class with values inside the range, and two with values outside the range For example, let speed [60.. 90]. Then, we generate three classes {{50}, {75}, {92}}. String: at least one containing all legal strings and one containing all illegal strings. For example, let fname: string be a variable to denote a first name. Then, we could generate the following classes: {{ }, {Sue}, {Sue2}, {Too long a name}}. CSE 5321/4321, Ali Sharifara, UTA 21

Interface-Based Input Domain Modeling (3) Enumeration: Each value in a separate class For example, consider auto_color {red, blue, green}. The following classes are generated, {{red}, {blue}, {green}} Array: One class containing all legal arrays, one containing only the empty array, and one containing arrays larger than the expected size For example, consider int[] aname = new int [3]. The following classes are generated: {{[]}, {[-10, 20]}, {[-9, 0, 12, 15]}. CSE 5321/4321, Ali Sharifara, UTA 22

Functionality-Based Input Domain Modeling (1) The main idea is to identify characteristics that correspond to the intended functionality of the component under test Advantage: Includes more semantic information, and does not have to wait for the interface to be designed Disadvantage: Hard to identify characteristics, parameter values, and tests CSE 5321/4321, Ali Sharifara, UTA 23

Functionality-Based Input Domain Modeling (2) Preconditions explicitly separate normal behavior from exceptional behavior For example, a method requires a parameter to be non-null. Postconditions indicate what kind of outputs may be produced For example, if a method produces two types of outputs, then we want to select inputs so that both types of outputs are tested. Relationship of variables with special values (zero, null, blank,.. ) Relationships between different parameters can also be used to identify characteristics For example, if a method takes two object parameters x and y, we may want to check what happens if x and y point to the same object or to logically equal objects CSE 5321/4321, Ali Sharifara, UTA 24

Identify Characteristics The interface-based approach develops characteristics directly from input parameters The functionality-based approach develops characteristics from functional or behavioral view CSE 5321/4321, Ali Sharifara, UTA 25

Example.1 Public Boolean findelement(list list, Element element) //If list or element is null throw NullPointerException else returns true if element is in the list, false otherwise CSE 5321/4321, Ali Sharifara, UTA 26

List Characteristics Characteristics List is null List is empty Interface-based Blocks and Values b1= true b2= false b1 = true b2= false Characteristics Number of occurrences of element in list Element occurs first in list Functionality-based Blocks and Values b1= 0 b2= 1 b3= more than 1 b1 = true B2 = false CSE 5321/4321, Ali Sharifara, UTA 27

Example.2 (1) Consider a triangle classification program which inputs three integers representing the lengths of the three sides of a triangle, and outputs the type of the triangle. The possible types of a triangle include scalene, equilateral, isosceles, and invalid. int classify (int side1, int side2, int side3) // 0: scalene, 1: equilateral, 2: isosceles; -1: invalid CSE 5321/4321, Ali Sharifara, UTA 28

Example.2 (2) Interface-based IDM: Consider the relation of the length of each side to some special value such as zero Partition b1 b2 b3 q1 = Relation of Side 1 to 0 q2 = Relation of Side 2 to 0 q3 = Relation of Side 3 to 0 > 0 = 0 < 0 > 0 = 0 < 0 > 0 = 0 < 0 CSE 5321/4321, Ali Sharifara, UTA

Example.2 (3) Functionality-based IDM: Consider the traditional geometric partitioning of triangles Partition b1 b2 b3 b4 Geometric classification Scalene Isoceles Equilateral Invalid Oops something s fishy equilateral is also isosceles! We need to refine the example to make characteristics valid CSE 5321/4321, Ali Sharifara, UTA

Example.2 (4) Partition b1 b2 b3 b4 q1= Geometric classification Scalene Isoceles, not equilateral Equilateral Invalid Param b1 b2 b3 b4 Triangle (4, 5, 6) (3, 3, 4) (3, 3, 3) (3, 4, 8) Perimeter of triangle P = a+b+c, if a + b > c, otherwise is invalid Side (a), base (b), Side (c) CSE 5321/4321, Ali Sharifara, UTA 31

Functionality-Based IDM triangle() A different approach would be to break the geometric characterization into four separate characteristics Characteristic b 1 b 2 q 1 = Scalene True False q 2 = Isosceles True False q 3 = Equilateral True False q 4 = Valid True False Use constraints to ensure that Equilateral = True implies Isosceles = True Valid = False implies Scalene = Isosceles = Equilateral = False CSE 5321/4321, Ali Sharifara, UTA 32

GUI Design (1) Suppose that an application has a constraint on an input variable X such that it can only assume integer values in the range 0.. 4. Without GUI, the application must check for out-of-range values. With GUI, the user may be able to select a valid value from a list, or may be able to enter a value in a text field. CSE 5321/4321, Ali Sharifara, UTA 33

GUI Design (2) Incorrect values 1 2 Correct values Correct values 2 Correct values Application GUI-A Core Application GUI-B Core Application CSE 5321/4321, Ali Sharifara, UTA 34

Input Space Partitioning Introduction Equivalence Partitioning Boundary-Value Analysis Summary CSE 5321/4321, Ali Sharifara, UTA 35

Motivation Programmers often make mistakes in processing values at and near the boundaries of equivalence classes. For example, a method M is supposed to compute a function f1 when condition x <= 0 and function f2 otherwise. However, M has a fault such that it computes f1 for x < 0 and f2 otherwise. Can you find an example that shows why a value near a boundary needs to be tested? CSE 5321, Ali Sharifara, UTA 36

Boundary-Value Analysis A test selection technique that targets faults in applications at the boundaries of equivalence classes. Partition the input domain Identify the boundaries for each partition Select test data such that each boundary value occurs in at least one test input CSE 5321, Ali Sharifara, UTA 37

Example Consider a method findprices that takes two inputs, item code (99.. 999) and quantity (1.. 100). The method accesses a database to find and display the unit price, the description, and the total price, if the code and quantity are valid. Otherwise, the method displays an error message and return. CSE 5321, Ali Sharifara, UTA 38

Example (2) Equivalence classes for code: E1: Values less than 99 E2: Values in the range E3: Values greater than 999 Equivalence classes for quantity: E4: Values less than 1 E5: Values in the range E6: Values greater than 100 CSE 5321, Ali Sharifara, UTA 39

Example (3) 98 100 998 1000 E1 99 999 E2 E2 0 2 99 101 E4 1 100 E5 E6 CSE 5321, Ali Sharifara, UTA 40

Example (4) Tests are selected to include, for each variable, values at and around the boundary An example test set is T = { t1: (code = 98, qty = 0), t2: (code = 99, qty = 1), t3: (code = 100, qty = 2), t4: (code = 998, qty = 99), t5: (code = 999, qty = 100), t6: (code = 1000, qty = 101) } CSE 5321/4321, Ali Sharifara, UTA 41

Example (5) public void findprice (int code, int qty) { if (code < 99 or code > 999) { display_error ( Invalid code ); return; } // begin processing } CSE 5321/4321, Ali Sharifara, UTA 42

Example (6) One way to fix the problem is to replace t1 and t6 with the following four tests: t7 = (code = 98, qty = 45), t8 = (code = 1000, qty = 45), t9 = (code = 250, qty = 0), t10 = (code = 250, qty = 101). CSE 5321, Ali Sharifara, UTA 43

Input Space Partitioning Introduction Equivalence Partitioning Boundary-Value Analysis Summary CSE 5321/4321, Ali Sharifara, UTA 44

Summary Test selection is about Partitioning the input space in a cost-effective manner. The notions of equivalence partitioning and boundary analysis are so common that sometimes we apply them without realizing it. Interface-based IDM is easier to perform, but may miss some important semantic information; functionality-based IDM is more challenging, but can be very effective in many cases. Boundary analysis considers values both at and near boundaries. CSE 5321/4321, Ali Sharifara, UTA 45