Software Testing
Software Testing Introduction
Tran Duy Hoang
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 2
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 3
Verification & Validation
Department of Software Engineering 4
Verification & Validation
Department of Software Engineering 5
Verification & Validation
• Verification
• “Are we building the product right”
• Making sure that software conforms to its specification
• Validation
• “Are we building the right product”
• Making sure software does what users really need
Department of Software Engineering 6
V&V process
• A whole life-cycle process
• V&V must be applied at each stage in the software process
• Planning, requirements engineering, analysis and design, implementation, etc.
• Principal objectives of V&V process
• Discovery of defects in software
• Assessment of whether software is useful and useable
• Establishing confidence in software
Department of Software Engineering 7
Static and dynamic V&V
• Software inspections (static V&V)
• Concerned with analysis of static software representation to discover
problems
• E.g., requirements review, code review, etc.
• Software testing (dynamic V&V)
• Concerned with exercising and observing software behavior
• Involving running software with test data
Department of Software Engineering 8
Software Testing
Testing is the process consisting of all lifecycle activities,
concerned with planning, preparation and evaluation of software
products to determine that they satisfy specified requirements, to
demonstrate that they are fit for purpose and to detect defects.
Department of Software Engineering 9
Test Oracle
Expected Actual
• Test Oracle: a source of information about whether the output of a
program (or function or method) is correct or not
Department of Software Engineering 10
Error – Fault – Failure
A person makes
an error ...
… that creates a
fault in the
software ...
… that can cause
a failure
in operation
Fault / Defect / Bug
Department of Software Engineering 11
Testing vs. Debug
• Testing: finding input that cause the program to fail
• Debug: the process of finding a fault given by a failure
Department of Software Engineering 12
Test Bed
• The test execution environment configured for testing
• Hardware
• Software
• Operating system
• Network configuration
• The product/application under test (AUT)
• Other system/application
• …
Department of Software Engineering 13
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 14
Department of Software Engineering 15
Why must we test?
“A clever person solves a problem. A wise person avoids it”
Albert Einstein
Software bugs could be expensive and even dangerous
Korean Air Flight 801 crashed, 1997 Ariane 5 rocket exploded, 1996
254 people dead & injured $500 million lost
Department of Software Engineering 16
Cost of fixing defects
Department of Software Engineering 17
Objective of Testing
• Detect Faults
• Establish confidence in the software
• Evaluate properties of the software
• Reliability
• Performance
• Memory usage
• Security
• Usability
• …
Department of Software Engineering 18
Objectives of Testing
• Should NOT be to verify that the program works correctly
• If you can’t test the program completely, you can’t verify that it works
correctly
• “Testing can show the presence of bugs, but not the absence” - Dijkstra
If you set your mind to show that a program
works correctly, you’ll be more likely to miss
problems than if you want and expect the
program to fail.
Department of Software Engineering 19
Objectives of Testing
The Objective of Testing a Program is to Find Problems
Finding problems is the core of your work. You should want to find as
many problems as possible. The more serious testers find, the
better tester is.
A test that reveals a problem is a success. A test that did not reveal a
problem is (often) a waste of time.
Department of Software Engineering 20
Objectives of Testing
The Purpose of Finding Problems is to Get Them Fixed
The point of the exercise is quality improvement!
• The best tester is not the one who finds the most bugs or who embarrasses
the most programmers.
• The best tester is the one who gets the most bugs fixed.
Department of Software Engineering 21
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 22
Department of Software Engineering 23
QC vs. QA
Department of Software Engineering 24
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 25
Department of Software Engineering 26
Software Testing Career Path
Department of Software Engineering 27
Content
• What is Software Testing?
• Why must we test?
• What does a Software Tester do?
• Potentials of Software Testing Career?
• Tester is a “low-level” job?
• How is a good tester?
Department of Software Engineering 28
Department of Software Engineering 29
Domain Knowledge
Department of Software Engineering 30
Good Software Tester
Department of Software Engineering 31
Tester vs. Developer
Department of Software Engineering 32