Black Box Software Testing Puts Software
through Its Paces
In the software development life cycle software testing
is one of the main processes involved. The objective of
software testing is to find out the errors and mistakes either
in the software or in the coding so that the final product
before marketing is without any flaws. 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 parameters of the software
such as functionality, correctness, completeness,
maintainability, efficiency, capability, portability and
usability. Such tests give the developer and customer
confidence in the quality assurance of the product. There are
many ways in which software testing types can be categorized.
Categorization of testing based on the knowledge of system is
white box testing, grey box testing and black box testing.
Brief descriptions are 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 software testing engineer has to test the software based
on different points of view in the software. The views can
either be external or internal or somewhere in between
depending on the type of testing being carried out. As
indicated earlier the black box testing has no knowledge of
internal behavior and looks at the testing as external. This is
probably the most widely practiced type of testing and is close
to the customer experience.
A test engineer when preparing the black box test cases
should ensure that he does not have any preconceived notions
regarding the system based on his knowledge. Such assumptions
will be biased and you might miss critical test cases. During
black box testing the testing engineer not only is expected to
test the correct running of the program but also should test
different areas and different scenarios to ensure that the
program runs efficiently. Black box testing allows the engineer
to test different phases of the software.
Some of the testing types related to black box testing are
functional testing, stress testing, load testing, smoke
testing, regression testing, ad-hoc testing etc. These are
briefly given below.
 |
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. |
 |
Stress testing – this facilitates evaluation of the
point of failure of a system or component at or
beyond the limits of its specified requirements and
reason for failure. A graceful degradation under
load leading to non-catastrophic failure is the
desired result. In case of memory leak or race
condition, it will show up during the stress test.
When two tests are conducted individually the
software may function satisfactorily; however when
these test are conducted simultaneously i.e. race
condition, there is a conflict and hence the tests
fail. |
 |
Load testing – In this the testing is carried out
against heavy loads or inputs such as multiple user
log-in, mail servers etc. to find out at what point
the web-site/application fails or at what point its
performance degrades. The testing engineer would
like to ensure that the software performs without
any degradation on load. |
 |
Smoke testing - This type of testing is also called
sanity testing. This a quick test to ensure that
the major functions of a piece of software work
without bothering with finer details. This Origin
of this term is from the hardware testing practice
of turning on a new piece of hardware for the first
time and considering it a success if it does not
catch on fire. |
 |
Regression testing - Regression testing is done to
ensure that enhancement, defect fixes or any other
changes made to the software has not broken any
existing functionality. The regression testing is
very important because of iterative development
used in the software development. In this shorter
cycle is used with some functionality added in
every cycle. Hence it is essential to have
regression testing for every cycle to make sure
that new features are not breaking any existing
functionality. |
 |
Ad-hoc testing - Ad hoc testing is software testing
performed without planning and documentation. Ad
hoc testing is a part of exploratory testing, being
the least formal of test methods. This test is
conducted when at the fag end of software
development to determine whether any more tests are
to be conducted. |
|