Testing new
Testing new
TESTING PRINCIPLES
Software testing is an extremely creative and intellectually challenging
task. When testing follows the principles given below, the creative
element of test design and execution rivals any of the preceding software
development steps.
1. Testing must be done by an independent party.
Testing should not be performed by the person or team that developed the
Software since they tend to defend the correctness of the program.
2. Assign best personnel to the task.
Because testing requires high creativity and responsibility only the best
personnel must be assigned to design, implement, and analyze test cases,
test data and test results.
3. Testing should not be planned under the tacit assumption that no errors
will be found.
4. Test for invalid and unexpected input conditions as well as valid
conditions.
The program should generate correct messages when an invalid test is
encountered and should generate correct results when the test is valid.
5. The probability of the existence of more errors in a module or group of
modules is directly proportional to the number of errors already found.
6. Testing is the process of executing software with the intent of finding
errors.
7. Keep software static during test.
The program must not be modified during the implementation of the set of
Designed test cases.
8. Document test cases and test results.
9. Provide expected test results if possible.
A necessary part of test documentation is the specification of expected
results, even if providing such results is impractical.
Functional Testing
This is also called as Black box testing. It takes an external perspective of
the test object to derive test cases. These tests can be functional or non-
functional, though usually functional. The test designer selects valid and
invalid input 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.
Functional testing covers the following types of testing:
—* Boundary value analysis
—* Equivalence class testing
—* Decision table based testing
— Cause effect graphing technique
RELIABILITY
Most important and dynamic characteristic of software is its reliability.
Software Reliability is the probability of failure-free software operation
for a specified period of time in a specified environment. Software
Reliability is also an important factor affecting system reliability. It differs
from hardware reliability in that it reflects the design perfection, rather
than manufacturing perfection. The high complexity of software is the
major contributing factor of Software Reliability problems. Software
Reliability is not a function of time - although researchers have come up
with models relating the two. The modeling technique for Software
Reliability is reaching its prosperity, but before using the technique, we
must carefully select the appropriate model that can best suit our case.
Measurement in software is still in its infancy. No good quantitative
methods have been developed to represent Software Reliability without
excessive limitations. Various approaches can be used to improve the
reliability of software, however, it is hard to balance development time
and budget with software reliability.
Integration Testing
By making unit testing for each module as explained above the process of
integrated testing as a whole becomes simpler. This is because by
correcting mistakes or bugs in each module the integration of all units as a
system and testing process becomes easier. So one might think why the
integration is testing needed. The answer is simple. It is needed because
unit testing as explained test and assures correctness of only each module.
But it does not cover the aspects of how the system would behave or what
error would be reported when modules are integrated. This is done in the
level of integration testing.
System Testing
System testing of software or hardware is testing conducted on a complete,
Integrated system to evaluate the system’s compliance with its specified
requirements System testing falls within the scope of black box testing,
and as such, should require no knowledge of the inner design of the code
or logic.
As a rule, system testing takes, as its input, all of the ‘integrated” software
components that have successfully passed integration testing and also the
software system itself integrated with any applicable hardware system(s).
The purpose of integration testing is to detect any inconsistencies between
the software units that are integrated together (called assemblages) or
between any of the assemblages and the hardware. System testing is a
more limiting type of testing; it seeks to detect defects both within the
‘inter-assemblages” and also within the system as a whole.
System testing is performed on the entire system in the context of a
Functional Requirement Specification(s) (FRS) and/or a System
Requirement Specification (SRS). System testing is an investigatory
testing phase. Where the focus is to have almost a destructive attitude and
test not only the design, but also the behavior and even the believed
expectations of the customer. It is also intended to test up to and some
suggest beyond the bounds defined in the software/hardware requirements
specification(s) - although how this is meaningfully possible is undefined,
Regression Testing
We all know that development life cycle is subjected to continuous
changes as per the requirements of user. Suppose if there is a change in the
existing system which has already been tested it is essential that one has to
make sure that this new changes made to the existing system do not affect
the existing functionality. For ensuring this regression testing is done.
Smoke Test
This is also called as sanity testing. This is mainly used to identify
environmental related problems and is performed mostly by test manager.
For any application, it is always necessary to have the environment first
checked for smooth running of the application. So in this testing process
the application is run in the environment technically called as dry run and
checked to find that the application could run without any problem or
abend in between.
Alpha Testing
The above different testing process described takes place in different
stages of development as per the requirement and needs. But a final testing
is always made after a full finished product that is before it released to end
users and this is called as alpha testing. The alpha testing involves both the
white box testing and black box testing thus making alpha testing to be
carried out in two phases.
Beta Testing
This process of testing is carried out to have more validity of the software
Developed. This takes place after the alpha testing. After the alpha phase
also the generally the release is not made fully to all end users. The
product is released to a set of people and feedback is got from them to
ensure the validity of the product. So here normally the testing is being
done by group of end users and therefore this beta testing phase covers
black box testing or functionality testing only.