Overview of Software Testing
1 Overview of Software Testing 11/04/21
References
[1], [3], [4] – Chapter 1
2 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineering
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
3 Overview of Software Testing 11/04/21
What is Software Testing
Most Common Software problems
Incorrect calculation, Incorrect data edits
Incorrect matching and merging of data
Data searches that yields incorrect results
Incorrect processing of data relationship
Incorrect coding/implementation of business rules
Inadequate software performance
Unreliable results or performance
Inadequate support of business needs
Incorrect or inadequate interfaces with other systems
Inadequate performance and security controls
4 Overview of Software Testing 11/04/21
What is Software Testing
Several definitions:
Testing is the process of demonstrating that errors are not
present
The purpose of testing is to show that a program performs its
intended functions correctly
Testing is the process of establishing confidence that a
program or system does what it is supposed to.
Testing is the process of executing a program or system with
the intent of finding errors.
Program testing is more properly viewed as the destructive
process of trying to find the errors (whose presence is
assumed) in a program
5 Overview of Software Testing 11/04/21
What is Software Testing
The Major Objectives of Software Testing:
Uncover as many as errors (or bugs) as possible in a
given timeline.
Demonstrate a given software product matching its
requirement specifications.
Validate the quality of a software testing using the
minimum cost and efforts.
Generate high quality test cases, perform effective tests,
and issue correct and helpful problem reports.
6 Overview of Software Testing 11/04/21
What is Software Testing
Software testing is one element of a broader topic that is
often referred to as Verification and Validation (V&V)
Verification:
The process of determining whether the products of a given
phase of the software development process fulfill the
requirements established during the previous phase (“Are
we building the product right?”)
Verification is usually a more technical activity that uses
knowledge about the individual software artifacts,
requirements, and specifications.
Verification activities include testing and reviews
7 Overview of Software Testing 11/04/21
What is Software Testing
Validation:
The process of evaluating software at the end of software
development to ensure compliance with intended usage
(“Are we building the right product?”)
Validation activities are used to evaluate whether the
features that have been built into the software satisfy the
customer requirements and are traceable to customer
requirements
Validation usually depends on domain knowledge
8 Overview of Software Testing 11/04/21
What is Software Testing
9 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineer
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
10 Overview of Software Testing 11/04/21
Activities of Test Engineer
Test Engineer
An information technology (IT) professional who is in
charge of one or more technical test activities
Define test cases, write test specifications,
Run tests
Analyzing results, and reporting results to developers and
managers.
…
Test Manager
Set test policies and processes, interact with other
managers on the project, and otherwise help the
engineers do their work
11 Overview of Software Testing 11/04/21
Activities of Test Engineer
12 Overview of Software Testing 11/04/21
Activities of Test Engineer
Automation of Test Activities
Software testing is expensive and labor intensive. Software
testing requires up to 50% of software development costs, and
even more for safety-critical applications.
=> One of the goals of software testing is to automate as much
as possible, thereby significantly reducing its cost, minimizing
human error, and making regression testing easier.
Test automation is the use of software to control the execution
of tests, the comparison of actual outcomes to predicted
outcomes, the setting up of test preconditions, and other test
control and test reporting functions
Example: Stress Test, Selenium, TestComplete, IBM Rational
Functional Tester
13 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineer
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
14 Overview of Software Testing 11/04/21
Software Testing Taxonomy
Testing Levels Based on Software Activity
Beizer’s Testing Levels Based on Test Process
Maturity
[1] – Chapter 1
15 Overview of Software Testing 11/04/21
Testing Levels Based on Software
Activity
16 Overview of Software Testing 11/04/21
Testing Levels Based on Software
Activity
Acceptance Testing – assess software with respect to
requirements.
System Testing – assess software with respect to
architectural design.
Performance Testing
Stress Testing
Security Testing
…
Integration Testing – assess software with respect to
subsystem design.
17 Overview of Software Testing 11/04/21
Testing Levels Based on Software
Activity
Module Testing – assess software with respect to
detailed design.
Unit Testing – assess software with respect to
implementation.
Regression Testing
Is done after changes are made to the software, and its
purpose is to help ensure that the updated software still
possesses the functionality it had before the updates.
18 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineer
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
19 Overview of Software Testing 11/04/21
Test Case
Test Case Values (Input): The input values necessary to complete
some execution of the software under test.
Expected Results: The result that will be produced when executing
the test if and only if the program satisfies its intended behavior
Prefix Values: Any inputs necessary to put the software into the
appropriate state to receive the test case values.
Postfix Values: Any inputs that need to be sent to the software after
the test case values are sent.
Test Case: composed of the test case values, expected results, prefix
values, and postfix values necessary for a complete execution and
evaluation of the software under test.
Test Suite: a collection of test cases that are intended to be used to
test a software program to show that it has some specified set of
behaviours
20 Overview of Software Testing 11/04/21
Test Case Design Methods
Any engineered product (and most other things) can be
tested in one of two ways
Black box testing
No knowledge of internal design or code required.
Tests are based on requirements and functionality
White box testing
Knowledge of the internal program design and code required.
Tests are based on coverage of code statements, branches, paths,
conditions.
21 Overview of Software Testing 11/04/21
Test Case Design Methods
22 Overview of Software Testing 11/04/21
Test Case Design Methods
Testing type Techniques Used
Unit Testing White Box
Integration Testing White Box
Black Box
System Testing Black Box
Acceptance Testing Black Box
23 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineer
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
24 Overview of Software Testing 11/04/21
Software Testing Principles
A necessary part of a test case is a definition of the
expected output or result
If the expected result of a test case has not been
predefined, chances are that a plausible, but erroneous,
result will be interpreted as a correct result because of
the phenomenon of “the eye seeing what it wants to see.”
=> a test case must consist of two components:
A description of the input data to the program.
A precise description of the correct output of the program for that
set of input data.
25 Overview of Software Testing 11/04/21
Software Testing Principles
Testing requires independence.
A programmer should avoid attempting to test his or her
own program.
Psychological issues
The program may contain errors due to the programmer’s
misunderstanding of the problem statement or specification
A programming organization should not test its own
programs.
Thoroughly inspect the results of each test
26 Overview of Software Testing 11/04/21
Software Testing Principles
Test cases must be written for input conditions that are
invalid and unexpected, as well as for those that are
valid and expected.
Examining a program to see if it does not do what it is
supposed to do is only half the battle; the other half is
seeing whether the program does what it is not
supposed to do.
Avoid throwaway test cases unless the program is truly
a throwaway program.
27 Overview of Software Testing 11/04/21
Software Testing Principles
Do not plan a testing effort under the tacit assumption
that no errors will be found.
The probability of the existence of more errors in a
section of a program is proportional to the number of
errors already found in that section
28 Overview of Software Testing 11/04/21
Software Testing Principles
Testing is an extremely creative and intellectually
challenging task.
Testing should begin “in the small” and progress
toward testing “in the large.”
Exhaustive testing is not possible
Tests should be planned long before testing begins.
29 Overview of Software Testing 11/04/21
Content
What is Software Testing?
Activities of Test Engineering
Software Testing Taxonomy
Test Case Design Methods
Principles of Software Testing
Software Testing Myths
Software Testing Limits
30 Overview of Software Testing 11/04/21
Software Testing Myths
We can test a program completely. In other words, we test
a program exhaustively.
We can find all program errors as long as test engineers do
a good job.
We can test a program by trying all possible inputs and
states of a program.
A good test suite must include a great number of test cases.
Good test cases always are complicated ones.
Software test automation can replace test engineers to
perform good software testing.
Software testing is simple and easy. Anyone can do it. No
training is needed.
31 Overview of Software Testing 11/04/21
Software Testing Limits
We can never be sure the specifications are 100% correct.
We can never be certain that a testing system (or tool) is
correct.
No testing tools can cope with every software program.
Tester engineers never be sure that they completely
understand a software product.
We never have enough resources to perform software
testing.
We can never be certain that we achieve 100% adequate
software testing
32 Overview of Software Testing 11/04/21
Q&A
33 Overview of Software Testing 11/04/21