Overview Functional Testing Boundary Value Testing (BVT)

Slides:



Advertisements
Similar presentations
Forms of Equivalence Class Testing Normal • only equivalence classes are valid and invalid input values • emphasis is on "single failures" • works.
Advertisements

Overview Functional Testing Boundary Value Testing (BVT)
Decision-Table Test Case Generation. DT terminology 2.
Equivalence Class Testing
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
Software Testing and Quality Assurance
Testing an individual module
Chapter 5 Retrospective on Functional Testing Software Testing
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Equivalence Class Testing
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 9 Functional Testing
Com1040 Systems Design and Testing Part II – Testing (Based on A.J. Cowling’s lecture notes) LN-Test3: Equivalence classes and boundary conditions Marian.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
Software Testing (Part 2)
CS4311 Spring 2011 Unit Testing Dr. Guoqiang Hu Department of Computer Science UTEP.
Black-Box Testing Techniques I Software Testing Lecture 4.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
By Asst.Prof.Dr. Wararat Songpan (Rungworawut) Faculty of Computer Science, Department of Science, Khon Kaen University, Thailand 1 Chapter 3: Equivalence.
A General Discussion on Functional (Black-box) Testing What are some of the concerns of testers ? –Have we got enough time to test (effort & schedule)?
Black-Box Testing Techniques I
Sample Problems for Testing
1 Equivalence Class Testing Chapter 6. 2 Introduction Boundary Value Testing derives test cases with Massive redundancy Serious gaps Equivalence Class.
Summarizing “Structural” Testing Now that we have learned to create test cases through both: – a) Functional (blackbox)and – b) Structural (whitebox) testing.
Software Testing. Software testing is the execution of software with test data from the problem domain. Software testing is the execution of software.
Today’s Agenda  Reminder: HW #1 Due next class  Quick Review  Input Space Partitioning Software Testing and Maintenance 1.
1 Boundary Value Testing Chapter 5. 2 Introduction Input domain testing is the most commonly taught (and perhaps the most commonly used) software testing.
1 Input Space Partitioning(2). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 4  Section 4.1  Section
Overview Functional Testing Boundary Value Testing (BVT)
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.
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.
Introduction to Software Testing. Introduction 2 Four Structures for Modeling Software Graphs Logic Input Space Syntax Use cases Specs Design Source Applied.
Cause & Effect Graph Comparison Testing
Chapter 3: Equivalence Class Testing :EC Software Testing
Software Testing.
Robustness Testing by- (Group 2-Batch F1).
Boolean Algebra & Logic Gates
Subject Name: Software Testing Subject Code: 10CS842 Prepared By:
Paul Ammann & Jeff Offutt
Software Testing Structural testing 1.
Overview Theory of Program Testing Goodenough and Gerhart’s Theory
Domain Testing Functional testing which tests the application by giving inputs and evaluating its appropriate outputs. system does not accept invalid and.
Paul Ammann & Jeff Offutt
Decision Table Testing
ISP Coverage Criteria CS 4501 / 6501 Software Testing
Input Space Partition Testing CS 4501 / 6501 Software Testing
CS5123 Software Validation and Quality Assurance
Chapter 5 Retrospective on Functional Testing Software Testing
Paul Ammann & Jeff Offutt
Overview Functional Testing Boundary Value Testing (BVT)
Paul Ammann & Jeff Offutt
UNIT-4 BLACKBOX AND WHITEBOX TESTING
COSC 4506/ITEC 3506 Software Engineering
Equivalence Class Testing
CSCE 747 Software Testing and Quality Assurance
CSCE 747 Software Testing and Quality Assurance
ISP Coverage Criteria CS 4501 / 6501 Software Testing
Artificial Intelligence 12. Two Layer ANNs
Black-Box Testing Techniques II
Chapter 1: Boundary Value Testing
Triangles.
Evaluating Testing Methods by Delivered Reliability
Overview Functional Testing Boundary Value Testing (BVT)
Lecture 7: JavaScript/DOM Lab Wednesday February 7, 2018.
Black-Box Testing Techniques II
Overview Functional Testing Boundary Value Testing (BVT)
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Presentation transcript:

ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis

