Software Testing and Its Types
Software Testing and Its Types
1. Unit testing is a method of testing that verifies the individual units of source code are working
properly. A unit is the smallest testable part of an application. In procedural programming a unit may
be an individual program, function, procedure, etc., while in object-oriented programming, the
smallest unit is a method, which may belong to a base/super class, abstract class or derived/child class.
The various tests are performed as a part of unit testing are :-
1. Module interface:- These are tested to ensure that information flows in a proper manner into
and out of the unit under test. Note that test of data flow is required before any other test is
initiated.
2. Local data structure:- These are tested to ensure that the temporarily stored data maintains its
integrity while an algorithm is being executed.
3. Boundary conditions:- These are tested to ensure that the module operates as desired within the
specified boundaries.
4. Independent paths:- These are tested to ensure that all statements in a module have been
executed at least once. Note that in this testing, the entire control structure should be
excercised.
5. Error-handling paths:- After successful completion of the various tests, error-handling paths are
tested.
2. Integration testing (sometimes called Integration and Testing, abbreviated I&T) is the phase of
software testing in which individual software modules are combined and tested as a group. It follows
unit testing and precedes system testing. Integration testing takes as its input modules that have been
unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those
aggregates, and delivers as its output the integrated system ready for system testing.
4. Performance Testing
Measure system responsiveness, stability, and speed under expected workloads.
Example: Monitor response time, throughput, and resource usage during peak hours.
4. White box testing (a.k.a. clear box testing, glass box testing or structural testing) uses an internal
perspective of the system to design test cases based on internal structure. It requires programming skills
to identify all paths through the software. The tester chooses test case inputs to exercise paths through
the code and determines the appropriate outputs.
5. Black box testing 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.
8. Beta testing comes after alpha testing. Versions of the software, known as beta versions, are released
to a limited audience outside of the programming team. The software is released to groups of people so
that further testing can ensure the product has few faults or bugs. Sometimes, beta versions are made
available to the open public to increase the feedback field to a maximal number of future users.
9. Acceptance testing: The final testing stages by users of a new or changed information system. If
successful, it signals the approval to implement the system live. Cosmetic and other small changes may
still be required as a result of the test, but the system is considered stable and processing data according
to requirements.
10. Regression testing: It is any type of software testing which seeks to uncover software
regressions. Such regressions occur whenever software functionality that was previously working
correctly stops working as intended. Typically regressions occur as an unintended consequence of
program changes. Common methods of regression testing include re-running previously run tests and
checking whether previously fixed faults have re-emerged. Regression testing can be used not only for
testing the correctness of a program, but it is also often used to track the quality of its output. For
instance in the design of a compiler, regression testing should track the code size, simulation time and
compilation time of the test suite cases.