Black-Box Testing Techniques I Software Testing Lecture 4.

Slides:



Advertisements
Similar presentations
Overview Functional Testing Boundary Value Testing (BVT)
Advertisements

Testing and Test Case Development A “primitive” method of testing, with NO test preparation, may include the following steps : – Initiate the system –
MGT-491 QUANTITATIVE ANALYSIS AND RESEARCH FOR MANAGEMENT
Equivalence Class Testing
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
Black box testing  Black box tests focus on the input/output behavior of the component  Black-box tests do not deal with the internal aspects of the.
Software Testing and Quality Assurance
(c) 2007 Mauro Pezzè & Michal Young Ch 10, slide 1 Functional testing.
Inference.ppt - © Aki Taanila1 Sampling Probability sample Non probability sample Statistical inference Sampling error.
Testing an individual module
Chapter 18 Testing Conventional Applications
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Applied Economics for Business Management
Equivalence Class Testing
Black Box Software Testing
1 Functional Testing Motivation Example Basic Methods Timing: 30 minutes.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Lecture 2 The Relational Model. Objectives Terminology of relational model. How tables are used to represent data. Connection between mathematical relations.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Contents Introduction Requirements Engineering Project Management
Coverage – “Systematic” Testing Chapter 20. Dividing the input space for failure search Testing requires selecting inputs to try on the program, but how.
Randomized Turing Machines
Definitions. Cell: Cell: Space in the intersection of a column (vertical division) and a row (horizontal division). Row: Row: A row runs horizontally.
Black-Box Testing Techniques II Prepared by Stephen M. Thebaut, Ph.D. University of Florida Software Testing and Verification Lecture 5.
Requirements-based Test Generation for Functional Testing (© 2012 Professor W. Eric Wong, The University of Texas at Dallas) 1 W. Eric Wong Department.
Agenda Introduction Overview of White-box testing Basis path testing
Black-Box Testing Techniques I
Software testing techniques Software testing techniques Equivalence partitioning Presentation on the seminar Kaunas University of Technology.
Testing Testing Techniques to Design Tests. Testing:Example Problem: Find a mode and its frequency given an ordered list (array) of with one or more integer.
Black Box Testing Techniques Chapter 7. Black Box Testing Techniques Prepared by: Kris C. Calpotura, CoE, MSME, MIT  Introduction Introduction  Equivalence.
Black-box Testing.
Systems Life Cycle. Know the elements of the system that are created Understand the need for thorough testing Be able to describe the different tests.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 14a: Software Testing Techniques Software Engineering: A Practitioner’s Approach, 6/e Chapter.
CS 217 Software Verification and Validation Week 7, Summer 2014 Instructor: Dong Si
Software Testing Input Space Partition Testing. 2 Input Space Coverage Four Structures for Modeling Software Graphs Logic Input Space Syntax Use cases.
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.
1 Input Space Partitioning(2). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 4  Section 4.1  Section
Equivalence Class Testing In chapter 5, we saw that all four variations of boundary value testing are vulnerable to –gaps of untested functionality, and.
Test Case Designing UNIT - 2. Topics Test Requirement Analysis (example) Test Case Designing (sample discussion) Test Data Preparation (example) Test.
CS451 Lecture 10: Software Testing Yugi Lee STB #555 (816)
Testing Data Structures Tao Xie Visiting Professor, Peking University Associate Professor, North Carolina State University
Software Testing Prepared by Stephen M. Thebaut, Ph.D. University of Florida CEN 5035 Software Engineering.
1 Software Testing & Quality Assurance Lecture 5 Created by: Paulo Alencar Modified by: Frank Xu.
1 © 2011 Professor W. Eric Wong, The University of Texas at Dallas Requirements-based Test Generation for Functional Testing W. Eric Wong Department of.
1 Software Testing. 2 Equivalence Class Testing 3 The use of equivalence class testing has two motivations: –Sense of complete testing –Avoid redundancy.
Equivalence Class Testing Use the mathematical concept of partitioning into equivalence classes to generate test cases for Functional (Black-box) testing.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
Software Testing. SE, Testing, Hans van Vliet, © Nasty question  Suppose you are being asked to lead the team to test the software that controls.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
Dynamic Black-Box Testing Part 1 What is dynamic black-box testing? How to reduce the number of test cases using: Equivalence partitioning Boundary value.
Functional testing, Equivalence class testing
Black-Box Testing Techniques I
Case Study: Black-Box Testing
Prepared by Stephen M. Thebaut, Ph.D. University of Florida
Overview Functional Testing Boundary Value Testing (BVT)
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Black-Box Testing Techniques III
Equivalence Class Testing
Software Engineering Lecture #12.
ISP Coverage Criteria CS 4501 / 6501 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.
Overview Functional Testing Boundary Value Testing (BVT)
Black-Box Testing Techniques III
Black-Box Testing Techniques II
Chapter 7 Software Testing.
Black-Box Testing Techniques II
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Presentation transcript:

Black-Box Testing Techniques I Software Testing Lecture 4

Definition of Black-Box Testing Testing based solely on analysis of requirements (specification, user documentation, etc.). Also know as functional testing. Black-box testing concerns techniques for designing tests; it is not a “level” of testing. Black-box techniques apply to all levels of testing (e.g., unit, component, product, and system).

Partition Testing Also known as input space partitioning and equivalence partitioning. Can be thought of as exhaustive testing Las Vegas style... Idea is to partition the program’s input space based on a (small) number of equivalence classes such that, according to the specification, every element of a given partition is “handled” (e.g., mapped to an output) “in the same manner.”

Partition Testing (cont’d) If the program happens to be implemented in such a way that being “handled in the same manner” means that either –every element of a partition is mapped to a correct output, or –every element of a partition is mapped to an incorrect output, then testing the program with just one element from each partition would be tantamount to exhaustive testing.

Partition Testing (cont’d) Two types of equivalence classes are identified: valid (corresponding to inputs deemed valid from the specification) and invalid (corresponding to inputs deemed erroneous from the specification) In most multi-input cases, classes for individual inputs must be combined in some manner to partition the input space. (E.g., see City Tax Specification below.)

Partition Testing (cont’d) However, it is sometimes possible and convenient to identify multivariate classes which partition an input space directly. Consider the following specification…

Partition Testing Example Program Specification: An ordered pair of numbers, (x, y), are input and a message is output stating whether they are in ascending order, descending order, or equal. If the input is other than an ordered pair of numbers, an error message is output.

Partition Testing Example (cont’d) Equivalence Classes: { (x, y) | x<y } (V) { (x, y) | x>y } (V) { (x, y) | x=y } (V) { input is other than an ordered pair of numbers } (I) Valid classes Invalid class

Valid (x, y) Input Space x = y x < y x > y

Partition Testing Example (cont’d) In this case, being “handled in the same manner” clearly relates directly to the relationship between inputs x and y, so equivalence classes are more naturally defined in terms of (x,y) pairs.

Sample Program Design Conceptually, would the underlying assumption of partition testing hold for these classes if the following program design was employed? if (input is other than an ordered pair of numbers) then output(“invalid input”) else if x<y then output(“ascending order”) else if x>y then output(“ascending order”) else output(“equal”)

Identifying and Representing Test Cases Test case design requirements are often represented (documented) using a “test case COVERAGE MATRIX.” Columns in the matrix represent templates for test case inputs (and in some cases expected results). Rows represent the design rationale for each test case.

A Test Case Coverage Matrix EQUIVALENCE CLASSES TEST CASES 1234 { (x, y) | x>y } (V) V { (x, y) | x<y } (V) V { (x, y) | x=y } (V) V { other } (I) I

Dealing with Complex Multiple- Input Situations In the example above, (x, y) input pairs were considered as a unit, yielding a set of disjoint classes partitioning the two- dimensional x, y (valid) input space. For more complex specifications, classes are often identified for INDIVIDUAL input variables, or even INDIVIDUAL ATTRIBUTES of individual input variables, yielding sets of possibly overlapping classes. For example...

Dealing with Complex Multiple- Input Situations (cont’d) Part of a More Complex Program Specification: Three numbers, x, y, and z, are input. If x is a whole number and less than 40, and if y is non-negative, the output is z+(y/x). If x is greater than or equal to 40, or if y is positive, or if z is odd and at least as large as x, then the output is...

Dealing with Complex Multiple- Input Situations (cont’d) (Some) Valid Equivalence Classes: –{ x | x is a whole number } (V) –{ x | x < 40 } (V), { x | x  40 } (V) –{ y | y = 0 } (V), { y | y > 0 } (V) –{ z | z is odd } (V) –{ (x, z) | z  x } (V)...

