Testing
is a process of executing a program with the intent of finding an error.
Testing is a crucial element of software quality assurance and presents
ultimate review of specification, design and coding.
System Testing is an important phase. Testing
represents an interesting anomaly for the software. Thus a series of testing are performed for
the proposed system before the system is ready for user acceptance testing.
A good test case is one that has a high probability
of finding an as undiscovered error. A successful test is one that uncovers an
as undiscovered error.
5.1
Testing Objectives:
·
Testing is a process of executing a
program with the intent of finding an error
·
A good test case is one that has a
probability of finding an as yet undiscovered error
·
A successful test is one that uncovers
an undiscovered error
5.2
Testing Principles:
·
All
tests should be traceable to end user requirements
·
Tests
should be planned long before testing begins
·
Testing
should begin on a small scale and progress towards testing in large
·
Exhaustive
testing is not possible
· To be most effective testing should be
conducted by a independent third party
The
primary objective for test case design is to derive a set of tests that has the
highest livelihood for uncovering defects in software. To accomplish this
objective two different categories of test case design techniques are used.
They are
· White box testing.
· Black box testing.
White-box
testing:
White box testing focus on the program control
structure. Test cases are derived to ensure that all statements in the program
have been executed at least once during testing and that all logical conditions
have been executed.
Block-box
testing:
Black box testing is designed to
validate functional requirements without regard to the internal workings of a
program. Black box testing mainly focuses on the information domain of the
software, deriving test cases by partitioning input and output in a manner that
provides through test coverage. Incorrect and missing functions, interface
errors, errors in data structures, error in functional logic are the errors
falling in this category.
Testing
strategies:
A strategy for software testing must accommodate
low-level tests that are necessary to verify that all small source code segment
has been correctly implemented as well as high-level tests that validate major
system functions against customer requirements.
5.3 Testing fundamentals:
Testing
is a process of executing program with the intent of finding error. A good test
case is one that has high probability of finding an undiscovered error. If
testing is conducted successfully it uncovers the errors in the software.
Testing cannot show the absence of defects, it can only show that software
defects present.
5.4
Testing Information flow:
Information
flow for testing flows the pattern. Two class of input provided to test the
process. The software configuration includes a software requirements
specification, a design specification and source code. Test configuration
includes test plan and test cases and test tools. Tests are conducted and all
the results are evaluated. That is test results are compared with expected
results.
Unit testing:
Unit
testing is essential for the verification of the code produced during the
coding phase and hence the goal is to test the internal logic of the
modules. Using the detailed design
description as a guide, important paths are tested to uncover errors with in
the boundary of the modules.
Integration testing:
Integration testing focuses on unit
tested modules and build the program structure that is dictated by the design
phase.
Acceptance Testing:
This testing is done to verify the
readiness of the system for the implementation. Acceptance testing begins when
the system is complete. Its purpose is to provide the end user with the
confidence that the system is ready for use. It involves planning and execution
of functional tests, performance tests and stress tests in order to demonstrate
that the implemented system satisfies its requirements.
Tools
to special importance during acceptance testing include:
Test
coverage Analyzer – records the control paths followed
for each test case.
Timing
Analyzer – also called a profiler, reports the time spent in
various regions of the code are areas to concentrate on to improve system
performance.
Coding
standards – static analyzers and standard checkers are used
to inspect code for deviations from standards and guidelines.
5.5 Test Cases:
Test
cases are derived to ensure that all statements in the program have been
executed at least once during testing and that all logical conditions have been
executed.
Using
White-Box testing methods, the software engineer can drive test cases that
· Guarantee that logical decisions on their
true and false sides.
·
Exercise all logical decisions on their
true and false sides.
·
Execute all loops at their boundaries
and within their operational bounds.
·
Exercise internal data structure to
assure their validity.
The test case specification for system testing
has to be submitted for review before system testing commences
Hi, If anyone is interested to learn software testing for free can check ArtOfTesting tutorial series.
ReplyDelete