Institute of Computing Tech.

Slides:



Advertisements
Similar presentations
Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves.
Advertisements

Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
DETAILED DESIGN, IMPLEMENTATIONA AND TESTING Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Character String Predicate Based Automatic Software Test Data Generation Ruilian Zhao Computer Science Dept. Beijing University of Chemical Technology.
Domain Testing Based on Character String Predicate Ruilian Zhao Computer Science Dept. Beijing University of Chemical Technology Michael R. Lyu Computer.
Chapter 18 Testing Conventional Applications
1 Software Testing and Quality Assurance Lecture 5 - Software Testing Techniques.
Software Testing and QA Theory and Practice (Chapter 6: Domain Testing) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
Software Testing and QA Theory and Practice (Chapter 4: Control Flow Testing) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 9 Functional Testing
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Structural Coverage Verilog code is available to help generate tests o Code can be analyzed statically and/or simulated Easier to detect “additive” design.
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.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Overview of Software Testing 07/12/2013 WISTPC 2013 Peter Clarke.
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
Test Drivers and Stubs More Unit Testing Test Drivers and Stubs CEN 5076 Class 11 – 11/14.
Test Coverage CS-300 Fall 2005 Supreeth Venkataraman.
INTRUDUCTION TO SOFTWARE TESTING TECHNIQUES BY PRADEEP I.
Introduction to Problem Solving. Steps in Programming A Very Simplified Picture –Problem Definition & Analysis – High Level Strategy for a solution –Arriving.
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.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Quality Assurance in the Presence of Variability Kim Lauenroth, Andreas Metzger, Klaus Pohl Institute for Computer Science and Business Information Systems.
1 Software Testing and Quality Assurance Theory and Practice Chapter 6 Domain Testing.
1 © 2011 Professor W. Eric Wong, The University of Texas at Dallas Requirements-based Test Generation for Functional Testing W. Eric Wong Department of.
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 LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
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.
Testing Data Structures
Functional testing, Equivalence class testing
A Review of Software Testing - P. David Coward
Advanced Computer Systems
PERFORMANCE EVALUATIONS
Software Testing.
Testing Tutorial 7.
CS223: Software Engineering
Software Testing.
Rekayasa Perangkat Lunak Part-13
Control Flow Testing Handouts
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 4 Control Flow Testing
Solving Systems of Equations in Two Variables; Applications
Cyclomatic complexity
Software Engineering (CSI 321)
CompSci 230 Software Construction
Simulation based verification: coverage
Verification & Validation
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 6 Domain Testing
Outline of the Chapter Basic Idea Outline of Control Flow Testing
Structural testing, Path Testing
Mathematical Induction Recursion
Software Development Cycle
Quantum Two.
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Objective of This Course
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Verification and Validation
Control Structure Testing
Software Verification and Validation
Laboratory of Advanced Research on Software Technology
Software Testing “If you can’t test it, you can’t design it”
Software Verification and Validation
Software Development Cycle
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software Testing and QA Theory and Practice (Chapter 5: Data Flow Testing) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
Presentation transcript:

Institute of Computing Tech. A New Software Testing Approach Based on Domain Analysis of Specifications and Programs Ruilian Zhao Computer Science Dept. Beijing University of Chemical Technology Yinghua Min Institute of Computing Tech. Chinese Academy of Sciences in Beijing Michael R. Lyu Computer Science Dept. Chinese University of Hong Kong 2019/4/6

Outline Introduction The domain testing approach 2019/4/6 Outline Introduction The domain testing approach Program operational domain Example study Conclusion

2019/4/6 Introduction Software testing can usually be classified into two categories: functional testing and structural testing. An obvious problem is that program control structures or software specifications themselves may be incorrect. Consequently, if testers have some knowledge about the structure as well as the specification of the program under test, better test effectiveness can be achieved.

Introduction A key issue in software testing is 2019/4/6 Introduction A key issue in software testing is how to select test data from program input domain. There are a large number of test data selection strategies, such as equivalence partitioning, path testing, boundary value analysis, domain testing and so on. All of these strategies are based on partitioning input domain, referred to as partition testing.

Introduction However, we will show with an example that 2019/4/6 Introduction However, we will show with an example that partition testing strategies are relatively ineffective in detecting faults having to do with small shifts in input domain boundary.

