Software Testing Types: A Look at Some Great
Technology
In the software development life cycle software testing
types plays a stellar role. The objective of software testing
is to find out the errors and mistakes either in the software
or in the coding. Testing is carried out to find out the errors
in the program before marketing it. Software testing gives the
developer and customer confidence in the quality assurance of
the product. The execution of software testing is carried out
at various levels and at each of these levels different
software testing types are used.
These tests check for the various parameter of the software
such as correctness, completeness, maintainability, efficiency,
capability, portability and usability. There are many ways in
which software testing can be categorized. Categorization of
testing based on the knowledge of system is white box testing,
grey box testing and black box testing. These are briefly
defined as follows.
 |
Black box testing - treats the software as a
black-box without any knowledge of internal
behavior |
 |
White box testing - the tester has complete access
to the internal data structures, code, and
algorithms. |
 |
Grey box testing - 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. |
The above software testing types are the basic testing
methods used in small programs. However, the above tests do not
yield satisfactory results for large complicated programs. For
such programs, types of testing categorized on the time it is
executed in the Software Development Life Cycle are used. They
are unit testing, integration testing, system testing, system
integration testing and acceptance testing. Briefly, these
testing types are as follows.
 |
Unit testing – tests the minimal software component
or module |
 |
Integration testing – Checks for any defects in the
interfaces and interaction between integrated
modules |
 |
System testing – Tests the integrated system to
verify functional requirement |
 |
System integration testing - verifies whether the
system is integrated properly to any external or
third party systems defined in the system
requirements |
 |
Acceptance testing - testing done the by customer
to decide on the product acceptance |
Testing can also be categorized based on how it is executed.
Execution could be in the form of verification or static
analysis or it could be validation or dynamic analysis.
Verification is to verify that the code prepared according to
the specification or not. Validation is to verify whether the
software fulfills the customer specification.
Another classification for testing type is Functional
Testing and Non Functional Testing. In functional testing,
the focus of testing activities is on functional aspects of the
system. In this test cases are written to check the expected
output. In non-functional testing, 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.
Acceptance Testing 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. This consists of alpha testing and beta testing.
Details are given below.
 |
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 |
Feedback is a must in the beta testing because without
feedback the developer will not know his mistakes. Alpha and
beta testing are useful for determining the portability of the
software.
|