Software Testing
Overview
Software Testing
Bug
Terms for software failure
Types of Bugs
Occurrence of a Bug
Cost of Bugs
Software Testing
Testing is the process of evaluating a
system or its component(s) with the intent
to find that whether it satisfies the specified
requirements or not.
This activity results in the actual, expected
and difference between their results
Software testing is an integral part of the
software development life cycle which
identifies the defects or the errors in the
application
Objectives
It ensures if the solutions meet the business
requirements
It catches the bugs, errors and defects.
It ensures if the system is stable and ready for
use.
It identifies the areas of weakness in an
application or product.
It establishes the degree of quality.
It determines user acceptability
Scope – examine components like
Business requirements.
Design requirements
Programmer’s code.
Hardware configuration.
Systems administration standards
and constraints
The range of testing could also involve
testing with respect to industry standards
and professional best practices.
Testing thus provides an opportunity to
validate and verify all aspects of software
engineering.
Verification / Validation
Verification Validation
Ensure that the software
Ensure that functionalities meet
system meets all the
the intended behavior.
functionality.
Validation occurs after
Verification takes place first
verification and mainly involves
and includes the checking for
the checking of the overall
documentation, code etc.
product.
Done by developers. Done by Testers.
It is an objective process and It is a subjective process and
no subjective decision should involves subjective decisions on
be needed to verify the how well the Software works.
Software.
Verification & Validation
Verification - typically involves reviews and
meeting to evaluate documents, plans, code,
requirements, and specifications. This can be
done with checklists, issues lists, walkthroughs,
and inspection meeting.
Validation - typically involves actual testing and
takes place after verifications are completed.
Validation and Verification process continue in a
cycle till the software becomes defects free.
Who does Testing?
Software Tester
Software Developer
Project Lead/Manager
End User
Software Quality Assurance Engineer
Software Quality Assurance Analyst
When to Start Testing?
An early start to testing reduces
Cost
time to rework
error free software
depends on the development model
Waterfall Model
Incremental Model
Testing can be started from the
Requirements Gathering phase and lasts
till the deployment of the software.
When to Stop Testing?
Unlike when to start testing it is difficult to
determine when to stop testing.
Testing Deadlines.
Completion of test case execution.
Completion of Functional and code
coverage to a certain point.
Bug rate falls below a certain level and
no high priority bugs are identified.
Management decision.
Bug
A bug, also known as a software bug
it is an error in a software program that
may produce incorrect, undesired result
or prevent the program from working
correctly.
In software testing, a bug not only
means an error, but anything that affects
the quality of the software program
Terms for Software Failures
Error, Fault and Failure:
Humans make errors in their thoughts,
actions, and in the products that might result
from their actions. Errors (Mistake) occur in
the process of writing a program.
Terms for Software Failures
Error, Fault and Failure:
A programmer makes an error (mistake),
which results in a defect (fault, bug) in the
software source code.
If this defect is executed, in certain
situations the system will produce wrong
results, causing a failure.
Terms for Software Failures
Errors
Incorrect usage of software by users
Bad architecture and design by architects
and designers
Bad programming by developers
Inadequate testing by testers
Terms for Software Failures
Fault
A fault is the manifestation of one or more
errors
An incorrect statement
Wrong data type
Wrong mathematical formula in design
document
Missing functionality in the system
Terms for Software Failures
Failure
A failure occurs when a faulty piece of code
is executed leading to incorrect state that
propagates to the program’s output.
Types of Bugs
Software bugs, which occur irrespective of
the size of the program, are generally
encountered when different groups of
developers work to develop a single
program.
Types of Bugs
1. Bugs due to Conceptual Error:
Incorrect usage of syntax in the
program
Misspelled keywords
Using wrong or improper design or
concept.
Types of Bugs
2. Math Bugs
Divide by zero error
Overflow or Underflow
lack of precision in arithmetic
values due to incorrect rounding or
Truncation of decimal values.
Types of Bugs
3. Logical Bugs
Infinite loops
Infinite recursion
Applying wrong logic
Incorrect usage of jump or break
conditions.
Types of Bugs
4. Resource Bugs
Stack or buffer overflow
Access violations
Using variables that are not
initialized.
Types of Bugs
5. Co-programming Bugs
Concurrency errors
Deadlock
Race condition
Types of Bugs
6. Team working Bugs
Out of date comments
Non-matching of documentation or
files
Linking the program to incorrect
files.
Occurrence of a Bug
Human Factor:
incorrect usage of logic or syntax
improper linking of files
Communication Failure
Unrealistic Development Timeframe
Tight schedules
Limited or insufficient resources
Unrealistic project deadlines
Poor Design Logic
Poor Coding Practices
Lack of Skilled Testing
Change Requests