Introduction To Software Testing
Introduction To Software Testing
By,
Ikhlaq
Agenda
Understanding softwaretesting and its objectives.
Discuss the differences between the various Software
testing strategies, their advantages and disadvantages.
Levels of Software testing.
Test
What is Software testing
Testing is the process of exercising a program with the
specific intent of finding errors prior to delivery to the
end user and to ensure that the software systems would
work as expected when they are used by their target
customers and users
Software testing provides a mechanism to demonstrate
their operation through controlled execution according
to approved test procedures on approved test cases.
Objectives of software testing
That it is giving the desired outcomes and satisfying all the
requirements and business needs.
To reveal as many errors as possible, so they are recorded, analyzed
and debugged.
Software testing is all about comparing actual and the desired
behavior of the product.
To perform the required tests strategically, efficiently and
effectively within budgetary and scheduling limitations.
To compile a record of software errors for using in error preventive
actions.
To bring the tested software product to an acceptable level of
quality in context of (Zero defect)(User satisfaction)(Excellence)
What Testing Shows
errors
requirements conformance
performance
an indication
of quality
6
Why testing
Some of the reasons why software testing becomes a
very significant and integral part in achieving product
quality.
Cost-effectiveness
Excellence(Performance in terms of efficiency and
effectiveness)
Customer Satisfaction
Minimizing defects
Conformance to the specifications.
Testing Approaches
Formal Testing: Performed by test engineers.
Informal Testing: Performed by the developers.
Static testing: Static techniques are concerned with accuracy assessment
on the basis of characteristics of the static model design and source code
e.g. software inspections.
Dynamic testing: Dynamic techniques require model execution and are
intended for evaluating system’s operational behavior e.g. software testing.
Manual Testing: That part of software testing that requires human
input, analysis, or evaluation.
Automated Testing: Software testing that utilizes a variety of tools
to automate the testing process. Automated testing still requires a
skilled quality assurance professional with knowledge of the
automation tools and the software being tested to set up the test cases.
Who Tests the Software
Developer Specialized tester team
Major Activities in Software Testing
There are three main activities in software testing and
these are described below with brief explanation:
Test strategy
A test strategy is an formal outline that describes
the testing approach of the software development cycle
to meet those objectives from a quality assurance
perspective.
To perform effective testing, you should conduct
effective technical reviews. By doing this, many errors
will be eliminated before testing commences
Different testing techniques are appropriate for
different software engineering approaches and at
different points in time, also depending of scale and
type of software product.
Cont…
Testing begins at the component level and works
"outward" toward the integration of the entire computer-
based system. Likewise we begin by ‘testing-in-the-small’
and move toward ‘testing-in-the-large’
For conventional software
The units and module are our initial focus
Integration of modules follows
For OO software
our focus when “testing in the small” changes from an individual
module (the conventional view) to an OO class that encompasses
attributes and operations and implies communication and collaboration
Levels of testing
Unit testing
Integration testing
Top-down integration
Bottom-up integration
Sandwich testing and integration
Validation testing
System testing (end-to end)
Cont…
Unit testing
This type of testing is performed by the developers
before the setup is handed over to the testing team to
formally execute the test cases. Unit testing is
performed by the respective developers on the
individual units of source code assigned areas. The
developers use test data that is separate from the test
data of the quality assurance team.
The goal of unit testing is to isolate each part of the
program and show that individual parts are correct in
terms of requirements and functionality.
Unit Testing
module
to be
tested
results
software
engineer
test cases
16
Unit Testing
module
to be
tested
interface
local data structures
boundary conditions
independent paths
error handling paths
test cases
17
Unit Test Environment
driver
interface
local data structures
stub stub
test cases
RESULTS
18
Integration Testing
The testing of combined parts of an application to determine if they
function correctly together is Integration testing.
There are three methods of doing Integration.
Bottom-up integration: Testing begins with unit testing, followed by
tests of progressively higher-level combinations of units called
modules or builds.
Top-Down integration: The highest-level modules are tested first and
progressively lower-level modules are tested after that. In a
comprehensive software development environment, bottom-up testing
is usually done first, followed by top-down testing.
Sandwich integration: Sandwich testing is a type of testing that
consist of two parts, they are Top-down approach and Bottom-up
approach. It combines the advantages of both Bottom-up testing and
Top-down testing.
Integration Testing Strategies
Options:
• the “big bang” approach (all at once)
• an incremental construction strategy
20
Top Down Integration
A
top module is tested with
stubs
B F G
21
Bottom-Up Integration
B F G
22
Sandwich Testing
A
Top modules are
tested with stubs
B F G
cluster
23
System Testing
This is the next level in the testing and tests the system as a whole. Once all the
components are integrated, the application as a whole is tested rigorously to see that it
meets Quality Standards. This type of testing is performed by a specialized testing team.
System Testing is the first step in the Software Development Life Cycle, where the
application is tested as a whole.
The application is tested thoroughly to verify that it meets the functional and technical
specifications.
The application is tested in an environment which is very close to the production
environment where the application will be deployed.
System Testing enables us to test, verify and validate both the business requirements
as well as the applications architecture.
Significance of system testing:
Minimize the gaps in testing when an application with changes made has to be tested.
Testing the new changes to verify that the change made did not affect any other area of the
application.
Mitigates Risks when regression testing is performed on the application.
Test coverage is increased without compromising timelines.
Increase speed to market the product.
Cont….
Thank you