Software Testing
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
Tests can be conducted based on two
approaches –
- Functionality testing
- Implementation testing
When functionality is being tested
without taking the actual implementation in concern it is known as black-box
testing. The other side is known as white-box testing where not only
functionality is tested but the way it is implemented is also analyzed.
Exhaustive tests are the
best-desired method for a perfect testing. Every single possible value in the
range of the input and output values is tested. It is not possible to test each
and every value in real world scenario if the range of values is large.
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.
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 of the code
conduct this test on the code.
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.
ReplyDeleteIn software project management, software testing, and software engineering,
verification and validation (V&V) is the process of checking that a software system meets specifications and that it fulfills its intended purpose.
It may also be referred to as software quality control.
software validation