Tests
can be conducted based on two approaches –
● Functionality
testing
● Implementation
testing
When
functionality is being tested without taking the actual implementation in
concern it is known as black-box testing. The other side is known as white-box
testing where not only functionality is tested but the way it is implemented is
also analyzed.
Exhaustive
tests are the best-desired method for a perfect testing. Every single possible
value in the range of the input and output values is tested. It is not possible
to test each and every value in real world scenario if the range of values is
large.
It
is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of
input values and respective desired results. On providing input, if the output
matches with the desired results, the program is tested ‘ok’, and problematic
otherwise.
In
this testing method, the design and structure of the code are not known to the
tester, and testing engineers and end users conduct this test on the software.
Black-box
testing techniques:
● Equivalence
class - The input is divided into similar classes. If one element
of a class passes the test, it is assumed that all the class is passed.
● Boundary
values - The input is divided into higher and lower end
values. If these values pass the test, it is assumed that all values in between
may pass too.
● Cause-effect
graphing - In both previous methods, only one input value at a time
is tested. Cause (input) – Effect (output) is a testing technique where
combinations of input values are tested in a systematic way.
● Pair-wise
Testing - The behavior of
software depends on multiple parameters. In pairwise testing, the multiple
parameters are tested pair-wise for their different values.
● State-based
testing - The system changes state on provision of input. These
systems are tested based on their states and input.
It
is conducted to test program and its implementation, in order to improve code
efficiency or structure. It is also known as ‘Structural’ testing.
In
this testing method, the design and structure of the code are known to the
tester. Programmers of the code conduct this test on the code.
The
below are some White-box testing techniques:
● Control-flow
testing - The purpose of the control-flow testing to set up test
cases which covers all statements and branch conditions. The branch conditions
are tested for both being true and false, so that all statements can be covered.
● Data-flow
testing - This testing technique emphasis to cover all
the data variables included in the program. It tests where the variables were
declared and defined and where they were used or changed.