SE Testing
SE Testing
SOFTWARE ENGINEERING 1
Contents
Testing Fundamentals
Black-Box and White-Box testing
Testing and Debugging
SOFTWARE ENGINEERING 2
Software Testing
Software Testing is “the process of exercising or evaluating a
system by manual or automatic means to verify that it satisfies
specified requirements or to identify differences between
expected and actual results “
Testing: Examination of the behavior of a program by executing
the program on sample data sets.
It is the process of establishing confidence that a program or
system does what it is supposed to.
SOFTWARE ENGINEERING 3
Software Testing
The last quality checking point for software on its production line
Testing is a verification technique used at the implementation stage.
You don’t test a program to show how it works, but you should start
with the assumption that the program contains errors/uncertainities.
Testing can show the presence of bugs but never their absence.” –
Dijkstra
SOFTWARE ENGINEERING 4
The testing Purpose
The purpose of the testing is confirming that the system satisfies
requirements
Testing must be planned
Test Case
A specific scenario of transactions, queries or navigation
paths that represent a typical, critical or abnormal use of the
system
Test cases and results should be thoroughly documented so
they can be repeated for each revision of an application
SOFTWARE ENGINEERING 5
The testing process
Testing is done throughout the development process.
Testing is divided into phases beginning in the design phase and
ending at the customer’s site.
Testing process is illustrated in the next slide.
The two fundamental decisions that must be made before planning
for testing can occur are:
What is the required software quality standard, and
What is the software testing strategy.
SOFTWARE ENGINEERING 6
The testing process
SOFTWARE ENGINEERING 7
Some definitions
Let P be a program and let D denote its input domain,
A test case t is an element of input domain t D
a test case gives a valuation for all the input variables of the
program
A test set T is a finite set of test cases, i.e., a subset of D, T D
The basic difficulty in testing is finding a test set that will uncover
the faults in the program
Exhaustive testing corresponds to setting T = D
SOFTWARE ENGINEERING 8
Goal of testing
To find faults/defects in the software
To check whether the client needs are satisfied or not
It is not possible to prove that there are no faults in the software
using testing
Testing should help locate errors, not just detect their presence
To provide quality product
SOFTWARE ENGINEERING 9
Source of bugs
Miscommunication
Time pressure
Changing requirements
Software complexity
Programing mistakes
SOFTWARE ENGINEERING 10
Functional (Black box)
Black-box testing : Deriving tests from external descriptions of the
software, including specifications, requirements, and design
Functional testing: Generating test cases based on the functionality
of the software
In black box testing the internal structure of the program is hidden
from the testing process
Done by testers
SOFTWARE ENGINEERING 11
White-box/Structural Testing
White-box testing : Deriving tests from the source code internals of
the software, specifically including branches, individual conditions,
and statements
Structural testing: Generating test cases based on the structure of the
program
In white box testing internal structure of the program is taken into
account
Done by developers
SOFTWARE ENGINEERING 12
Other Testing Types
Unit Testing :
individual methods, classes, or components before they are
integrated with other software
done by programmer and/or development team.
Integration Testing :
evaluates the behavior of a group of methods or classes (interface
compatibility, unexpected parameter values or state interaction, run-
time exceptions)
can be by development or testing unit.
SOFTWARE ENGINEERING 13
Testing Types
System Testing :usually done by an independent testing team
(internal or external (consultants) team.
Acceptance testing :
overall test involving all parties and system requirements
(performance of functions, stress resistance, security, recovery)
SOFTWARE ENGINEERING 14
Testing Types
Usability testing :
system works but fails some of the usability requirements (easy to
learn, use & navigate, task efficiency);
user interface focus.
Can be part of Acceptance testing.
SOFTWARE ENGINEERING 15
Regression testing
Need not test everything.
Typically re-test only those artifacts directly changed and those
providing inputs and outputs to these changed artifacts (modules).
Very often new errors introduced when changes made.
There’s always risk in not testing everything… but these decisions
must be made.
Results of testing are documented in a test report.
SOFTWARE ENGINEERING 16
Testing at Different Levels
Acceptance testing: Is the
main Class P software acceptable to the
user?
System testing: Test the
overall functionality of the
system
Class A Class B
Integration
testing: Test
method mA1() method mB1() how modules interact with
each other
method mA2() method mB2()
Module testing: Test each
class, file, module or
component
Unit testing: Test each
unit (method) individually
SOFTWARE ENGINEERING 17 17
Software testers
Programmers
Unit testing
Testing buddies can test other’s programmer’s code
Quality assurance personnel
Integration and Usability
Users
Acceptance testing
Volunteers for testing beta version of software
SOFTWARE ENGINEERING 18
Testing Vs Debugging
Testing
A process of finding bugs or errors in a software product that is
done manually by tester or can be automated
Finding inputs that cause the software to fail
Debugging
A process of fixing the bugs found in testing phase. Programmer
or developer is responsible for debugging
The process of finding a fault given a failure.
SOFTWARE ENGINEERING 19
Fundamentals of Software Engineering
SOFTWARE ENGINEERING 20
Software Maintenance
Software maintenance is the general process of changing a system
after it has been delivered.
The act of keeping, or the expenditure required to keep, an asset in
condition to perform efficiently the service for which it is used.
The modification of a product, after delivery,
to correct faults,
to improve performance or other attributes,
or to adapt the product to a changed environment.
A common perception of maintenance is that it merely involves fixing defects.
SOFTWARE ENGINEERING 21
Purpose of Maintenance
Attempt to maximize performance of production equipment
efficiently and regularly
Prevent breakdown or failures
Minimize production loss from failures
Increase reliability of the operating systems
SOFTWARE ENGINEERING 22
Purpose of Maintenance
To achieve product quality and customer satisfaction through
adjusted and serviced equipment
Maximize useful life of equipment
Keep equipment safe and prevent safety hazards
Minimize frequency and severity of interruptions
Maximize production capacity – through high utilization of facility
SOFTWARE ENGINEERING 23
Problems in Maintenance
Lack of management attention to maintenance
Little participation by accounting in analyzing and reporting costs
Difficulties in applying quantitative analysis
Difficulties in obtaining time and cost estimates for maintenance
works
Difficulties in measuring performance
SOFTWARE ENGINEERING 24
Problems Exist Due To:
Failure to develop written objectives and policy
Inadequate budgetary control
Inadequate control procedures for work order, service requests etc.
Infrequent use of standards
To control maintenance work
Absence of cost reports to aid maintenance planning and control
system
SOFTWARE ENGINEERING 25
Types of Maintenance
1.Corrective maintenance: Reactive modification of a software
product performed after delivery to correct discovered problems.
Changes made to system to repair flaws in its design, coding or
implementation.
example: light bulb replacement
2.Adaptive maintenance: Modification of a software product
performed after delivery to keep a software product usable in a changed
or changing environment.
example: roadways ,websites etc.
SOFTWARE ENGINEERING 26
Types of Maintenance
3.Preventive maintenance: Modification of a software product after
delivery to detect and correct latent faults in the software product before
they become effective faults.
Changes made to a system to avoid possible future problems
example: changing oil & filters
Perfective maintenance: Modification of a software product after
delivery to improve performance or maintainability.
Changes made to a system to add new features/improve performance
example: software updates and service patch.
SOFTWARE ENGINEERING 27
Need for software Maintenance
Maintenance to repair software faults
Changing a system to correct deficiencies in the way meets its
requirements.
Maintenance to adapt software to a different operating environment
Changing a system so that it operates in a different environment
(computer, OS, etc.) from its initial implementation.
Maintenance to add to or modify the system’s functionality
Modifying the system to satisfy new requirements.
SOFTWARE ENGINEERING 28
Thank you !!!
SOFTWARE ENGINEERING 29