Dealing with Complex Multiple- Input Situations (cont’d) In such cases, a strategy for identifying appropriate COMBINATIONS of classes must be employed. A number of “combinatorial approaches” (including Cause-Effect Analysis) will be considered shortly. Clearly, the most critical issue in partition testing is the choice of an “equivalence relation” that defines the classes used.

Some Simple Heuristics for Identifying Equivalence Classes “Must Be” Situations –“First character must be a letter.” –Identify one valid and one invalid class: {1st char letter } (V), {1st char not letter} (I)

Some Simple Heuristics for Identifying Equivalence Classes (cont’d) “Range of Values” Situations –“Input HOURS will range in value from 0 to 40.” –Identify one valid and two invalid classes: { HOURS  [0,40] } (V), { HOURS < 0 } (I), { HOURS > 40 } (I)

Some Simple Heuristics for Identifying Equivalence Classes (cont’d) “Possible Differences” Situations –“For HOURS  20, output ‘Low’; for HOURS > 20, output ‘HIGH’." –If the specification suggests that values in a class may be handled differently, divide the class accordingly. { HOURS  [0,40] } (V) becomes: { HOURS  [0,20]} (V), { HOURS  (20,40] } (V)

Another Partition Testing Example Identify disjoint sets of classes for each input variable associated with the following program specification fragment. You may detect some “incompleteness” problems with the specification…

City Tax Specification 1: The first input is a yes/no response to the question “Do you reside within the city?” The second input is gross pay for the year in question. A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Equivalence Classes for City Tax Specification 1: Res? –{ yes } (V) –{ no } (V) –{ other } (I) Gross_Pay –[0, 30K] (V) –(30K,50K] (V) –(50K, MAX] (V) – < 0 (I) –> MAX (I) Note that program behaviors associated with invalid inputs are not specified!

Two-Dimensional (Valid) Input Space If we partition the space comprised of these classes based solely on the specified outputs, what would the result be? 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

Partitioning Based on Specified Output Would you be comfortable with the degree of coverage afforded by choosing ONE test case from each of these 3 partitions? Why or why not? 5%15% Res? yes no Gross_Pay  30K (30K, 50K]> 50K 1%

Partitioning Based on Specified Output Would you be comfortable with the degree of coverage afforded by choosing ONE test case from each of these 3 partitions? Why or why not? 5%15% Res? yes no Gross_Pay  30K (30K, 50K]> 50K 1%

Partitioning Based on Specified Output Would you be comfortable with the degree of coverage afforded by choosing ONE test case from each of these 3 partitions? Why or why not? 5%15% Res? yes no Gross_Pay  30K (30K, 50K]> 50K 1% (“Weak Equivalence Class Testing”)

The “Brute-Force” Approach We could “hedge our bet” by associating a sep- arate partition with every (feasible) combi- nation of classes from the sets: 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K (“Strong Equivalence Class Testing”) What are the pros and cons of this approach?

The “Brute-Force” Approach (cont’d) The “brute-force” approach of specifying a test case for each (feasible) combination of classes (i.e., for each element in the Cartesian product of the classes associated with each variable) is sometimes referred to as “Strong Equivalence Class Testing.” The term “Weak Equivalence Class Testing” refers to specifying the minimum number of test cases required to cover all classes. (This will always be the largest number of disjoint classes associated with a single variable.)

Strong and Weak Equivalence Class Testing 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K Strong: Weak:

Partitioning Based on the Implied Mapping of Inputs to Outputs An alternative to both the strong (“brute-force”) and weak equivalence class testing approaches is to consider how the specification implies that inputs are mapped to outputs. This amounts to choosing an equivalence relation by “second-guessing” how the mapping may actually be implemented based on how the specification is written. Recall from our specification…

Implied Mapping of Inputs to Outputs A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Partitioning Based on the Implied Mapping of Inputs to Outputs What does the logical mapping of inputs to outputs implied by the specification suggest about how the input space should be partitioned? 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

Implied Mapping of Inputs to Outputs A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Partitioning Based on the Implied Mapping of Inputs to Outputs 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K What does the logical mapping of inputs to outputs implied by the specification suggest about how the input space should be partitioned?

