Software Unit Test Coverage And Test Adequacy Hong

  • Slides: 26
Download presentation
Software Unit Test Coverage And Test Adequacy Hong Zhu, Patrick A. V. Hall, John

Software Unit Test Coverage And Test Adequacy Hong Zhu, Patrick A. V. Hall, John H. R. May Presented By: Arpita Gandhi 1

Goal l Survey recent research on software test criteria in the last two decades

Goal l Survey recent research on software test criteria in the last two decades Put it into a uniform framework Address issues like l Defining a test criterion l Understanding different test adequacy criteria l Whether they are worth the cost l Future directions for this subject 2

Importance today l Critical feature in the software development cycle l Identify correctness, completeness

Importance today l Critical feature in the software development cycle l Identify correctness, completeness Quality assurance Verification and validation Reliability estimation l l l http: //www. aptest. com/resources. html 3

Previous Work-Test Adequacy A software test adequacy criterion is a predicate that defines what

Previous Work-Test Adequacy A software test adequacy criterion is a predicate that defines what properties of a program must be exercised to constitute a thorough test. Proposed test criteria : Reliability- producing consistent results Validity – producing meaningful results Not practicably applicable Reliability and validity closely related and not independent. 4

Current Work-Test Adequacy Notions associated with a test adequacy criterion l It is a

Current Work-Test Adequacy Notions associated with a test adequacy criterion l It is a stopping rule: l Determines if sufficient testing is done that it can stop. l E. g. execution of all statements for statement coverage l It provides measurements of test quality: l Degree of adequacy l E. g. Percent of code coverage 5

Uses of Test Adequacy Criteria l Specify a software testing requirement l Determine test

Uses of Test Adequacy Criteria l Specify a software testing requirement l Determine test cases to satisfy requirement l Determine observations that should be made during testing l Control the cost of testing l Avoid redundant and unnecessary tests l Help assess software dependability l Build confidence in the integrity estimate 6

Categories of Adequacy Criteria Based on: l Source of information to specify testing requirements

Categories of Adequacy Criteria Based on: l Source of information to specify testing requirements l Specification based l Program based l Combined l Interface based l Underlying testing approach l Structural l Fault based l Error based 7

Structural Testing Criteria Structural Testing Program-Based Control Flow Based Statement Branch Specification-Based Data Flow

Structural Testing Criteria Structural Testing Program-Based Control Flow Based Statement Branch Specification-Based Data Flow Based Path Dependence coverage Mutation 8

Control flow – based testing Statement Coverage l Execute every statement at least once

Control flow – based testing Statement Coverage l Execute every statement at least once l The simplest , weakest type of testing int* p = NULL; if (condition) { p = &variable; *p = 1; } *p = 0; void function(const char* string 1, const char* string 2) { if (condition || strcmp(string 1, string 2) == 0). . . } Useful link: http: //www. bullseye. com/line. Coverage. html 9

Control flow-based testing Branch Coverage l l l Exercise all control statements in the

Control flow-based testing Branch Coverage l l l Exercise all control statements in the program Subsumes statement coverage All combinations of control transfers may not be checked if (condition 1 && (condition 2 || function 1( ))) statement 1; else statement 2; 10

Control flow-based testing Path Coverage l Execute all paths from program’s entry to exit

Control flow-based testing Path Coverage l Execute all paths from program’s entry to exit l Subsumes branch coverage Number of paths is exponential to the number of branches Many paths are impossible to exercise if (success) statement 1; statement 2; if (success) statement 3; 11

Control flow-based testing Criteria Inclusion Hierarchy Path Coverage Branch Coverage Statement Coverage 12

Control flow-based testing Criteria Inclusion Hierarchy Path Coverage Branch Coverage Statement Coverage 12

Data flow-based testing Structural Testing Program-Based Control Flow Based Specification-Based Data Flow Based Simple

Data flow-based testing Structural Testing Program-Based Control Flow Based Specification-Based Data Flow Based Simple Definition-Use Coverage Dependence coverage Testing for structured and dynamic data Inter-procedural testing 13

Data flow-based testing l Definition Occurance – Where a value is bound to the

Data flow-based testing l Definition Occurance – Where a value is bound to the variable. (x=1) l Use Occurance- Where the value is referred (a=x) l C-use : if used compute a value or as an output (n=x+1) l Global c-use: Value is assigned in a block other than the one in which it is being used. l Local c-use l P-use: if used to decide whether a predicate is true (x>0) l Definition-Clear path w. r. t x: for all nodes in the path, there is no definition occurance of x 14

Data flow-based testing Simple definition use coverage l l l If variable x has

