Software Testing Books
Software Testing Books
http://www.tutorialspoint.com/software_engineering/software_testing_overview.htm
Copyright tutorialspoint.com
Software Testing is evaluation of the software against requirements gathered from users and
system specifications. Testing is conducted at the phase level in software development life cycle or
at module level in program code. Software testing comprises of Validation and Verification.
Software Validation
Validation is process of examining whether or not the software satisfies the user requirements. It is
carried out at the end of the SDLC. If the software matches requirements for which it was made, it
is validated.
Validation ensures the product under development is as per the user requirements.
Validation answers the question "Are we developing the product which attempts all that
user needs from this software ?".
Validation emphasizes on user requirements.
Software Verification
Verification is the process of confirming if the software is meeting the business requirements, and
is developed adhering to the proper specifications and methodologies.
Verification ensures the product being developed is according to design specifications.
Verification answers the question "Are we developing this product by firmly following all
design specifications ?"
Verifications concentrates on the design and system specifications.
Target of the test are Errors - These are actual coding mistakes made by developers. In addition, there is a
difference in output of software and desired output, is considered as an error.
Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an error
which can cause system to fail.
Failure - failure is said to be the inability of the system to perform the desired task. Failure
occurs when fault exists in the system.
Testing Approaches
Black-box testing
It is carried out to test functionality of the program. It is also called Behavioral testing. The tester
in this case, has a set of input values and respective desired results. On providing input, if the
output matches with the desired results, the program is tested ok, and problematic otherwise.
In this testing method, the design and structure of the code are not known to the tester, and testing
engineers and end users conduct this test on the software.
Black-box testing techniques:
Equivalence class - The input is divided into similar classes. If one element of a class passes
the test, it is assumed that all the class is passed.
Boundary values - The input is divided into higher and lower end values. If these values
pass the test, it is assumed that all values in between may pass too.
Cause-effect graphing - In both previous methods, only one input value at a time is tested.
Cause (input) Effect (output) is a testing technique where combinations of input values are
tested in a systematic way.
Pair-wise Testing - The behavior of software depends on multiple parameters. In pairwise
testing, the multiple parameters are tested pair-wise for their different values.
State-based testing - The system changes state on provision of input. These systems are
tested based on their states and input.
White-box testing
It is conducted to test program and its implementation, in order to improve code efficiency or
structure. It is also known as Structural testing.
In this testing method, the design and structure of the code are known to the tester. Programmers
Testing Levels
Testing itself may be defined at various levels of SDLC. The testing process runs parallel to
software development. Before jumping on the next stage, a stage is tested, validated and verified.
Testing separately is done just to make sure that there are no hidden bugs or issues left in the
software. Software is tested on various levels -
Unit Testing
While coding, the programmer performs some tests on that unit of program to know if it is error
free. Testing is performed under white-box testing approach. Unit testing helps developers decide
that individual units of the program are working as per requirement and are error free.
Integration Testing
Even if the units of software are working fine individually, there is a need to find out if the units if
integrated together would also work without errors. For example, argument passing and data
updation etc.
System Testing
The software is compiled as product and then it is tested as a whole. This can be accomplished
using one or more of the following tests:
Functionality testing - Tests all functionalities of the software against the requirement.
Performance testing - This test proves how efficient the software is. It tests the
effectiveness and average time taken by the software to do desired task. Performance
testing is done by means of load testing and stress testing where the software is put under
high user and data load under various environment conditions.
Security & Portability - These tests are done when the software is meant to work on
various platforms and accessed by number of persons.
Acceptance Testing
When the software is ready to hand over to the customer it has to go through last phase of testing
where it is tested for user-interaction and response. This is important because even if the software
matches all user requirements and if user does not like the way it appears or works, it may be
rejected.
Alpha testing - The team of developer themselves perform alpha testing by using the
system as if it is being used in work environment. They try to find out how user would react to
some action in software and how the system should respond to inputs.
Beta testing - After the software is tested internally, it is handed over to the users to use it
under their production environment only for testing purpose. This is not as yet the delivered
product. Developers expect that users at this stage will bring minute problems, which were
skipped to attend.
Regression Testing
Whenever a software product is updated with new code, feature or functionality, it is tested
thoroughly to detect if there is any negative impact of the added code. This is known as regression
testing.
Testing Documentation
Testing documents are prepared at different stages -
Before Testing
Testing starts with test cases generation. Following documents are needed for reference
SRS document - Functional Requirements document
Test Policy document - This describes how far testing should take place before releasing
the product.
Test Strategy document - This mentions detail aspects of test team, responsibility matrix
and rights/responsibility of test manager and test engineer.
Traceability Matrix document - This is SDLC document, which is related to requirement
gathering process. As new requirements come, they are added to this matrix. These matrices
help testers know the source of requirement. They can be traced forward and backward.
After Testing
The following documents may be generated after testing :
Test summary - This test summary is collective analysis of all test reports and logs. It
summarizes and concludes if the software is ready to be launched. The software is released
under version control system if it is ready to launch.