Introduction code implementation Software specification functional domain operational domain Coincidence? If the two domains are not coincided with each other exactly, some software faults may be located.

Introduction we present a new software testing approach, 2019/4/6 Introduction we present a new software testing approach, referred to as a domain analysis testing approach based on specifications and programs. Test cases are generated from coincidence verification of functional domain and operational domain of the program under test.

Introduction In order to obtain operational domain of a program, 2019/4/6 Introduction In order to obtain operational domain of a program, we have developed an automated determination system of operational domain, called ADSOD. A preliminary evaluation on fault detection effectiveness and code coverage illustrates that the domain analysis testing approach is highly effective in detecting faults due to small shifts in the input domain boundary, and is more economical in test case generation than the partition testing strategies.

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection By the domain D of a program, we mean a cross product : where xi (i=1,2,…,n) is an input variable of the program. The projection of domain D on xi axis, represented by Dxi, is a subset of the one dimension space. It satisfies

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection Definition 1: Reflecting domain of projection. By reflecting domain R(D,xi=a) of projection of domain D on xi axis, we mean in n-1 dimension space where xi  Dxi.

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection We define the following reflecting domains in succession: … where are constants

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection Theorem 1: Let D be an n-dimension bounded closed convex domain. Let be defined as above. Then . B(D) denote the set of boundary points of domain D.

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection This can be explained with a sphere domain D, shown in Fig.2. The reflecting domain of projection of D on x1 axis, i.e. RD1=R(D,x1=a1), is the gray circle, and that of on x2 axis, i.e. RD2=R(RD1,x2=a2), is the line Q1Q2. It can be seen that the set of boundary points of the line belongs to that of the circle, and the set of boundary points of the circle belongs to that of the sphere, namely B(RD2) B(RD1)  B(D) .

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection By above successive definition, we have that is a one dimension subset of the original domain D, that is, We denote it by .

The domain testing approach 2019/4/6 The domain testing approach 1. The principle of boundary test case selection Definition 2: The set of boundary test cases T(D). Let be a center point of projection of domain on axis , respectively. The set of boundary test cases of domain D is defined as follows:

The domain testing approach 2019/4/6 The domain testing approach The following claim describes how to select boundary test cases to verify the coincidence of the two domains. Claim: Suppose functional domain and operational domain are bounded closed convex. Then, the sufficient and necessary condition that the two domain coincides with domain is: 1). ; 2). For point in any neighborhood of point q, or then, either or .

The domain testing approach In order to check the coincidence of functional domain and operational domain , not only the sets of boundary test cases T(Df) and T(Dp) need to be examined, but also some test cases in neighborhoods of the boundary points should be taken into consideration by above claim.

The domain testing approach 2019/4/6 The domain testing approach 2. Test data generation based on the domain analysis The test data generation based on the domain analysis consists of the following steps: Find out all input variables from both the specification and the program under test. 2) Derive That is, for all a): compute and . b): check whether is true or false. If B(RDf(xi)) B(RDp(xi)), either the specification or the program should be modified until B(RDf(xi))= B(RDp(xi))

The domain testing approach 2019/4/6 The domain testing approach 2. Test data generation based on the domain analysis 3) Develop test case according to or . Each or has 2 boundary points. Test cases take three values for each boundary point, that is, the boundary point itself, boundary point + , and boundary point - , where  is a small amount. So, 2*3 test cases are produced for each input variable xi.

The domain testing approach 2019/4/6 The domain testing approach As a result, the testing approach only needs 2*3*n test cases, where n is the number of input variables. However, in boundary-interior path testing, 6L test cases are required in the worst case. In domain testing, 2*N*M test points are required. However, in boundary-interior path testing, 6L test cases are required in the worst case, where L is the number of loops of the program, on the assumption that each loop contains an IF-THEN-ELSE statement. In domain testing, 2*N*M test points are required in the worst case, where N is the number of program paths, and M is the number of predicates on a chosen path. It is obvious that the domain analysis testing approach enjoys the advantage of fewer test cases than path testing and domain testing, and the test generation is independent on path selection

Program operational domain 2019/4/6 Program operational domain The determination of program operational domain is a foundation for the domain analysis testing approach. We develop an automated determination system of operational domain, called ADSOD, whose input is a program written in C programming language, and the output is its operational domain .

