Unit Testing
Unit
Testing is done at the source or code level for language-specific programming
errors such as bad syntax, logic errors, or to test particular functions or
code modules. The unit test cases shall
be designed to test the validity of the programs correctness.
White Box Testing
In
white box testing, the UI is bypassed.
Inputs and outputs are tested directly at the code level and the results are compared against
specifications. This form of testing ignores the function of the program under test and will focus only on
its code and the structure of that code. Test case designers shall generate cases that not only
cause each condition to take on all possible values at least once, but that cause each such condition
to be executed at least once. To ensure this
happens, we will be applying Branch Testing.
Because the functionality of the program is relatively simple, this
method will be feasible to apply. Each function of the binary tree repository
is executed independently; therefore, a program flow for each function has been
derived from the code.
Branch Testing
Using
the program flow graph for each function, we will be able to determine all of
the branches that will need to tested and will be used to develop the
corresponding test cases.
Black
box testing typically involves running through every possible input to verify
that it results in the right outputs using the software as an end-user
would. We have decided to perform
Equivalence Partitioning and Boundary Value Analysis testing on our
application.
Equivalence Partitioning
In
considering the inputs for our equivalence testing, the following types will be
used:
1.
Legal input values – Test values within boundaries of the specification
equivalence classes. This shall be input
data the program expects and is programmed to transform into usable values.
2.
Illegal input values – Test equivalence classes outside the boundaries of the
specification. This shall be input data
the program may be presented, but that will not produce any meaningful output.
The
equivalence partitioning technique is a test case selection technique in which
the test designer examines the input space defined for the unit under test and
seeks to find sets of input that are, or should be, processed identically. The
following table represents our equivalence classes, both valid and invalid.
There
are two primary modules that will need to be integrated: the Graphic User
Interface module and the Tree Repository module (back-end). The two components, once integrated, will
form the complete Binary Search Tree Application. The following describes these modules as well
as the steps that will need to be taken to achieve complete integration. We will be employing an incremental testing
strategy to complete the integration.
System
Testing
The
goals of system testing are to detect faults that can only be exposed by
testing the entire integrated system or some major part of it. Generally,
system testing is mainly concerned with areas such as performance, security,
validation, load/stress, and configuration sensitivity. But in our case well
focus only on function validation and performance. And in both cases we will
use the black-box method of testing.