The Software Testing Cycle: A Valuable
Process
One of the important stages in the software development
life cycle is software testing. There are a number of testing
types used for testing the software starting from the
development of the application until it reaches the marketing
phase. Before it is released for production any software has to
undergo a series of testing such as black box/ white box/ gray
box testing, unit/ integration/ system testing and alpha
testing/ beta/ acceptance testing, functional/ non-functional
testing and verification and validation.. These tests are
carried out during the entire period of software testing cycle.
There are a number of different testing cycle models that
are in vogue. Different companies use different models; however
the concepts are more or less same. Typical software testing
cycle model is given below.
 |
Requirements Analysis – The testing begins in the
requirements phase of the software life cycle
(SDLC). |
 |
Design Analysis - During the design phase, testers
work in conjunction with developers to determine
the areas of design that are testable and under
what parameter those tests work. |
 |
Test Planning - During this phase test strategy,
test plans and test bed creation are decided |
 |
Test Development – Finalization of test procedures,
test scenarios, test Cases, test scripts to use in
testing software. |
 |
Test Execution - Testers execute the software based
on the plans and tests and report any errors found
to the development team. |
 |
Test Reporting - Once testing is completed, testers
generate metrics and make final reports on their
test effort and whether or not the software tested
is ready for release. |
 |
Retesting the Defects |
During the testing the software is tested for the security,
performance, functionality, usability, reliability, efficiency,
portability and maintainability etc.
Before the software is released for production any software
has to undergo series of testing as per the requirement of
software testing cycle. Brief details of these tests are given
below.
 |
Black box testing - As the name "black box"
suggests, this type of testing requires no
knowledge of internal logic or code structure. The
types of testing under this strategy are totally
focused on the testing for requirements and
functionality of the product/ software application.
In this the software tester will input the data and
see the correctness of the output data. He is not
concerned with the internal operations which make
the data do what it does. |
 |
White box testing - This testing strategy deals
with the internal logic and structure of the code.
The tests written based on the white box testing
strategy incorporate coverage of the code written,
branches, paths, statements and internal logic of
the code etc. This aspect of testing is done by the
white box testing which is normally done by capable
software professional. |
 |
Gray box testing - This involves having access to
internal data structures and algorithms for
purposes of designing the test cases, but testing
at the user, or black-box level. Gray box testing
can be considered as the combination of black box
and white box testing. The objective of this
testing is to find out defects related to bad
design or bad implementation of the system. |
 |
Unit testing – This is the method of making sure
that the smallest unit of your software is working
properly in isolation. In this, testing is carried
out on the minimal software component or module.
They get integrated once the module testing is
completed. |
 |
Integration testing – The objective of Integration
testing is to make sure that the interaction of two
or more components produces results that satisfy
functional requirement. This test checks for any
defects in the interfaces and interaction between
integrated modules. The integrated software should
function as a group in the same way as its
components. |
 |
System testing - System testing is the most
important phase of complete testing cycle. This
phase is started after the completion of other
phases like Unit, Component and Integration
testing. During the System Testing phase
performance testing, load testing, stress testing,
scalability etc. are also performed. Non functional
testing is normally carried out during the System
Testing phase only. |
 |
Alpha testing - simulated or actual operational
testing by potential users/customers or an
independent test team at the developers' site.
Alpha testing is often employed for off-the-shelf
software as a form of internal acceptance
testing. |
 |
Beta testing – This comes after alpha testing. In
this, the software is exposed to a limited number
of people who are not a part of the programming
team |
 |
Acceptance testing – In this the testing is done by
the customer to decide on the product acceptance;
this is the formal testing conducted to determine
whether a software system satisfies its acceptance
criteria and to enable buyer to determine whether
to accept the system or not. |
 |
Functional testing - In this, an application or Web
site is validated for conformation to its
specifications and correctly performs all its
required functions. This involves conducting a
series of tests which perform a feature by feature
validation of behavior, using a wide range of
normal and erroneous input data. |
Regression testing is one type of functional testing and
plays an important role in testing software. The existing
software requires changes due to fixing defects, enhancements
etc. Regression testing is done to ensure that enhancement,
defect fixes or any other changes made to the software have not
broken any existing functionality. Regression testing is very
important wherever there is iterative development of software.
In iterative development, the developer adds another module
with some functionality to the existing running module and one
should make sure that addition of this module does not break
the existing functionality. Regression testing is performed
with the goal of discovering regression bugs.
 |
Non-functional testing – In this the focus of the
testing activities is on non functional aspects of
the system. The focus of non functional testing is
on the behavior and user experience of the
system. |
 |
Performance testing - This is carried out to check
whether the system meets performance requirements
and is done after the completion of functional
testing. Objective of performance testing is not to
find functional defect in the system and it is
assumed that functional defects have been
identified and removed from the system during
functional testing. |
 |
Verification and Validation (V&V) is one of the
most important steps in the software testing cycle.
This is the process of checking that a software
system meets specifications and that it fulfils its
intended purpose. Validation is the process of
evaluating software during or at the end of the
development process to determine whether it
satisfies specified requirement. Verification is
the process of evaluating software to determine
whether the products of a given development phase
satisfy the conditions imposed at the start of that
phase. |
|