White Box and Black Box Testing

Slides:



Advertisements
Similar presentations
White Box and Black Box Testing Tor Stålhane. What is White Box testing White box testing is testing where we use the info available from the code of.
Advertisements

SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Grey Box testing Tor Stålhane. What is Grey Box testing Grey Box testing is testing done with limited knowledge of the internal of the system. Grey Box.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Creator: ACSession No: 13 Slide No: 1Reviewer: SS CSE300Advanced Software EngineeringFebruary 2006 Testing - Techniques CSE300 Advanced Software Engineering.
Chapter 17 Software Testing Techniques
1 “White box” or “glass box” tests “White Box” (or “Glass Box”) Tests.
Ch6: Software Verification. 1 Statement coverage criterion  Informally:  Formally:  Difficult to minimize the number of test cases and still ensure.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
IMSE Week 18 White Box or Structural Testing Reading:Sommerville (4th edition) ch 22 orPressman (4th edition) ch 16.
CS 425/625 Software Engineering Software Testing
Testing an individual module
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Path testing Path testing is a “design structural testing” in that it is based on detailed design & the source code of the program to be tested. The methodology.
Test coverage Tor Stålhane. What is test coverage Let c denote the unit type that is considered – e.g. requirements or statements. We then have C c =
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Software Systems Verification and Validation Laboratory Assignment 3
White Box vs. Black Box Testing Tor Stålhane. What is White Box testing White box testing is testing where we use the info available from the code of.
Class Specification Implementation Graph By: Njume Njinimbam Chi-Chang Sun.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Defect testing l Testing programs to establish the presence of system defects.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
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.
1 Software Testing. 2 Path Testing 3 Structural Testing Also known as glass box, structural, clear box and white box testing. A software testing technique.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Grey Box testing Tor Stålhane. What is Grey Box testing Grey Box testing is testing done with limited knowledge of the internal of the system. Grey Box.
CSE403 Software Engineering Autumn 2001 More Testing Gary Kimura Lecture #10 October 22, 2001.
Test Coverage CS-300 Fall 2005 Supreeth Venkataraman.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
INTRUDUCTION TO SOFTWARE TESTING TECHNIQUES BY PRADEEP I.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
White-box Testing.
1 Program Testing (Lecture 14) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
Software Testing White Box Testing. Agenda What is White Box Testing Correctness Tests and Path Coverage Correctness Tests and Line Coverage McCabe Cyclomatic.
CSC 480 Software Engineering Testing - I. Plan project Integrate & test system Analyze requirements Design Maintain Test units Implement Software Engineering.
White Box Testing Arun Lakhotia University of Southwestern Louisiana P.O. Box Lafayette, LA 70504, USA
CS451 Lecture 10: Software Testing Yugi Lee STB #555 (816)
Theory and Practice of Software Testing
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Agent program is the one part(class)of Othello program. How many test cases do you have to test? Reversi [Othello]
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
White Box Testing by : Andika Bayu H.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
White-Box Testing Statement coverage Branch coverage Path coverage
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.
Software Testing. SE, Testing, Hans van Vliet, © Nasty question  Suppose you are being asked to lead the team to test the software that controls.
Defect testing Testing programs to establish the presence of system defects.
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.
Chapter 17 Software Testing Techniques
Testing Tutorial 7.
Software Testing.
White-Box Testing Pfleeger, S. Software Engineering Theory and Practice 2nd Edition. Prentice Hall, Ghezzi, C. et al., Fundamentals of Software Engineering.
Software Testing.
Cyclomatic complexity
Software Engineering (CSI 321)
Data Coverage and Code Coverage
Structural testing, Path Testing
Types of Testing Visit to more Learning Resources.
White Box Testing.
CHAPTER 4 Test Design Techniques
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software Testing (Lecture 11-a)
“White box” or “glass box” tests
Test coverage Tor Stålhane.
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 Testing “If you can’t test it, you can’t design it”
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Unit III – Chapter 3 Path Testing.
Presentation transcript:

White Box and Black Box Testing Tor Stålhane

What is White Box testing White box testing is testing where we use the info available from the code of the component to generate tests. This info is usually used to achieve coverage in one way or another – e.g. Code coverage Path coverage Decision coverage Debugging will always be white-box testing

Coverage report. Example – 1

Coverage report. Example – 2                                                                                                                            Coverage report. Example – 2

McCabe’s cyclomatic complexity Mathematically, the cyclomatic complexity of a structured program is defined with reference to a directed graph containing the basic blocks of the program, with an edge between two basic blocks if control may pass from the first to the second (the control flow graph of the program). The complexity is then defined as: v(G) = E − N + 2P v(G) = cyclomatic complexity E = the number of edges of the graph N = the number of nodes of the graph P = the number of connected components

Graph example We have eight nodes – N = 8 – nine edges – E = 9 – and we have only one component – P = 1. Thus, we have v(G) = 9 – 8 + 2 = 3.

Simple case - 1 S1; IF P1 THEN S2 ELSE S3 S4; One predicate – P1. v(G) = 2 Two test cases can cover all code S1 P1 S2 S3 S4

