Necessity of Systematic & Automated Testing Techniques Moonzoo Kim CS Dept, KAIST.

Slides:



Advertisements
Similar presentations
Formal Methods and Testing Goal: software reliability Use software engineering methodologies to develop the code. Use formal methods during code development.
Advertisements

Automated Test Data Generation Maili Markvardt. Outline Introduction Test data generation problem Black-box approach White-box approach.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Practical Testing Techniques. Verification and Validation Validation –does the software do what was wanted? “Are we building the right system?” –This.
1 Formal Methods in SE Qaisar Javaid Assistant Professor Lecture 05.
1 Software Testing and Quality Assurance Lecture 5 - Software Testing Techniques.
1 Functional Testing Motivation Example Basic Methods Timing: 30 minutes.
Testing Dr. Andrew Wallace PhD BEng(hons) EurIng
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Provable Software Laboratory Moonzoo Kim
Class Specification Implementation Graph By: Njume Njinimbam Chi-Chang Sun.
Software Testing.
University of Toronto Department of Computer Science CSC444 Lec08 1 Lecture 8: Testing Verification and Validation testing vs. static analysis Testing.
Coverage – “Systematic” Testing Chapter 20. Dividing the input space for failure search Testing requires selecting inputs to try on the program, but how.
Ch6: Software Verification. 1 Decision table based testing  Applicability:  Spec. is described by a decision table.  Tables describe:  How combinations.
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
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
Software Testing. 2 CMSC 345, Version 4/12 Topics The testing process  unit testing  integration and system testing  acceptance testing Test case planning.
Testing and Debugging Version 1.0. All kinds of things can go wrong when you are developing a program. The compiler discovers syntax errors in your code.
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.
Test Coverage CS-300 Fall 2005 Supreeth Venkataraman.
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.
1 Program Testing (Lecture 14) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
Random Testing of Concurrent Programs Prof. Moonzoo Kim Computer Science, KAIST CS492B Analysis of Concurrent Programs.
White Box Testing Arun Lakhotia University of Southwestern Louisiana P.O. Box Lafayette, LA 70504, USA
Q1:Royal Garden’s Puzzle as a Model Checking Problem Pictures from UbiSoft HW6: Due Dec 4th 23:59.
Software Construction Lecture 19 Software Testing-2.
08120: Programming 2: SoftwareTesting and Debugging Dr Mike Brayshaw.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Testing Data Structures Tao Xie Visiting Professor, Peking University Associate Professor, North Carolina State University
Concurrency Analysis for Correct Concurrent Programs: Fight Complexity Systematically and Efficiently Moonzoo Kim Computer Science, KAIST.
Dynamic Testing.
Agenda  Quick Review  Finish Introduction  Java Threads.
SOFTWARE TESTING. SOFTWARE Software is not the collection of programs but also all associated documentation and configuration data which is need to make.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
Testing Integral part of the software development process.
Topics  Direct Predicate Characterization as an evaluation method.  Implementation and Testing of the Approach.  Conclusions and Future Work.
Testing Data Structures
Software Testing.
Software Testing.
Moonzoo Kim SWTV Group CS Dept. KAIST
Software Engineering (CSI 321)
Input Space Partition Testing CS 4501 / 6501 Software Testing
Chapter 5 Retrospective on Functional Testing Software Testing
Software engineering – 1
Moonzoo Kim CS Dept. KAIST
Types of Testing Visit to more Learning Resources.
Moonzoo Kim CS Dept. KAIST
CHAPTER 4 Test Design Techniques
Software Development Cycle
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Moonzoo Kim SWTV Group CS Dept. KAIST
Software Testing (Lecture 11-a)
Quality Concurrent SW - Fight the Complexity of SW
Graph Coverage for Source Code
Moonzoo Kim SWTV Group CS Dept. KAIST
Software Development Cycle
Software Development Cycle
CSE 1020:Software Development
HW6: Due Dec 14 23:59 To specify a corresponding Promela specification
HW6: Due Nov 26 23:59 To specify a corresponding Promela specification
Intro. To Quality Software - Fight the Complexity of SW
Intro. To Quality Software - Fight the Complexity of SW
UNIT-4 BLACKBOX AND WHITEBOX TESTING
HW6: Due Dec 20 23:59 To specify a corresponding Promela specification
Presentation transcript:

Necessity of Systematic & Automated Testing Techniques Moonzoo Kim CS Dept, KAIST

2 Remarks by Bill Gates 17th Annual ACM Conference on Object-Oriented Programming, Systems Languages, and Applications, Seattle, Washington, November 8, 2002 “… When you look at a big commercial software company like Microsoft, there's actually as much testing that goes in as development. We have as many testers as we have developers. Testers basically test all the time, and developers basically are involved in the testing process about half the time…” “… We've probably changed the industry we're in. We're not in the software industry; we're in the testing industry, and writing the software is the thing that keeps us busy doing all that testing.” “…The test cases are unbelievably expensive; in fact, there's more lines of code in the test harness than there is in the program itself. Often that's a ratio of about three to one.”

Ex. Testing a Triangle Decision Program Moonzoo Kim3/11 Input : Read three integer values from the command line. The three values represent the length of the sides of a triangle. Output : Tell whether the triangle is 부등변삼각형 (Scalene) : no two sides are equal 이등변삼각형 (Isosceles) : exactly two sides are equal 정삼각형 (Equilateral) : all sides are equal Create a Set of Test Cases for this program (3,4,5), (2,2,1), (1,1,1) ?

Precondition (Input Validity) Check Moonzoo Kim4/11 Condition 1: a > 0, b > 0, c > 0 Condition 2: a < b + c – Ex. (4, 2, 1) is an invalid triangle – Permutation of the above condition a < b +c b < a + c c < a + b What if b + c exceeds 2 32 (i.e. overflow)? – long v.s. int v.s. short. v.s. char Developers often fail to consider implicit preconditions – Cause of many hard-to-find bugs