Data flow-based testing Simple definition use coverage l l l If variable x has a global definition in node i, All definitions Criterion : test data covers some path which goes from i to a node or edge at which the value assigned to x in node i is used All Uses Criterion : test data covers at least one path which goes from i to each node and edge at which the value assigned to x in node i is used All-du-paths: test data covers all paths which go from i to each node and edge at which the value assigned to x in node i is used are exercised There may be infinitely many such paths 15

Data flow-based testing 1 2 3 4 5 7 6 8 9 16

Data flow-based testing 1 2 3 4 5 7 6 8 9 16

Data flow-based testing Criteria Inclusion Hierarchy All-paths All-du-paths All-uses All-c/some-p-uses All-p/some-c-uses All-p-uses All-definitions All-c-uses

Data flow-based testing Criteria Inclusion Hierarchy All-paths All-du-paths All-uses All-c/some-p-uses All-p/some-c-uses All-p-uses All-definitions All-c-uses 17

Data flow-based testing For structured and dynamic data l Limitations of testing criteria seen

Data flow-based testing For structured and dynamic data l Limitations of testing criteria seen so far: No distinction between atomic (integers) and structured data arrays and records) A[0 l = A[il; A[i] = A[j]; A[jl = A[0 l; There is a DU path from each statement to the next. The actual DU path should involve A [0] in the first and last statement. l Proposed solution: Treat structured data elements as independent data May lead to infinite du paths to be tested. 18

Data flow-based testing Inter-procedural data-flow testing Test data-dependence among procedure interfaces Types of data

Data flow-based testing Inter-procedural data-flow testing Test data-dependence among procedure interfaces Types of data dependence f(P) l Direct l Definition occurs in procedure P, f(Q) use in directly called procedure Q l Indirect f(R) l Considers multiple levels of calls and returns l Definition occurs in P , use in G. Example: Class Q extends P, R extends Q 19

Fault-based testing criteria Error Seeding l Estimate the number of faults that remain l

Fault-based testing criteria Error Seeding l Estimate the number of faults that remain l Measure quality of software testing r= # artificial faults detected # of artificial faults f = # of not seeded errors detected Estimated no. of inherent faults = (1/r)*f l Applicable to any testing method l Dependent on how faults are introduced 20

Fault-based testing criteria Program Mutation Testing Mutant: A program with a planted fault l

Fault-based testing criteria Program Mutation Testing Mutant: A program with a planted fault l Execute mutants on each member of test set l Compare results l Mutation Adequacy Score =D/N D=No. of dead mutants N = No. of non equivalent mutants c = a + b; R 1 c = a – b; R 2 If (R 1 = R 2): mutant is alive otherwise it is killed. 21

Fault-based testing criteria Variants of Program Mutation Testing l Weak Mutation Testing l proposed

Fault-based testing criteria Variants of Program Mutation Testing l Weak Mutation Testing l proposed to improve efficiency l mutate and test components l Firm Mutation Testing l Select portion of program , subset of parameters and mutate them. l Compare original and changed versions l Less expensive than strong mutation testing, more efficient than weak mutation testing l No basis to select area of program code, parameters 22

Fault-based testing criteria Criteria Inclusion Hierarchy Strong Mutation Testing Firm Mutation Testing Weak Mutation

Fault-based testing criteria Criteria Inclusion Hierarchy Strong Mutation Testing Firm Mutation Testing Weak Mutation Testing 23

Fault-based testing criteria Perturbation Testing Tests the robustness of a program l Predicted fault

Fault-based testing criteria Perturbation Testing Tests the robustness of a program l Predicted fault tolerance = # of faults detected total # of executions l A perturbation function is applied to change the data state Example: int perturbation (int x) { int changed. X; changed. X = x + 50; return changed. X; } l 24

Fault-based testing criteria Perturbation Testing Original program main() {int x; x = get. Val();

Fault-based testing criteria Perturbation Testing Original program main() {int x; x = get. Val(); if (x > 0) printf(“X is positive”); else printf(“X is negative”); } Fault injected program main() {int x; x = get. Val(); x = perturbation(x); if (x > 0) printf(“X is positive”); else printf(“X is negative”); } 25

Summary All-paths All-du-paths Strong Mutation Testing All-uses Firm Mutation Testing All-c/some-p-uses All-p/some-c-uses Weak Mutation

Summary All-paths All-du-paths Strong Mutation Testing All-uses Firm Mutation Testing All-c/some-p-uses All-p/some-c-uses Weak Mutation Testing All-p-uses All-definitions All-c-uses Branch Coverage Statement Coverage 26