Overview Functional Testing Boundary Value Testing (BVT) Boundary Value Analysis Robustness Testing Worst Case Testing Special Value Testing Equivalence Class Testing Weak Equivalence Class Testing Strong Equivalence Class Testing Traditional Equivalence Class testing Decision Table Based testing

Equivalence Class Testing The use of equivalence class testing has two motivations: Sense of complete testing Avoid redundancy Two important implications for testing: The fact that the entire set is represented provides a form of completeness The disjointness assures a form of non-redundency

Equivalence Classes The idea of equivalence class testing is to identify test cases by using one element from each equivalence class. If the equivalence classes are chosen wisely this greatly reduces the potential redundancy among test cases. The key point in equivalence class testing is the choice of the equivalence relation that determines the classes (partitions). We will differentiate below, between weak and strong equivalence class testing.

Equivalence Class Selection tends to much of a “craft”: no dependence on knowledge of code, only the specification needs knowledge of input domain that usually goes beyond what an interface design spec provides familiarity with specifications must understand how inputs are mutually dependent.

Example Let us consider a program P with 3 inputs: a, b and c and the corresponding input domains are A, B, and C. let there be defined the partition:

define a1, a2 and a3 as: let ai be a “representative” or “typical” value within its respective equivalence class (e.g. the midpoint in a linear equivalence class). similarly define bi and ci. test cases can be stated for the inputs <a,b,c> in terms of the representative points. the basic idea behind the techniques is that one point within an equivalence class is just as good as any other point within the same class.(?)

Weak Equivalence Class Testing Weak equivalence class testing is accomplished by using one variable from each equivalence class in a test case. The minimum number of test cases is equal to the number of classes in the partition with the largest number of subsets. From the previous example, we have: Test Case Variable a Variable b Variable c WE1 a1 b1 c1 WE2 a2 b2 c2 WE3 a3 b3 WE4 B4

Strong Equivalence Class Testing Strong equivalence class testing is based on the Cartesian Product of the partition subsets. From the previous example, this would generate: 3 * 4 * 2 = 24 test cases Generates more test cases which test for any interaction between the representative values from each of the subsets. For either method, it may be possible to define equivalence relations for the program output, then test cases can also be based on these.

Test Case # a b c SE1 a1 b1 c1 SE2 c2 SE3 b2 SE4 C2 SE5 b3 C1 SE6 SE7

Traditional View The traditional view of equivalence class testing defines equivalence in terms of validity that is, test cases determined from the valid and invalid values for each input variable. For each input variable there are valid and invalid values. In the traditional approach, these are identified and numbered, and then incorporated into test cases in the weak sense as presented above.

Traditional View Given valid and invalid sets of inputs, the traditional equivalence testing strategy identifies test cases as follows: For valid inputs, use one value from each valid class (as in what we have called weak equivalence class testing). In this context, each input in these test cases will be valid. For invalid inputs, a test case will have one invalid value and the remaining values will be valid. In this context, a “single failure” should cause the test case to fail. If the input variables have defined ranges, then the test cases from traditional equivalence class testing will always be a subset of those that would be generated by robustness testing.

Issues with Traditional View There are two problems with the traditional equivalence testing: The first is that, very often, the specification does not define what the expected value for an invalid test case should be. The second problem is that strongly typed languages eliminate the need for the consideration of invalid inputs.

Example For example consider a program with two input variables size and weight: valid ranges: S1: 0 < size < 200 W1: 0 < weight < 1500 corresponding invalid ranges might be:

Test Cases Example (Traditional View) size weight Expected Output TE1 100 750 what ever it should be TE2 -1 invalid input TE3 1500 TE4 TE5 200

Equivalence Test Cases for the Triangle Problem (Output Domain) In the problem statement we note that there are four possible outputs: Not a Triangle Isosceles Equilateral Scalene We can use these to identify output (range) equivalence classes: R1= {<a, b, c> | the triangle with sides a, b, c, is equilateral} R2= {<a, b, c> | the triangle with sides a, b, c, is isosceles} R3= {< a, b, c> | the triangle with sides a, b, c, is scalene} R4= {a, b, c> | sides a, b, c do not form a triangle} These classes yield the following simple set of test cases:

Sample Test Cases based on Output Domain Expected Output OE1 5 Equilateral OE2 2 3 Isosceles OE3 4 Scalene OE4 1 Not a Triangle

