Chapter 7 - Software Quality Assurance
Chapter 7 - Software Quality Assurance
Campus
DEPARTMENT OF COMPUTER
SCIENCE
Chapter 7
Software Testing and Quality Assurance
Compiled by Talegeta G.
.
Software testing is:
Software testing determines the correctness, completeness and quality of software
being developed.
an activity of checking whether the actual results match the expected results and
to ensure that the software is defect free.
the process of verifying and validating a software application to check whether it
is working as expected or not.
The intent is to find defects and improve the product quality.
It also helps to identify errors, gaps or missing requirements in contrary to the
actual requirements.
It can be done either manually or using automated tools.
Software testing is aimed at identifying any bugs, errors, defect, or failures present in the
software.
Error: A human action that produces an incorrect result.
It refers to a missing or incorrect human action resulting in certain fault(s) being
injected into a software.
Fault: An incorrect step, process, or data definition in a computer program.
Fault refers to an underlying condition within a software that causes certain failure(s) to
occur;
Failure: The inability of a system or component to perform its required functions within
specified performance requirements.
If a build* does not meet the requirements.
Failures, faults, and errors are collectively referred to as defects in literature.
Software problems or defects, are also commonly referred to as “Bugs/Issues”
Why software testing is required?
Generally, software testing is required:
✓ To ensure that the product is inline with the requirement of the client.
✓ To ensure that the system is free from any bug that can cause any kind of failure.
A developer generally checks his code several times before he submits it for
testing and still in most cases it is never error-free because a developer is
generally blind to his own mistakes.
A tester on the other hand looks at software from clients’ point of view.
He is unbiased and his focus is only on the specifications and the requirements.
So, a tester is able to look into areas that a developer may ignore.
Starting testing in the later stages of development can turn out to be an expensive matter
as it is very difficult to rectify defects once the software has reached the final stages of
development.
Dividing software development into stages and then testing work done in every stage
before moving on to the next stage helps in finishing the software development in time
with good results.
Advantages of testing
It removes errors, which prevent software from producing outputs which are
not according to user requirements.
It ensures that the software conforms to business as well as user’s needs.
It improves the quality of the software by removing maximum possible errors
from it.
Software Verification and Software Validation
Software testing is closely related to the terms verification and validation.
Testing shows the defects but cannot prove that there are no defects. Meaning that the
testing team cannot say that the product is 100% defect-free.
It is impossible to test all possible combinations of input cases and data.
The sooner we start the testing activities, the better we can utilize the available time.
During testing, it can be observed that most of the reported defects are related to small
number of modules within a system.
….cont’d
Principle 5. The pesticide paradox
If you keep running the same set of tests over and over again, no more new
defects will be discovered by those test cases.
Different methods, techniques and types of testing are related to the type and
nature of the application.
Just because testing didn’t find any defects in the software, it doesn’t mean that the
software is ready to be shipped.
Software Testing Life Cycle (STLC)
Software testing life cycle defines the stages in testing of software.
In STLC process, various activities are carried out to improve the quality of the product.
What is the traditional process of the client and how our software is
going to help our client?
2. Test Planning
Test plan has to have sufficient information on:
Tasks include:
This step decides on which Platform/OS the tester needs to perform testing of
project.
5. Test Execution
The tester has to execute his written test cases against the software that he has
written during the test case design phase.
The tester executes the test cases, checks the response of the software and verify
the response of software whether is it as expected or not.
After executing each test cases, the tester verifies the output and if that output is
not as expected then it means that the test case has failed and a bug has found then
tester report that bug to team lead.
Then bugs will be reported back to the development team for correction and
This is the last phase of software testing life cycle. It is conducted after testing and
releasing of the software.
During this phase, all the testing team meet and discuss about the software and the
issues they faced during the testing.
Also they collect all the testing artifacts (documents). This meet up will help the
testing team to improve the testing process
Software Test Management
Software test management is a process of planning, executing, monitoring and
controlling software testing activities.
It is the practice of organizing and controlling the processes and artifacts required
for the testing effort throughout the project cycle.
Software test management often has multifunctional capabilities such as test ware
management, test scheduling, the logging of results, test tracking, incident
management and test reporting.
Types of Software Testing
The software testing is generally divided into two major categories, which further
consist of numerous testing methods within them.
1. Functional testing
2. Non-functional testing
….cont’d
.
Unit testing is performed by the team of developers before the setup is handed over to the testing
team to formally execute the test cases.
In integration testing, individual software modules are integrated logically and tested as a group.
System Testing is the first level of functional testing where the application is tested as a whole.
User acceptance testing, is conducted by the Quality Assurance (QA) Team or customers to
check whether the application meets the intended specifications and satisfies clients’
requirements.
UAT includes:
a) Alpha Testing
b) Beta Testing
c) Gamma Testing
….
.
cont’d
Alpha testing:- where the system is run in a simulated environment using simulated data.
Beta testing:- where the system is run in a live environment using real data.
Beta testing is done outside the software developing organization, not by its personnel.
Gamma testing:- is a final stage of software testing before an appropriate public release,
it is conducted primarily for safety purposes. It is intended to identify and fix minor
defects that were found during beta testing.
Unit testing
Unit testing is not just performed once during the software development, but
repeated whenever the software is modified or used in a new environment.
It tests data structures that represent relationships among individual data elements.
It ensures that the data entered in variables is of the same data type as defined in
the unit.
It checks all arithmetic calculations present in the unit with all possible
combinations of input values.
Tests all control paths to uncover maximum errors that occur during the execution
of conditions present in the unit being tested.
It ensures that all statements in the unit have been executed at least once.
Integration test
In integration test the units validated during unit testing are combined to form a subsystem
Is aimed at ensuring that all the modules work properly as per the user requirements when
they are put together .
The objective is to take all the tested individual modules. integrate them, test them again,
and develop the software, which is according to design specification.
It ensures that all modules work together properly and transfer accurate data across their
interfaces.
It is performed with an intention to uncover errors that lie in the interfaces among the
integrated components.
It tests those components that are new or have been modified or affected due to a change.
System testing
The system is tested against non functional requirements such as accuracy, reliability,
and speed.
Is to validate and verify the functional design specifications and to check how integrated
modules work together.
Evaluates the system’s interfaces to other applications and utilities as well as the
operating environment.
Is performed to ensure that the functional, behavioral, and performance requirements of
the software are met.
The software is tested and evaluated by a group of users either at developer’s site(alpha
testing) or user’s site(beta testing).
To perform acceptance testing, a predetermine set of data is given to the software.
Software Testing Techniques
Informal reviews are applied many times during the early stages of the life cycle of the
document.
A two persons team can conduct an informal review.
The authors guide the participants through the document and try to understand their
thought processes.
….. cont’d
A technical review is carried out by a trained moderator or technical expert.
A set of activities designed to evaluate the process by which the products are
developed or manufactured. Contrast with: quality control.
.