SlideShare a Scribd company logo
1 of 48
Using
UML,
Patterns,
and
Java
Object-Oriented
Software
Engineering
Chapter 11, Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Outline
 Terminology
 Types of errors
 Dealing with errors
 Quality assurance vs Testing
 Component Testing
 Unit testing
 Integration testing
 Testing Strategy
 Design Patterns & Testing
 System testing
 Function testing
 Structure Testing
 Performance testing
 Acceptance testing
 Installation testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Some Observations
 It is impossible to completely test any nontrivial module or any
system
 Theoretical limitations: Halting problem
 Practial limitations: Prohibitive in time and cost
 Testing can only show the presence of bugs, not their absence
(Dijkstra)
loop 200 times
total number of execution paths?
??
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Testing Activities
Tested
Subsystem
Subsystem
Code
Functional
Integration
Unit
Tested
Subsystem
Requirements
Analysis
Document
System
Design
Document
Tested Subsystem
Test Test
Test
Unit
Test
Unit
Test
User
Manual
Requirements
Analysis
Document
Subsystem
Code
Subsystem
Code
All tests by developer
Functioning
System
Integrated
Subsystems
Cf. levels of testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Global
Requirements
Testing Activities continued
User’s understanding
Tests by developer
Performance Acceptance
Client’s
Understanding
of Requirements
Test
Functioning
System
Test
Installation
User
Environment
Test
System in
Use
Usable
System
Validated
System
Accepted
System
Tests (?) by user
Tests by client
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Levels of Testing in V Model
system
requirements
system
integration
software
requirements
preliminary
design
detailed
design
code &
debug
acceptance
test
software
integration
component
test
unit
test
Time
Level
of
abstraction
N.B.: component test vs. unit test; acceptance test vs. system integration
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Test Planning
 A Test Plan:
 covers all types and phases of
testing
 guides the entire testing process
 who, why, when, what
 developed as requirements,
functional specification, and high-
level design are developed
 should be done before
implementation starts
 A test plan includes:
 test objectives
 schedule and logistics
 test strategies
 test cases
 procedure
 data
 expected result
 procedures for handling
problems
[Pressman]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Fault Handling Techniques
Testing
Fault Handling
Fault Avoidance
Fault Tolerance
Fault Detection
Debugging
Unit
Testing
Integration
Testing
System
Testing
Verification
Configuration
Management
Atomic
Transactions
Modular
Redundancy
Correctness
Debugging
Performance
Debugging
Reviews
Design
Methodology
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Quality Assurance encompasses Testing
Usability Testing
Quality Assurance
Testing
Prototype
Testing
Scenario
Testing
Product
Testing
Fault Avoidance Fault Tolerance
Fault Detection
Debugging
Unit
Testing
Integration
Testing
System
Testing
Verification
Configuration
Management
Atomic
Transactions
Modular
Redundancy
Correctness
Debugging
Performance
Debugging
Reviews
Walkthrough Inspection
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Types of Testing
 Unit Testing:
 Individual subsystem
 Carried out by developers
 Goal: Confirm that subsystems is correctly coded and carries out
the intended functionality
 Integration Testing:
 Groups of subsystems (collection of classes) and eventually the
entire system
 Carried out by developers
 Goal: Test the interface among the subsystem
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
System Testing
 System Testing:
 The entire system
 Carried out by developers
 Goal: Determine if the system meets the requirements (functional
and global)
 Acceptance Testing:
 Evaluates the system delivered by developers
 Carried out by the client. May involve executing typical
transactions on site on a trial basis
 Goal: Demonstrate that the system meets customer requirements
and is ready to use
 Implementation (Coding) and testing go hand in hand
Terminology:
system testing here = validation testing
2 kinds of Acceptance testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Unit Testing
 Informal:
 Incremental coding
 Static Analysis:
 Hand execution: Reading the source code
 Walk-Through (informal presentation to others)
 Code Inspection (formal presentation to others)
 Automated Tools checking for
 syntactic and semantic errors
 departure from coding standards
 Dynamic Analysis:
 Black-box testing (Test the input/output behavior)
 White-box testing (Test the internal logic of the subsystem or object)
 Data-structure based testing (Data types determine test cases)
Which is more effective, static or dynamic analysis?
Write a little, test a little
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Black-box Testing
 Focus: I/O behavior. If for any given input, we can predict the