Moonzoo Kim5/11 # of test cases required? ①4①4 ②10 ③50 ④100 # of feasible unique execution paths? 11 paths guess what test cases needed “Software Testing a craftsman’s approach” 2 nd ed by P.C.Jorgensen (no check for positive inputs)

More Complex Testing Situations (1/3) Moonzoo Kim6/11 Software is constantly changing – What if “integer value” is relaxed to “floating value” ? Round-off errors should be handled explicitly – What if new statements S 1 … S n are added to check whether the given triangle is 직각삼각형 (a right angle triangle)? Will you test all previous tests again? How to create minimal test cases to check the changed parts of the target program

More Complex Testing Situations (2/3) Moonzoo Kim7/11 Regression testing is essential – How to select statements/conditions affected by the revision of the program? – How to create test cases to cover those statements/conditions? – How to create efficient test cases? How to create a minimal set of test cases (i.e. # of test cases is small)? How to create a minimal test case (i.e. causing minimal execution time)? – How to reuse pre-existing test cases?

More Complex Testing Situations (3/3) Moonzoo Kim8/11 However, conventional coverage is not complete – Ex. Int adder(int x, int y) { return 3;} Test case (x=1,y=2) covers all statements/branches of the target program and detects no error In other words, all variable values must be explored for complete results Formal verification aims to guarantee completeness – Model checking analyzes all possible x, y values through 2 64 (=2 32 x 2 32 ) cases – However, model checking is more popular for debugging, not verification

Concurrency 9/11 Concurrent programs have very high complexity due to non-deterministic scheduling Ex. int x=0, y=0, z =0; void p() {x=y+1; y=z+1; z= x+1;} void q() {y=z+1; z=x+1; x=y+1;} – Total 20 interleaving scenarios = (3+3)!/(3!x3!) – However, only 11 unique outcomes p() q() x=y+1 y=z+1 z=x+1 x=y+1 y=z+1 z=x+1 Trail1: 2,2,3 Trail2: 3,2,4 Trail3: 3,2,3 Trail4: 2,4,3 Trail5: 5,4,6 Trail6: 5,4,3 Trail7: 2,1,3 Trail8: 2,3,3 Trail9: 4,3,5 Trail10: 4,3,2 Trail11: 2,1,2

10 An Example of Mutual Exclusion Protocol char cnt=0,x=0,y=0,z=0; void process() { char me=_pid +1; /* me is 1 or 2*/ again: x = me; If (y ==0 || y== me) ; else goto again; z =me; If (x == me) ; else goto again; y=me; If(z==me); else goto again; /* enter critical section */ cnt++; assert( cnt ==1); cnt --; goto again; } Mutual Exclusion Algorithm Critical section Software locks Process 0 x = 1 If(y==0 || y == 1) z = 1 If(x == 1) y = 1 If(z == 1) cnt++ Process 1 x = 2 If(y==0 || y ==2) z = 2 If(x==2) y=2 If (z==2) cnt++ Counter Example Violation detected !!!

More Concurrency Bugs Data race bugs 11 Atomicity bugs class Account_DR { double balance; // INV:balance should be always non-negative void withdraw(double x) { 1: if (balance >= x) { 2: balance = balance – x;}... }} [Initially, balance:10] -th1: withdraw(10)- 1: if(balance >= 10) 2: balance = 0 – 10; -th2: withdraw(10)- 1: if(balance >= 10) 2: balance = 10-10; (a) Buggy program code (b) Erroneous execution The invariant is violated as balance becomes -10. class Account_BR { Lock m; double balance; // INV: balance should be non-negative double getBalance() { double tmp; 1: lock(m); 2: tmp = balance ; 3: unlock(m); 4: return tmp; } void withdraw(double x){ region begins*/ 11: if (getBalance() >= x){ 12: lock(m); 13: balance = balance – x; 14: unlock(m); } region ends*/... } -th2 : withdraw(10) : lock(m); 13: balance=10 – 10; 14: unlock(m); [Initially, balance:10 ] -th1: withdraw(10)- 11:if(getBalance()>=10) getBalance() 1:lock(m); 2:tmp = balance; 3:unlock(m); 4:return tmp; 12: lock(m); 13: balance=0 – 10; 14: unlock(m); (a) Buggy program code (b) Erroneous execution The invariant is violated as balance becomes -10. operation block b i

Summary 1.Software = a large set of unique executions 2.SW testing = to find an execution that violates a given requirement among the large set – A human brain is poor at enumerating all executions of a target SW, but computer is good at the task 3.Automated SW testing = to enumerate and analyze the executions of SW systematically (and exhaustively if possible) 12

Black Box Testing Moonzoo Kim13/11 A main goal of testing is to generate multiple test cases, one of which may reveal a bug. Black box testing concerns only input/output of a target program (i.e., ignore program code) – Ex1. Requirement specification based testing – Ex2. Random (input generation) testing – Ex3. Category partitioning method – Ex4. T-way testing Advantage of black box testing – Intuitive and simple – Requires little expertise on program/code analysis techniques – Requires less effort compared to white-box testing cheaper but less effective

White Box Testing Moonzoo Kim14/11 White box testing concerns program code itself Many different viewpoints on “program code” – program code as a graph (i.e., structural coverage) – program code as a set of logic formulas (i.e., logical coverage) – program code as a set of execution paths (i.e., behavioral/dynamic coverage) Advantages: – More effective than blackbox testing in general – Can measure the testing progress quantitatively based on coverage achieved Should be used with blackbox testing together for maximal bug detection capability – Blackbox testing and whitebox testing often explore different segments of target program space