Equivalence Test Cases for the Triangle Problem (Input Domain) If we base the equivalence classes on the input domain, we will obtain a larger set of test cases. We can define the sets: D1= {<a,b,c> | a=b=c} D2= {<a,b,c> | a=b, a≠c} D3= {<a,b,c> | a=c, a≠b} D4= {<a,b,c> | b=c, a≠b} D5= {<a,b,c> | a≠b, a≠c, b≠c} As a separate property we can apply the triangle property to see even if the input constitutes a triangle D6= {<a, b, c> | a ≥ b+c} D7= {<a, b, c> | b ≥ a+c} D8= {<a, b, c> | c ≥ a+b} If we wanted also we could split D6 into D6’={<a, b, c> | a = b+c} and D6’’= {<a, b, c> | a > b+c}

Equivalence Test Cases for the NextDate Problem (Input Domain) Nextdate is a function of three variables, month, day, and year and these have ranges defined as: 1 ≤ month ≤ 12 1 ≤ day ≤ 31 1812 ≤ year ≤ 2012 We will examine below the valid, invalid equivalence classes, strong, and weak equivalence class testing.

Traditional Test Cases The valid equivalence classes are: M1= {month | 1 ≤ month ≤ 12} D1= {day | 1 ≤ day ≤ 31} Y1= {year | 1812 ≤ year ≤ 2012} The invalid equivalence classes are: M2= {month | month < 1} M3= {month | month > 12} D2= {day | day < 1} D3= {day | day > 31} Y2= {year | year < 1812} Y3= {year | year > 2012} These classes yield the following test cases, where the valid inputs are mechanically selected from the approximate middle of the valid range:

Traditional Test Cases Case ID Month Day Year Expected Output TE1 6 15 1912 6/16/1912 TE2 -1 Invalid TE3 13 TE4 TE5 32 TE6 1811 TE7 2013

Choice of Equivalence Classes If we more carefully chose the equivalence relation, the resulting equivalence classes will be more useful M1= {month | month has 30 days} M2= {month | month has 31 days} M3= {month | month is February} D1= {day | 1 ≤ day ≤ 28} D2= {day | day = 29} D3= {day | day = 30} D4= {day | day=31} Y1= {year | year = 1900} Y2= {year | 1812 ≤ year ≤ 2012 AND year ≠ 1900 AND (year = 0 mod 4} Y3= {year | 1812 ≤ year ≤ 2021 AND year ≠ 0 mod 4}

Weak Equivalence Class Test Cases Case ID Month Day Year Expected Output WE1 6 14 1900 6/15/1900 WE2 7 29 1912 7/30/1912 WE3 2 30 1913 Invalid WE4 31

Strong Equivalence Test Cases CASE ID Month Day Year Output SE1 6 14 1900 6/15/1900 SE2 1912 6/15/1912 SE3 1913 6/15/1913 SE4 29 6/30/1900 SE5 6/30/1912 SE6 6/30/1913 SE7 30 7/1/1900 SE8 7/1/1912 SE9 7/1/1913 SE10 31 ERROR SE11 SE12 SE13 7 7/15/1900 SE14 7/15/1912 SE15 7/15/1913 SE16 7/30/1900 SE17 7/30/1912 SE18 7/30/1913

Strong Equivalence Test Classes CASE ID Month Day Year Output SE19 7 30 1900 7/31/1900 SE20 1912 7/31/1912 SE21 1913 7/31/1913 SE22 31 8/1/1900 SE23 8/1/1912 SE24 8/1/1913 SE25 2 14 2/15/1900 SE26 2/15/1912 SE27 2/15/1913 SE28 29 ERROR SE29 3/1/1912 SE30 SE31 SE132 SE33 SE34 SE35 SE36

Guidelines and Considerations The traditional form of equivalence testing is generally not as thorough as weak equivalence testing, and in its turn, not as thorough as strong equivalence testing If error conditions is a priority we can extend strong equivalence testing to include invalid classes Equivalence class testing is appropriate when input data is defined in terms of ranges and sets of discrete values. Logic of functionality of the program can help define the equivalence classes Strong equivalence takes the presumption that variables are independent, otherwise it generates some “error” test cases Can be strengthened by using it with domain testing (boundary value) – reuse the work to define the ranges. Does not consider elements at equivalence class boundaries need to expand ECT to include BVT-like requirements (domain testing)