Simple case – 2 S1; IF P1 THEN X := a/c ELSE S3; S4; One predicate – P1. v(G) = 2 Two test cases will cover all paths but not all cases. What about the case c = 0? S1 P1 a/c S3 S4

Statement coverage – 1 IF in_data > 10 {out_data = 4;} ELSE {out_data = 5;} IF out_data == 8 {update_panel();} How can we obtain full statement coverage? P1 S1 S2 P2 S3 empty

Statement coverage – 2 out_data = 0 IF in_data > 10 {out_data = 4;} update_panel(); If we set in_data to 12 we will have full statement coverage. What is the problem?

Decision coverage IF (in_data > 10 OR sub_mode ==3) {out_data = 4;} ELSE {…..} We need to cover all decisions P1 P1-1 P1-2 empty empty S1

Using v(G) The minimum number of paths through the code is v(G). As long as the code graph is a DAG – Directed Acyclic Graph – the maximum number of paths is 2**|{predicates}| Thus, we have that V(G) < number of paths < 2**|{predicates}|

Problem – the loop S1; DO IF P1 THEN S2 ELSE S3; S4 OD UNTIL P2 S5; No DAG. v(G) = 3 and Max is 4 but there is an “infinite” number of paths. S1 P1 S2 S3 S4 P2 S5

Nested decisions S1; IF P1 THEN S2 ELSE S3; IF P2 THEN S4 ELSE S5 FI v(G) = 3, while Max = 4. Three test case will cover all paths. P1 P2 S5 S4 S6 S3 S2 S1

Using a decision table – 1 A decision table is a general technique used to achieve full path coverage. It will, however, in many cases, lead to over-testing. The idea is simple. Make a table of all predicates. Insert all combinations of True / False – 1 / 0 – for each predicate Construct a test for each combination.

Using a decision table – 2 P1 P2 P3 Test description or reference 1

Using a decision table – 3 Three things to remember: The approach as it is presented here will only work for Situations where we have binary decisions. Small chunks of code – e.g. class methods and small components. It will be too laborious for large chunks of code. Note that code that is difficult to reach – difficult to construct the necessary predicates – may not be needed as part of the system.

Decision table example Test description or reference S1, S3, S5, S6 1 S1, S3, S4, S6 S1, S2, S6 The last test is not necessary

What about loops Loops are the great problem in white box testing. It is common practice to test the system going through each loop 0 times – loop code never executed 1 time – loop code executed once 5 times – loop code executed several times 20 times – loop code executed “many” times

Error messages Since we have access to the code we should Identify all error conditions Provoke each identified error condition Check if the error is treated in a satisfactory manner – e.g. that the error message is clear, to the point and helpful for the intended users.

What is Black Box testing Black box testing is also called functional testing. The main ideas are simple: Define initial component state, input and expected output for the test. Set the component in the required state. Give the defined input Observe the output and compare to the expected output.

Info for Black Box testing That we do not have access to the code does not mean that one test is just as good as the other one. We should consider the following info: Algorithm understanding Parts of the solutions that are difficult to implement Special – often seldom occurring – cases.

Clues from the algorithm We should consider two pieces of info: Difficult parts of the algorithm used Borders between different types of solution – e.g. if P1 then use S1 else use S2. Here we need to consider if the predicate is Correct, i.e. contain the right variables Complete, i.e. contains all necessary conditions

Black Box vs. White Box testing We can contrast the two methods as follows: White Box testing Understanding the implemented code. Checking the implementation Debugging Black Box testing Understanding the algorithm used. Checking the solution – functional testing

Testing real time systems W-T. Tsai et al. have suggested a pattern based way of testing real time / embedded systems. They have introduced eight patterns. Using these they have shown through experiments that, using these eight patterns, they identified on the average 95% of all defects. We will have a look at three of the patterns. Together, these three patterns discovered 60% of all defects found

Basic scenario pattern - BSP PreCondition == true / {Set activation time} Check for precondition IsTimeout == true / [report fail] Check post-condition PostCondition == true / [report success]

BSP – example Requirement to be tested: If the alarm is disarmed using the remote controller, then the driver and passenger doors are unlocked. Precondition: the alarm is disarmed using the remote controller Post-condition: the driver and passenger doors are unlocked

Key-event service pattern - KSP KeyEventOccurred / [SetActivationTime] Check precondition PreCondition == true Check for key event Check post-condition IsTimeout == true / [report fail] PostCondition == true / [report success]

KSP- example Requirement to be tested: When either of the doors are opened, if the ignition is turned on by car key, then the alarm horn beeps three times Precondition: either of the doors are opened Key-event: the ignition is turned on by car key Post-condition: the alarm horn beeps three times

Timed key-event service pattern - TKSP KeyEventOccurred / [SetActivationTime] Check precondition PreCondition == true DurationExpired / [report not exercised] Check for key event Check post-condition IsTimeout == true / [report fail] PostCondition == true / [report success]

TKSP – example (1) Requirement to be tested: When driver and passenger doors remain unlocked, if within 0.5 seconds after the lock command is issued by remote controller or car key, then the alarm horn will beep once

TKSP – example (2) Precondition: driver and passenger doors remain unlocked Key-event: lock command is issued by remote controller or car key Duration: 0.5 seconds Post-condition: the alarm horn will beep once