output, then the module passes the test.
 Almost always impossible to generate all possible inputs ("test
cases")
 Goal: Reduce number of test cases by equivalence partitioning:
 Divide input conditions into equivalence classes
 Choose test cases for each equivalence class. (Example: If an object
is supposed to accept a negative number, testing one negative
number is enough)
 If x = 3 then …
What would be the equivalence classes?
 If x > -5 and x < 5 then …
why?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Black-box Testing (Continued)
 Selection of equivalence classes (No rules, only guidelines):
 Input is valid across range of values. Select test cases from 3
equivalence classes:
 Below the range
 Within the range
 Above the range
 Input is valid if it is from a discrete set. Select test cases from 2
equivalence classes:
 Valid discrete value
 Invalid discrete value
 Another solution to select only a limited amount of test cases:
 Get knowledge about the inner workings of the unit being tested =>
white-box testing
Are these complete?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
White-box Testing
 Focus: Thoroughness (Coverage). Every statement in the component is
executed at least once.
 Four types of white-box testing
 Statement Testing
 Loop Testing
 Path Testing
 Branch Testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
if ( i =TRUE) printf("YESn");else printf("NOn");
Test cases: 1) i = TRUE; 2) i = FALSE
White-box Testing (Continued)
 Statement Testing (Algebraic Testing): Test single statements
 Loop Testing:
 Cause execution of the loop to be skipped completely. (Exception:
Repeat loops)
 Loop to be executed exactly once
 Loop to be executed more than once
 Path testing:
 Make sure all paths in the program are executed
 Branch Testing (Conditional Testing): Make sure that each