Program operational domain 2019/4/6 Program operational domain Firstly, the pro-processor is derived to create the various tables and to construct the procedures based_on_expression_er() for specific expressions. Secondly, the procedures are complied together with original program P to generate executable codes. Then, the domain Dxi is computed by invoking the module domain_determination(). where r is the serial number of the procedure corresponding to rth specific expression.

Program operational domain 2019/4/6 Program operational domain A specific expression e is the one that the variables in e are related to input variable and e can not take some values due to some constraints, such as when e is used as a divisor or as a parameter of some standard subroutines In order to identify illegal values of input variables in a specific expression e, we construct a procedure, based_on_expression_er(), with respect to the expression e by using program slicing technique.

Program operational domain 2019/4/6 Program operational domain The procedure, based_on_expression_er(), is made up of a slice and some instrumentation statements. The illegal values of input variables x for the expression e can be identified by executing the procedure.

Program operational domain 2019/4/6 Program operational domain To verify the validity of the ADSOD system, a number of different kinds of practical programs have been executed. Experimental results illustrate that ADSOD supports not only the determination of input domain of integer and real data types, but also non-numeric data types such as characters string types.

2019/4/6 Example study We compare the effectiveness of our domain analysis testing approach with partition testing strategies in fault detection with an example MaxMin, which is a variation of the program taken from reference[14] There are 30 feasible paths in the MaxMin program according to its control flow graph. 30 test cases are generated as to these feasible paths, denoted by test_set_1= , and MaxMin program are executed with these test cases.

These test cases reveal three software faults in MaxMin: 2019/4/6 Example study These test cases reveal three software faults in MaxMin: Fault 1). Line14: Checking option “-ceiling” should be put down before the line 12. Fault 2). Line16: The exit of error should be added when arg[1] is not given. Fault 3). Line20: The exit of error

2019/4/6 Example study The simplified domain testing strategy is applied to develop ON-OFF test points for each border of each path domain. In the worse case, there are 30+312=342 ON-OFF test points. However, they only detect the same three software faults.

Example study The operational domain of MaxMin program can be 2019/4/6 Example study The operational domain of MaxMin program can be obtained by calling the ADSOD system. The functional domain is specified by its specification. Since the specification does not specifies the values that input variables can hold. The specification should be described in more detailed, such that . In test_set_2, some test cases satisfy more than one test requirements.

Example study Test requirements can be produced according to T(Dp) 2019/4/6 Example study Test requirements can be produced according to T(Dp) On the basis of these test requirements, 15 test cases are developed, test_set_2= and MaxMin program are run with these test cases. In test_set_2, some test cases satisfy more than one test requirements.

Example study The test cases expose five software faults. They are: 2019/4/6 Example study The test cases expose five software faults. They are: Fault 4). Line 16: The BUFSIZE should be BUFSIZE –1. Fault 5). Line 20: The BUFSIZE should be BUFSIZE –1. Fault 6). Line 38: The BUFSIZE should be given. Fault 7). The value of arguments should be between –9223372036854775808 and 9223372036854775807. Fault 8). Line14: Checking option ‘-ceiling’ should be put down before the line 12. In these faults, only fault 8) is same as the fault 1).

Example study We measure the coverage of 2019/4/6 Example study We measure the coverage of test_set_1, test_set_2 and test_set_1 + test_set_2 using ATAC The coverage of test_set_1 is same as that of test_set_1+ test_set_2, but it only finds three faults in MaxMin program. This demonstrates that two test sets with identical coverage could have very different fault detection effectiveness. the coverage of test_set_2 is smaller than that of test_set_1, but test_set_2 finds five faults. This demonstrates that two test sets with identical coverage could have very different fault detection effectiveness.

Conclusion This domain analysis testing approach 2019/4/6 Conclusion This domain analysis testing approach is different from boundary value analysis. Preliminary experimental results indicate that the new testing approach is highly effective in detecting the faults related to small shifts in input domain boundary, and is more economical in test case generation than the partition testing strategies. Boundary value analysis, according to an identified equivalence class, produces test cases that lie close to a sub-domain boundary to check the program behavior, belonging to partition testing strategies. The domain analysis testing approach, generates test cases by verifying the coincidence of operational domain and functional domain to find the faults that are resulted from the discrepancies between these two domains.

Thank you