5.4
Software testing
5.4.1Introduction
The testing phase is the
stage that follows the implementation of the program with the aim to verify
whether it responds to the existing problem or it does what it has to do.
It also involves the examination of the functionality of
program in general to ensure that the software responds to the needs of the
users.
This will verify the performance of the program in matters of
security and portability. The bottom line is that the software should be
delivered, not only working correctly but also satisfying other attributes such
as usability and maintainability. The following test methods were used to try
to uncover all possible errors and verify that the system fully satisfies its
requirements. It is worth mentioning that we have tried to follow the best
practices suggested by all software engineering researchers.
5.4.2 Unit testing
We used this method of testing in purpose of taking smallest
piece of testable in our application, isolate it from the remainder of the code
and determine whether it behaves exactly as we expect.
Each unit is tested separately before integrating them into
modules to test the interfaces between modules.
5.4.3 Integration testing
Integration testing is a logical extension of unit testing. In
its simplest form, two units that have already been tested are combined into a
component and the interface between them is tested. A component, in this sense,
refers to an integrated aggregate of more than one unit. In a realistic
scenario, many units are combined into components, which are in turn aggregated
into even larger parts of the program. The idea is to test combinations of
pieces and eventually expand the process to test your modules with those of the
groups.
Eventually all the modules making up a process are tested
together. Beyond that, if the program is composed of more than one process,
they should be tested in pairs rather than all at once.
5.4.4 Validation testing
Test validation is a procedure that demonstrates that a test
is job-related and correlates to on the job-performance. There are
three main types of validation:
Content validation is a procedure where the
content of the job in question is analyzed, matched and compared, (function by
function) to the abilities measured by the test. This shows that the test is
related to the job.
Concurrent validation is a procedure which
tests individuals currently in the position, and the statistically compares the
test results, after a certain time, to on-the job performance.
Predictive validation is a procedure which
tests individuals when they are hired, and then statistically compares the test
results, after a certain time, to on-the job performance.
5.4.5
Black Box testing
Black testing takes an external perspective of the test object
to derive test cases. These tests can be functional or non-functional, through
usually functional. The test designer selects valid and invalid inputs and
determines the correct output. There is no knowledge of the test object's
internal structure.
This method of test design is applicable to all levels of
software testing: unit, integration, functional testing, system and acceptance.
The higher the level, and hence the bigger and more complex the box, the more
one is forced to use black box testing to simplify. While this method can
uncover unimplemented parts of the specification, one cannot be sure that all
existent paths are tested.
|