Outline
• What is software testing?
• Software validation & Verification
• Who does testing?
• Types of testing
• Testing Targets
• Testing approaches
• Testing levels
• Testing Documentation
What is software Testing?
It is an evaluation of software against requirements
gathered from users.
It is conducted at the phase level (SDLC)
Or at module level (in program code)
It comprises of validation and verification
Software Validation
Examine whether or not the software satisfies all
user’s req’s.
It is carried out at the end of SDLC
If the software matches requirements for which it
was made then it is validated.
Validation emphasizes on user requirements.
Software Verification
Confirming if the software is meeting the business
requirements
And if the software is developed adhering to the
proper specifications and methodologies.
It ensures that the product is developed according
design specification
It concentrates on design
Verification VS Validation
Verification addresses the Validation addresses the
concern: "Are you building it concern: "Are you building the
right?" right thing?"
Ensures that the software Ensures that the
system meets all the functionalities meet the
functionality. intended behavior.
Validation occurs after
Verification takes place first
verification and mainly
and includes the checking for
involves the checking of the
documentation, code, etc.
overall product.
Done by developers. Done by testers.
It has static activities, It has dynamic activities
It is an objective process and It is a subjective process and
no subjective decision should involves subjective decisions
Who does testing?
Software Tester
Software developer (Unit Test)
Project Manager
End user
Different companies have different people for testing
such as: Software Tester, Software Quality
Assurance Engineer, QA Analyst, etc
Types of testing
Manual Testing: the tester takes the role of the end
user and tests the software to identify any unexpected
behavior or bug.
Stages of manual testing are:
a) Unit testing : take the smallest piece of testable
software in the application, isolate it from the
remainder of the code, and determine whether it
behaves exactly as you expect. Done by developers
b) Integration testing : is a level of software testing
where individual units are combined and tested as a
group. Performed by developers or independent
testers.
Manual testing
c) System testing: is a level of the software
testing where a complete and integrated software
is tested. The purpose of this test is to evaluate
the system’s compliance with the specified
requirements. Performed by independent testers.
d) User acceptance testing : system is tested for
acceptability. The purpose of this test is to
evaluate the system’s compliance with the
business requirements and assess whether it is
acceptable for delivery.
Manual testing
e) Regression Testing: The intent of regression
testing is to ensure that a change, such as a bug
fix should not result in another fault being
uncovered in the application.
User acceptance testing
Internal Acceptance testing (known as Alpha
testing): is performed by members of the organization
that developed the software but who are not directly
involved in the project. Example: members of Product
Management, Sales and/or Customer Support.
External Acceptance Testing is performed by people
who are not employees of the organization that
developed the software.
Customer acceptance testing: performed by the
customers of the organization that developed the
software.
User acceptance testing (Known as Beta testing): is
performed by the end users of the software.
Types of testing
Automation Testing: known as Test automation.
Tester writes scripts and uses another software to test
the product.
This process involves automation of a manual process.
It improves accuracy, and saves time and money in
comparison to manual testing.
Available testing tools are HP Quick Test Professional ,
Selenium, IBM Rational Functional Tester, SilkTest,
TestComplete,…
Testing targets
1. Errors:
Coding mistakes made by developers .
A difference in output of a software and desired
output.
2. Faults: When error exists fault occurs.
Also known as a bug it is a result of an error
which causes the system failure.
3. Failure:
Inability of the system to perform the desired
task.
Failure occurs when faults exist in the system.
Testing approaches
Two approaches exist:
1. Functionality Testing
2. Implementation Testing
When functionality is being tested without
taking the actual implementation in concern it
is known as “black-box testing”.
The other side is known as “white-box testing”.
Black-box Testing
It is carried out to test functionality of the program.
It is also called Behavioral testing.
The tester has a set of input values and respective
desired outputs
On providing input, if the output matches with the
desired results, the program is tested “ok”,
Else the program is tested as “problematic” .
In this testing the design and structure of the code
are not known to the tester.
Black-box Testing technique
Equivalence Class - The input is divided into
similar classes. If one element of a class passes the
test, it is assumed that all the class is passed.
Boundary values analysis- It is a software test
design technique that involves determination of
boundaries for input values and selecting values
that are at the boundaries and just inside/ outside
of the boundaries as test data. If these values pass
the test, it is assumed that all values in between
may pass too.
Black box Testing techniques
Cause-effect graphing - It is a software test design
technique that involves identifying the cases (input
conditions) and effects (output conditions),
producing a Cause-Effect Graph, and generating test
cases accordingly.
Pair-wise Testing - The behavior of software
depends on multiple parameters. In pair-wise
testing, the multiple parameters are tested pair-wise
for their different values.
State-based testing - The system changes state on
provision of input. These systems are tested based
on their states and input.
Example
A tester, without knowledge of the internal
structures of a website, tests the web pages by
using a browser; providing inputs (clicks,
keystrokes) and verifying the outputs against the
expected outcome.
Black box applicable levels
The black box method is applicable to the following
levels of testing:
Integration Testing
System Testing
Acceptance Testing
Advantages vs Disadvantages
Tests are done from a user’s Only a small number of
point of view possible inputs can be tested
and many program paths will
be left untested.
Tester need not know Without clear specifications,
programming languages or how which is the situation in many
the software has been projects, test cases will be
implemented. difficult to design.
Tests can be conducted by a Tests can be no longer needed
body independent from the if the software designer/
developers, developer has already run a test
case.
White box Testing
Also known as Clear Box Testing, Open Box Testing,
Glass Box Testing, Transparent Box Testing, Code-
Based Testing or Structural Testing.
A method that evaluate codes and internal structure of
the program.
Testing is based on an analysis of the internal structure
of the component or system.
White box Techniques
Statement Coverage: In programming language,
statement is nothing but the line of code or
instruction for the computer to understand and act
accordingly. This is the method of validating that each
and every line of code is executed at least once
Branch Coverage: “Branch” in programming language
is like the “IF statements”. If statement has two
branches: true and false. So in Branch coverage (also
called Decision coverage), we validate that each
branch is executed at least once.
White box Techniques
Path Coverage: Path coverage tests all the paths of the
program. This is a comprehensive technique which
ensures that all the paths of the program are traversed
at least once. Path Coverage is even more powerful that
Branch coverage. This technique is useful for testing
the complex programs.
Black box VS White box
test the software from a test the actual code
user’s point of view
we do testing without we do see and test the
seeing the internal internal code
system code
End of chapter 5
Thank you for your attention
May God bless you in all.