Implied Mapping of Inputs to Outputs A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Partitioning Based on the Implied Mapping of Inputs to Outputs 1%5%15% 1% What does the logical mapping of inputs to outputs implied by the specification suggest about how the input space should be partitioned? Res? yes no Gross_Pay  30K (30K, 50K]> 50K

Implied Mapping of Inputs to Outputs A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Partitioning Based on the Implied Mapping of Inputs to Outputs 1%5%15% 1% What does the logical mapping of inputs to outputs implied by the specification suggest about how the input space should be partitioned? Res? yes no Gross_Pay  30K (30K, 50K]> 50K

Implied Mapping of Inputs to Outputs A non-resident will pay 1% of the gross pay in city tax. Residents pay on the following scale: - If gross pay is no more than $30,000, the tax is 1%. - If gross pay is more than $30,000, but no more than $50,000, the tax is 5%. - If gross pay is more than $50,000, the tax is 15%.

Partitioning Based on the Implied Mapping of Inputs to Outputs 1%5%15% 1% What are the pros and cons of this approach? What does the logical mapping of inputs to outputs implied by the specification suggest about how the input space should be partitioned? Res? yes no Gross_Pay  30K (30K, 50K]> 50K

City Tax Specification 2 The first input is a yes/no response to the question “Do you reside within the city?” The second input is gross pay for the year in question. If gross pay is no more than $30,000, the tax is 1%. If gross pay is more than $30,000, but no more than $50,000 the tax is 1% for non- residents and 5% for residents. If gross pay is more than $50,000, the tax is 1% for nonresidents and 15% for residents.

City Tax Specification 2 (cont’d) What does the logical mapping of inputs to outputs implied by this specification suggest about how the input space should be partitioned? 1%5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

City Tax Specification 2 The first input is a yes/no response to the question “Do you reside within the city?” The second input is gross pay for the year in question. If gross pay is no more than $30,000, the tax is 1%. If gross pay is more than $30,000, but no more than $50,000 the tax is 1% for non- residents and 5% for residents. If gross pay is more than $50,000, the tax is 1% for nonresidents and 15% for residents.

City Tax Specification 2 (cont’d) What does the logical mapping of inputs to outputs implied by this specification suggest about how the input space should be partitioned? 5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

City Tax Specification 2 The first input is a yes/no response to the question “Do you reside within the city?” The second input is gross pay for the year in question. If gross pay is no more than $30,000, the tax is 1%. If gross pay is more than $30,000, but no more than $50,000 the tax is 1% for non- residents and 5% for residents. If gross pay is more than $50,000, the tax is 1% for nonresidents and 15% for residents.

City Tax Specification 2 (cont’d) What does the logical mapping of inputs to outputs implied by this specification suggest about how the input space should be partitioned? 5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

City Tax Specification 2 The first input is a yes/no response to the question “Do you reside within the city?” The second input is gross pay for the year in question. If gross pay is no more than $30,000, the tax is 1%. If gross pay is more than $30,000, but no more than $50,000 the tax is 1% for non- residents and 5% for residents. If gross pay is more than $50,000, the tax is 1% for nonresidents and 15% for residents.

City Tax Specification 2 (cont’d) What does the logical mapping of inputs to outputs implied by this specification suggest about how the input space should be partitioned? 5%15% 1% Res? yes no Gross_Pay  30K (30K, 50K]> 50K

Some conclusions In general, the connection between partition testing and exhaustive testing is tenuous, at best. Partitioning a complex, multi-dimensional input space based solely on differences in specified output behavior can be risky.

Some conclusions (cont’d) The “brute-force” approach of associating a separate partition with every (feasible) combination of classes (“strong equivalence class testing”) provides excellent black-box coverage, but is impractical when the number of inputs and associated sets of classes is large. “Weak equivalence class testing” ensures that all classes are covered, but not all (feasible) combinations of classes.

Some conclusions (cont’d) Choosing an equivalence relation by “second- guessing” how the mapping of inputs to outputs may actually be implemented based on how the specification is written is more in keeping with the idea that, according to the specification, every element of a given partition would be “handled” (e.g., mapped to an output) “in the same manner.”

Coming Up Next… The combinatorial approach considered next, Cause-Effect Analysis, allows for the systematic (and with appropriate tool support, automatic) partitioning of a multi- dimensional input space for different levels of coverage.