possible outcome from a condition is tested at least once
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Loop Testing
Nested
Loops
Concatenated
Loops Unstructured
Loops
Simple
loop
White-Box Testing
Why is loop testing important?
[Pressman]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
/*Read in and sum the scores*/
White-box Testing Example
FindMean(float Mean, FILE ScoreFile)
{ SumOfScores = 0.0; NumberOfScores = 0; Mean = 0;
Read(Scor
eFile, Score);
while (! EOF(ScoreFile) {
if ( Score > 0.0 ) {
SumOfScores = SumOfScores + Score;
NumberOfScores++;
}
Read(ScoreFile, Score);
}
/* Compute the mean and print the result */
if (NumberOfScores > 0 ) {
Mean = SumOfScores/NumberOfScores;
printf("The mean score is %f n", Mean);
} else
printf("No scores found in filen");
}
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
White-box Testing Example: Determining the Paths
FindMean (FILE ScoreFile)
{ float SumOfScores = 0.0;
int NumberOfScores = 0;
float Mean=0.0; float Score;
Read(ScoreFile, Score);
while (! EOF(ScoreFile) {
if (Score > 0.0 ) {
SumOfScores = SumOfScores + Score;
NumberOfScores++;
}
Read(ScoreFile, Score);
}
/* Compute the mean and print the result */
if (NumberOfScores > 0) {
Mean = SumOfScores / NumberOfScores;
printf(“ The mean score is %fn”, Mean);
} else
printf (“No scores found in filen”);
}
1
2
3
4
5
7
6
8
9
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Constructing the Logic Flow Diagram
Start
2
3
4 5
6
7
8 9
Exit
1
F
T F
T F
T
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Finding the Test Cases
Start
2
3
4 5
6
7
8 9
Exit
1
b
d e
g
f
i j
h
c
k l
a (Covered by any data)
(Data set must
(Data set must contain at least one value)
be empty)
(Total score > 0.0)
(Total score < 0.0)
(Positive score) (Negative score)
(Reached if either f or
e is reached)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Comparison of White & Black-box Testing 25.1.2002
 White-box Testing:
 Potentially infinite number of
paths have to be tested
 White-box testing often tests
what is done, instead of what
should be done
 Cannot detect missing use cases
 Black-box Testing:
 Potential combinatorical
explosion of test cases (valid &
invalid data)
 Often not clear whether the
selected test cases uncover a
particular error
 Does not discover extraneous
use cases ("features")
 Both types of testing are needed
 White-box testing and black box
testing are the extreme ends of a
testing continuum.
 Any choice of test case lies in
between and depends on the
following:
 Number of possible logical paths
 Nature of input data
 Amount of computation
 Complexity of algorithms and
data structures
Self reading
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
The 4 Testing Steps
1. Select what has to be
measured
 Analysis: Completeness of
requirements
 Design: tested for cohesion
 Implementation: Code tests
2. Decide how the testing is
done
 Code inspection
 Proofs (Design by Contract)
 Black-box, white box,
 Select integration testing
strategy (big bang, bottom
up, top down, sandwich)
3. Develop test cases
 A test case is a set of test
data or situations that will be
used to exercise the unit
(code, module, system) being
tested or about the attribute
being measured
4. Create the test oracle
 An oracle contains of the
predicted results for a set of
test cases
 The test oracle has to be
written down before the
actual testing takes place
Next module
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Guidance for Test Case Selection
 Use analysis knowledge
about functional
requirements (black-box
testing):
 Use cases
 Expected input data
 Invalid input data
 Use design knowledge about
system structure, algorithms,
data structures (white-box
testing):
 Control structures
 Test branches, loops, ...
 Data structures
 Test records fields, arrays,
...
 Use implementation
knowledge about algorithms:
 Examples:
 Force division by zero
 Use sequence of test cases for
interrupt handler
Self reading
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Unit-testing Heuristics
1. Create unit tests as soon as object
design is completed:
 Black-box test: Test the use
cases & functional model
 White-box test: Test the
dynamic model
 Data-structure test: Test the
object model
2. Develop the test cases
 Goal: Find the minimal
number of test cases to cover
as many paths as possible
3. Cross-check the test cases to
eliminate duplicates
 Don't waste your time!
4. Desk check your source code
 Reduces testing time
5. Create a test harness
 Test drivers and test stubs are
needed for integration testing
6. Describe the test oracle
 Often the result of the first
successfully executed test
7. Execute the test cases
 Don’t forget regression testing
 Re-execute test cases every time
a change is made.
8. Compare the results of the test with the
test oracle
 Automate as much as possible
Self reading
Big cost -> what should be done?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
OOT Strategy
 class testing is the equivalent of unit testing
 operations within the class are tested
 the state behavior of the class is examined
 integration applied three different strategies/levels of
abstraction
 thread-based testing—integrates the set of classes required
to respond to one input or event
 use-based testing—integrates the set of classes required to
respond to one use case
 cluster testing—integrates the set of classes required to
demonstrate one collaboration
…if there is no nesting of classes
…this is pushing…
[Pressman]
Recall: model-driven software development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
OOT—Test Case Design
Berard [BER93] proposes the following approach:
1. Each test case should be uniquely identified and should be explicitly
associated with the class to be tested,
2. A list of testing steps should be developed for each test and should
contain [BER94]:
a. a list of specified states for the object that is to be tested
b. a list of messages and operations that will be exercised as a
consequence of the test how can this be done?
c. a list of exceptions that may occur as the object is tested
d. a list of external conditions (i.e., changes in the environment external
to the software that must exist in order to properly conduct the test)
{people, machine, time of operation, etc.}
[Pressman]
This is a kind of data structure testing
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
OOT Methods: Behavior Testing
empty
acct
open setupAccnt
set up
acct
deposit
(initial)
working
acct
withdrawal
(final)
dead
acct close
nonworking
acct
deposit
withdraw
balance
credit
accntInfo
Figure 14.3 State diagram for Account class (adapted from [ KIR94])
The tests to be
designed should
achieve all state
coverage [KIR94].
That is, the operation
sequences should
cause the Account
class to make
transition through all
allowable states
This can act as an oracle
[Pressman]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Who Tests the Software?
developer independent tester
Understands the system
but, will test "gently"
and, is driven by "delivery"
Must learn about the system,
but, will attempt to break it
and, is driven by quality
[Pressman]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
Counting Bugs
 Sometimes reliability requirements take the form:
"The software shall have no more than X bugs/1K LOC"
But how do we measure bugs at delivery time?
 Bebugging Process - based on a Monte Carlo technique for statistical analysis of random events.
1. before testing, a known number of bugs (seeded bugs) are secretly inserted.
2. estimate the number of bugs in the system
3. remove (both known and new) bugs.
# of detected seeded bugs/ # of seeded bugs = # of detected bugs/ # of bugs in the system
# of bugs in the system = # of seeded bugs x # of detected bugs /# of detected seeded bugs
Example: secretely seed 10 bugs
an independent test team detects 120 bugs (6 for the seeded)
# of bugs in the system = 10 x 120/6 = 200
# of bugs in the system after removal = 200 - 120 - 4 = 76
 But, deadly bugs vs. insignifant ones; not all bugs are equally detectable; ( Suggestion [Musa87]:
"No more than X bugs/1K LOC may be detected during testing"
"No more than X bugs/1K LOC may be remain after delivery,
as calculated by the Monte Carlo seeding technique"
NFRs: Reliability [Chung, RE Lecture Notes]]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Summary
 Testing is still a black art, but many rules and heuristics are
available
 Testing consists of component-testing (unit testing, integration
testing) and system testing, and …
 OOT and architectural testing, still challenging
 User-oriented reliability modeling and evaluation not adequate
 Testing has its own lifecycle
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Additional Slides
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Terminology
 Reliability: The measure of success with which the observed
behavior of a system confirms to some specification of its
behavior.
 Failure: Any deviation of the observed behavior from the
specified behavior.
 Error: The system is in a state such that further processing by
the system will lead to a failure.
 Fault (Bug): The mechanical or algorithmic cause of an error.
There are many different types of errors and different ways how
we can deal with them.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Examples of Faults and Errors
 Faults in the Interface
specification
 Mismatch between what the
client needs and what the
server offers
 Mismatch between
requirements and
implementation
 Algorithmic Faults
 Missing initialization
 Branching errors (too soon,
too late)
 Missing test for nil
 Mechanical Faults (very
hard to find)
 Documentation does not
match actual conditions or
operating procedures
 Errors
 Stress or overload errors
 Capacity or boundary errors
 Timing errors
 Throughput or performance
errors
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Dealing with Errors
 Verification:
 Assumes hypothetical environment that does not match real
environment
 Proof might be buggy (omits important constraints; simply wrong)
 Modular redundancy:
 Expensive
 Declaring a bug to be a “feature”
 Bad practice
 Patching
 Slows down performance
 Testing (this lecture)
 Testing is never good enough
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Another View on How to Deal with Errors
 Error prevention (before the system is released):
 Use good programming methodology to reduce complexity
 Use version control to prevent inconsistent system
 Apply verification to prevent algorithmic bugs
 Error detection (while system is running):
 Testing: Create failures in a planned way
 Debugging: Start with an unplanned failures
 Monitoring: Deliver information about state. Find performance bugs
 Error recovery (recover from failure once the system is released):
 Data base systems (atomic transactions)
 Modular redundancy
 Recovery blocks
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
What is this?
A failure?
An error?
A fault?
Need to specify
the desired behavior first!
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Erroneous State (“Error”)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Algorithmic Fault
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Mechanical Fault
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
How do we deal with Errors and Faults?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
Verification?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Modular Redundancy?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Declaring the Bug
as a Feature?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
Patching?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Testing?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Testing takes creativity
 Testing often viewed as dirty work.
 To develop an effective test, one must have:
 Detailed understanding of the system
 Knowledge of the testing techniques
 Skill to apply these techniques in an effective and efficient manner
 Testing is done best by independent testers
 We often develop a certain mental attitude that the program should
in a certain way when in fact it does not.
 Programmer often stick to the data set that makes the program
work
 "Don’t mess up my code!"
 A program often does not work when tried by somebody else.
 Don't let this be the end-user.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
Test Cases
 Test case 1 : ? (To execute loop exactly once)
 Test case 2 : ? (To skip loop body)
 Test case 3: ?,? (to execute loop more than once)
These 3 test cases cover all control flow paths

More Related Content

Similar to ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh

Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software TestingNishant Worah
 
SE2023 0401 Software Coding and Testing.pptx
SE2023 0401 Software Coding and Testing.pptxSE2023 0401 Software Coding and Testing.pptx
SE2023 0401 Software Coding and Testing.pptxBharat Chawda
 
CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4SIMONTHOMAS S
 
Software Testing Tecniques
Software Testing TecniquesSoftware Testing Tecniques
Software Testing Tecniquesersanbilik
 
12 Rational Solo Pruebas 2009
12 Rational Solo Pruebas 200912 Rational Solo Pruebas 2009
12 Rational Solo Pruebas 2009Pepe
 
Software Testing
Software TestingSoftware Testing
Software TestingAlok Ranjan
 
lec-11 Testing.ppt
lec-11 Testing.pptlec-11 Testing.ppt
lec-11 Testing.pptdebjani12
 
Google test training
Google test trainingGoogle test training
Google test trainingThierry Gayet
 

Similar to ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh (20)

Why unit testingl
Why unit testinglWhy unit testingl
Why unit testingl
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Ch11lect1 ud
Ch11lect1 udCh11lect1 ud
Ch11lect1 ud
 
Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software Testing
 
SE2023 0401 Software Coding and Testing.pptx
SE2023 0401 Software Coding and Testing.pptxSE2023 0401 Software Coding and Testing.pptx
SE2023 0401 Software Coding and Testing.pptx
 
Testing
TestingTesting
Testing
 
CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4
 
Ch11lect2 ud
Ch11lect2 udCh11lect2 ud
Ch11lect2 ud
 
Black box software testing
Black box software testingBlack box software testing
Black box software testing
 
Effective unit testing
Effective unit testingEffective unit testing
Effective unit testing
 
Software Testing Tecniques
Software Testing TecniquesSoftware Testing Tecniques
Software Testing Tecniques
 
Unit testing - A&BP CC
Unit testing - A&BP CCUnit testing - A&BP CC
Unit testing - A&BP CC
 
12 Rational Solo Pruebas 2009
12 Rational Solo Pruebas 200912 Rational Solo Pruebas 2009
12 Rational Solo Pruebas 2009
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Testing
TestingTesting
Testing
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
lec-11 Testing.ppt
lec-11 Testing.pptlec-11 Testing.ppt
lec-11 Testing.ppt
 
Google test training
Google test trainingGoogle test training
Google test training
 
Testing
TestingTesting
Testing
 
Software testing (2)
Software testing (2)Software testing (2)
Software testing (2)
 

More from ssuser2d043c

sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.ppt
sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.pptsfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.ppt
sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.pptssuser2d043c
 
cocomo-220726173706-141e0dsdsd8f0 (1).pdf
cocomo-220726173706-141e0dsdsd8f0 (1).pdfcocomo-220726173706-141e0dsdsd8f0 (1).pdf
cocomo-220726173706-141e0dsdsd8f0 (1).pdfssuser2d043c
 
pointer in c through addressing modes esntial in c
pointer in c through addressing modes esntial in cpointer in c through addressing modes esntial in c
pointer in c through addressing modes esntial in cssuser2d043c
 
System engineering is related to software engineering
System engineering is related to software engineeringSystem engineering is related to software engineering
System engineering is related to software engineeringssuser2d043c
 
Session 01 (Introduction).pdf
Session 01 (Introduction).pdfSession 01 (Introduction).pdf
Session 01 (Introduction).pdfssuser2d043c
 
STATE DIAGRAM.pptx
STATE DIAGRAM.pptxSTATE DIAGRAM.pptx
STATE DIAGRAM.pptxssuser2d043c
 

More from ssuser2d043c (12)

sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.ppt
sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.pptsfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.ppt
sfdgdfgfgfdgvsdfdsfedrfewsfdsfsfterfdcm.ppt
 
cocomo-220726173706-141e0dsdsd8f0 (1).pdf
cocomo-220726173706-141e0dsdsd8f0 (1).pdfcocomo-220726173706-141e0dsdsd8f0 (1).pdf
cocomo-220726173706-141e0dsdsd8f0 (1).pdf
 
pointer in c through addressing modes esntial in c
pointer in c through addressing modes esntial in cpointer in c through addressing modes esntial in c
pointer in c through addressing modes esntial in c
 
System engineering is related to software engineering
System engineering is related to software engineeringSystem engineering is related to software engineering
System engineering is related to software engineering
 
1_Overview.pdf
1_Overview.pdf1_Overview.pdf
1_Overview.pdf
 
software
softwaresoftware
software
 
lecture 1.pdf
lecture 1.pdflecture 1.pdf
lecture 1.pdf
 
pig intro.pdf
pig intro.pdfpig intro.pdf
pig intro.pdf
 
Session 01 (Introduction).pdf
Session 01 (Introduction).pdfSession 01 (Introduction).pdf
Session 01 (Introduction).pdf
 
data 1.ppt
data 1.pptdata 1.ppt
data 1.ppt
 
IntroToOOP.ppt
IntroToOOP.pptIntroToOOP.ppt
IntroToOOP.ppt
 
STATE DIAGRAM.pptx
STATE DIAGRAM.pptxSTATE DIAGRAM.pptx
STATE DIAGRAM.pptx
 

Recently uploaded

Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...Call Girls in Nagpur High Profile
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 

Recently uploaded (20)

Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptxExploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 

ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh

  • 2. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Outline  Terminology  Types of errors  Dealing with errors  Quality assurance vs Testing  Component Testing  Unit testing  Integration testing  Testing Strategy  Design Patterns & Testing  System testing  Function testing  Structure Testing  Performance testing  Acceptance testing  Installation testing
  • 3. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Some Observations  It is impossible to completely test any nontrivial module or any system  Theoretical limitations: Halting problem  Practial limitations: Prohibitive in time and cost  Testing can only show the presence of bugs, not their absence (Dijkstra) loop 200 times total number of execution paths? ??
  • 4. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Testing Activities Tested Subsystem Subsystem Code Functional Integration Unit Tested Subsystem Requirements Analysis Document System Design Document Tested Subsystem Test Test Test Unit Test Unit Test User Manual Requirements Analysis Document Subsystem Code Subsystem Code All tests by developer Functioning System Integrated Subsystems Cf. levels of testing
  • 5. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Global Requirements Testing Activities continued User’s understanding Tests by developer Performance Acceptance Client’s Understanding of Requirements Test Functioning System Test Installation User Environment Test System in Use Usable System Validated System Accepted System Tests (?) by user Tests by client
  • 6. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Levels of Testing in V Model system requirements system integration software requirements preliminary design detailed design code & debug acceptance test software integration component test unit test Time Level of abstraction N.B.: component test vs. unit test; acceptance test vs. system integration
  • 7. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Test Planning  A Test Plan:  covers all types and phases of testing  guides the entire testing process  who, why, when, what  developed as requirements, functional specification, and high- level design are developed  should be done before implementation starts  A test plan includes:  test objectives  schedule and logistics  test strategies  test cases  procedure  data  expected result  procedures for handling problems [Pressman]
  • 8. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Fault Handling Techniques Testing Fault Handling Fault Avoidance Fault Tolerance Fault Detection Debugging Unit Testing Integration Testing System Testing Verification Configuration Management Atomic Transactions Modular Redundancy Correctness Debugging Performance Debugging Reviews Design Methodology
  • 9. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Quality Assurance encompasses Testing Usability Testing Quality Assurance Testing Prototype Testing Scenario Testing Product Testing Fault Avoidance Fault Tolerance Fault Detection Debugging Unit Testing Integration Testing System Testing Verification Configuration Management Atomic Transactions Modular Redundancy Correctness Debugging Performance Debugging Reviews Walkthrough Inspection
  • 10. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Types of Testing  Unit Testing:  Individual subsystem  Carried out by developers  Goal: Confirm that subsystems is correctly coded and carries out the intended functionality  Integration Testing:  Groups of subsystems (collection of classes) and eventually the entire system  Carried out by developers  Goal: Test the interface among the subsystem
  • 11. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 System Testing  System Testing:  The entire system  Carried out by developers  Goal: Determine if the system meets the requirements (functional and global)  Acceptance Testing:  Evaluates the system delivered by developers  Carried out by the client. May involve executing typical transactions on site on a trial basis  Goal: Demonstrate that the system meets customer requirements and is ready to use  Implementation (Coding) and testing go hand in hand Terminology: system testing here = validation testing 2 kinds of Acceptance testing
  • 12. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Unit Testing  Informal:  Incremental coding  Static Analysis:  Hand execution: Reading the source code  Walk-Through (informal presentation to others)  Code Inspection (formal presentation to others)  Automated Tools checking for  syntactic and semantic errors  departure from coding standards  Dynamic Analysis:  Black-box testing (Test the input/output behavior)  White-box testing (Test the internal logic of the subsystem or object)  Data-structure based testing (Data types determine test cases) Which is more effective, static or dynamic analysis? Write a little, test a little
  • 13. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Black-box Testing  Focus: I/O behavior. If for any given input, we can predict the output, then the module passes the test.  Almost always impossible to generate all possible inputs ("test cases")  Goal: Reduce number of test cases by equivalence partitioning:  Divide input conditions into equivalence classes  Choose test cases for each equivalence class. (Example: If an object is supposed to accept a negative number, testing one negative number is enough)  If x = 3 then … What would be the equivalence classes?  If x > -5 and x < 5 then … why?
  • 14. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 Black-box Testing (Continued)  Selection of equivalence classes (No rules, only guidelines):  Input is valid across range of values. Select test cases from 3 equivalence classes:  Below the range  Within the range  Above the range  Input is valid if it is from a discrete set. Select test cases from 2 equivalence classes:  Valid discrete value  Invalid discrete value  Another solution to select only a limited amount of test cases:  Get knowledge about the inner workings of the unit being tested => white-box testing Are these complete?
  • 15. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 White-box Testing  Focus: Thoroughness (Coverage). Every statement in the component is executed at least once.  Four types of white-box testing  Statement Testing  Loop Testing  Path Testing  Branch Testing
  • 16. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 if ( i =TRUE) printf("YESn");else printf("NOn"); Test cases: 1) i = TRUE; 2) i = FALSE White-box Testing (Continued)  Statement Testing (Algebraic Testing): Test single statements  Loop Testing:  Cause execution of the loop to be skipped completely. (Exception: Repeat loops)  Loop to be executed exactly once  Loop to be executed more than once  Path testing:  Make sure all paths in the program are executed  Branch Testing (Conditional Testing): Make sure that each possible outcome from a condition is tested at least once
  • 17. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Loop Testing Nested Loops Concatenated Loops Unstructured Loops Simple loop White-Box Testing Why is loop testing important? [Pressman]
  • 18. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 /*Read in and sum the scores*/ White-box Testing Example FindMean(float Mean, FILE ScoreFile) { SumOfScores = 0.0; NumberOfScores = 0; Mean = 0; Read(Scor eFile, Score); while (! EOF(ScoreFile) { if ( Score > 0.0 ) { SumOfScores = SumOfScores + Score; NumberOfScores++; } Read(ScoreFile, Score); } /* Compute the mean and print the result */ if (NumberOfScores > 0 ) { Mean = SumOfScores/NumberOfScores; printf("The mean score is %f n", Mean); } else printf("No scores found in filen"); }
  • 19. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 White-box Testing Example: Determining the Paths FindMean (FILE ScoreFile) { float SumOfScores = 0.0; int NumberOfScores = 0; float Mean=0.0; float Score; Read(ScoreFile, Score); while (! EOF(ScoreFile) { if (Score > 0.0 ) { SumOfScores = SumOfScores + Score; NumberOfScores++; } Read(ScoreFile, Score); } /* Compute the mean and print the result */ if (NumberOfScores > 0) { Mean = SumOfScores / NumberOfScores; printf(“ The mean score is %fn”, Mean); } else printf (“No scores found in filen”); } 1 2 3 4 5 7 6 8 9
  • 20. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Constructing the Logic Flow Diagram Start 2 3 4 5 6 7 8 9 Exit 1 F T F T F T
  • 21. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Finding the Test Cases Start 2 3 4 5 6 7 8 9 Exit 1 b d e g f i j h c k l a (Covered by any data) (Data set must (Data set must contain at least one value) be empty) (Total score > 0.0) (Total score < 0.0) (Positive score) (Negative score) (Reached if either f or e is reached)
  • 22. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Comparison of White & Black-box Testing 25.1.2002  White-box Testing:  Potentially infinite number of paths have to be tested  White-box testing often tests what is done, instead of what should be done  Cannot detect missing use cases  Black-box Testing:  Potential combinatorical explosion of test cases (valid & invalid data)  Often not clear whether the selected test cases uncover a particular error  Does not discover extraneous use cases ("features")  Both types of testing are needed  White-box testing and black box testing are the extreme ends of a testing continuum.  Any choice of test case lies in between and depends on the following:  Number of possible logical paths  Nature of input data  Amount of computation  Complexity of algorithms and data structures Self reading
  • 23. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 The 4 Testing Steps 1. Select what has to be measured  Analysis: Completeness of requirements  Design: tested for cohesion  Implementation: Code tests 2. Decide how the testing is done  Code inspection  Proofs (Design by Contract)  Black-box, white box,  Select integration testing strategy (big bang, bottom up, top down, sandwich) 3. Develop test cases  A test case is a set of test data or situations that will be used to exercise the unit (code, module, system) being tested or about the attribute being measured 4. Create the test oracle  An oracle contains of the predicted results for a set of test cases  The test oracle has to be written down before the actual testing takes place Next module
  • 24. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 Guidance for Test Case Selection  Use analysis knowledge about functional requirements (black-box testing):  Use cases  Expected input data  Invalid input data  Use design knowledge about system structure, algorithms, data structures (white-box testing):  Control structures  Test branches, loops, ...  Data structures  Test records fields, arrays, ...  Use implementation knowledge about algorithms:  Examples:  Force division by zero  Use sequence of test cases for interrupt handler Self reading
  • 25. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Unit-testing Heuristics 1. Create unit tests as soon as object design is completed:  Black-box test: Test the use cases & functional model  White-box test: Test the dynamic model  Data-structure test: Test the object model 2. Develop the test cases  Goal: Find the minimal number of test cases to cover as many paths as possible 3. Cross-check the test cases to eliminate duplicates  Don't waste your time! 4. Desk check your source code  Reduces testing time 5. Create a test harness  Test drivers and test stubs are needed for integration testing 6. Describe the test oracle  Often the result of the first successfully executed test 7. Execute the test cases  Don’t forget regression testing  Re-execute test cases every time a change is made. 8. Compare the results of the test with the test oracle  Automate as much as possible Self reading Big cost -> what should be done?
  • 26. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 OOT Strategy  class testing is the equivalent of unit testing  operations within the class are tested  the state behavior of the class is examined  integration applied three different strategies/levels of abstraction  thread-based testing—integrates the set of classes required to respond to one input or event  use-based testing—integrates the set of classes required to respond to one use case  cluster testing—integrates the set of classes required to demonstrate one collaboration …if there is no nesting of classes …this is pushing… [Pressman] Recall: model-driven software development
  • 27. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 OOT—Test Case Design Berard [BER93] proposes the following approach: 1. Each test case should be uniquely identified and should be explicitly associated with the class to be tested, 2. A list of testing steps should be developed for each test and should contain [BER94]: a. a list of specified states for the object that is to be tested b. a list of messages and operations that will be exercised as a consequence of the test how can this be done? c. a list of exceptions that may occur as the object is tested d. a list of external conditions (i.e., changes in the environment external to the software that must exist in order to properly conduct the test) {people, machine, time of operation, etc.} [Pressman] This is a kind of data structure testing
  • 28. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 OOT Methods: Behavior Testing empty acct open setupAccnt set up acct deposit (initial) working acct withdrawal (final) dead acct close nonworking acct deposit withdraw balance credit accntInfo Figure 14.3 State diagram for Account class (adapted from [ KIR94]) The tests to be designed should achieve all state coverage [KIR94]. That is, the operation sequences should cause the Account class to make transition through all allowable states This can act as an oracle [Pressman]
  • 29. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29 Who Tests the Software? developer independent tester Understands the system but, will test "gently" and, is driven by "delivery" Must learn about the system, but, will attempt to break it and, is driven by quality [Pressman]
  • 30. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Counting Bugs  Sometimes reliability requirements take the form: "The software shall have no more than X bugs/1K LOC" But how do we measure bugs at delivery time?  Bebugging Process - based on a Monte Carlo technique for statistical analysis of random events. 1. before testing, a known number of bugs (seeded bugs) are secretly inserted. 2. estimate the number of bugs in the system 3. remove (both known and new) bugs. # of detected seeded bugs/ # of seeded bugs = # of detected bugs/ # of bugs in the system # of bugs in the system = # of seeded bugs x # of detected bugs /# of detected seeded bugs Example: secretely seed 10 bugs an independent test team detects 120 bugs (6 for the seeded) # of bugs in the system = 10 x 120/6 = 200 # of bugs in the system after removal = 200 - 120 - 4 = 76  But, deadly bugs vs. insignifant ones; not all bugs are equally detectable; ( Suggestion [Musa87]: "No more than X bugs/1K LOC may be detected during testing" "No more than X bugs/1K LOC may be remain after delivery, as calculated by the Monte Carlo seeding technique" NFRs: Reliability [Chung, RE Lecture Notes]]
  • 31. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 Summary  Testing is still a black art, but many rules and heuristics are available  Testing consists of component-testing (unit testing, integration testing) and system testing, and …  OOT and architectural testing, still challenging  User-oriented reliability modeling and evaluation not adequate  Testing has its own lifecycle
  • 32. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32 Additional Slides
  • 33. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 Terminology  Reliability: The measure of success with which the observed behavior of a system confirms to some specification of its behavior.  Failure: Any deviation of the observed behavior from the specified behavior.  Error: The system is in a state such that further processing by the system will lead to a failure.  Fault (Bug): The mechanical or algorithmic cause of an error. There are many different types of errors and different ways how we can deal with them.
  • 34. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34 Examples of Faults and Errors  Faults in the Interface specification  Mismatch between what the client needs and what the server offers  Mismatch between requirements and implementation  Algorithmic Faults  Missing initialization  Branching errors (too soon, too late)  Missing test for nil  Mechanical Faults (very hard to find)  Documentation does not match actual conditions or operating procedures  Errors  Stress or overload errors  Capacity or boundary errors  Timing errors  Throughput or performance errors
  • 35. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35 Dealing with Errors  Verification:  Assumes hypothetical environment that does not match real environment  Proof might be buggy (omits important constraints; simply wrong)  Modular redundancy:  Expensive  Declaring a bug to be a “feature”  Bad practice  Patching  Slows down performance  Testing (this lecture)  Testing is never good enough
  • 36. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36 Another View on How to Deal with Errors  Error prevention (before the system is released):  Use good programming methodology to reduce complexity  Use version control to prevent inconsistent system  Apply verification to prevent algorithmic bugs  Error detection (while system is running):  Testing: Create failures in a planned way  Debugging: Start with an unplanned failures  Monitoring: Deliver information about state. Find performance bugs  Error recovery (recover from failure once the system is released):  Data base systems (atomic transactions)  Modular redundancy  Recovery blocks
  • 37. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37 What is this? A failure? An error? A fault? Need to specify the desired behavior first!
  • 38. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38 Erroneous State (“Error”)
  • 39. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 Algorithmic Fault
  • 40. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 Mechanical Fault
  • 41. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41 How do we deal with Errors and Faults?
  • 42. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42 Verification?
  • 43. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43 Modular Redundancy?
  • 44. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44 Declaring the Bug as a Feature?
  • 45. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45 Patching?
  • 46. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46 Testing?
  • 47. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47 Testing takes creativity  Testing often viewed as dirty work.  To develop an effective test, one must have:  Detailed understanding of the system  Knowledge of the testing techniques  Skill to apply these techniques in an effective and efficient manner  Testing is done best by independent testers  We often develop a certain mental attitude that the program should in a certain way when in fact it does not.  Programmer often stick to the data set that makes the program work  "Don’t mess up my code!"  A program often does not work when tried by somebody else.  Don't let this be the end-user.
  • 48. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48 Test Cases  Test case 1 : ? (To execute loop exactly once)  Test case 2 : ? (To skip loop body)  Test case 3: ?,? (to execute loop more than once) These 3 test cases cover all control flow paths