- Testing Strategies
- A Strategic Approach To Software Testing
- Test Strategies for Conventional Software
- Black-Box and White-Box Testing
- Validation Testing
- System Testing
- The Art of Debugging
- Product Metrics
- Software Quality
- Metrics for Analysis Model
- Metrics for Design Model
- Metrics for Source Code
- Metrics for Testing
- Metrics for Maintenance
Software Testing
Software Testing is a method of executing a software with an intention of detecting bugs. It is one of the essential steps in software development life cycle. Hence, it is the responsibility of the programmer to build an error free software.
Software testing strategy
Software testing strategy provides the guidelines that outline the following,
What steps to follow in order to undergo a test?
When to plan and workout the steps?
How much time, input and resources must be utilized?
Hence, software testing strategy must include a proper planning for the test, a design for the test case, test execution and resultant data collection and evaluation. It must be able to promote a customized testing approach and also encourage planning management tracking along with project progress.
Characteristics of software testing
Simplicity
In general, the code written should exert three phases of simplicity i.e., code, structural and functional simplicity. Hence, it is a known fact that “If there is less requirement for testing, then testing takes less time”.
Understandability
The easy the software is to understand, the efficient is the testing. Proper documentation about the software can help in clear understanding. However, documents must be accurate, specific, easily accessible and well organized.
Stability
A software is said to be stable if,
Changes made to it are in control
It can still be tested using the existing test cases.
Observability
It is the ability of the testing group/team to make out whether the developed software generates correct output for certain inputs.
Decomposability
Decomposing i.e., breaking the software into multiple and independent pieces called modules makes testing much easier.
Need of software testing
Software testing is performed in order to identify and describe errors generated by lack of human skills or by bugs in the system. Apart from this, errors which are not found during reviews can be easily identified at the time of testing. Moreover the testing is carried out so that the customers after receiving the product should not encounter any faults. Since testing is performed at initial levels, it minimizes the rework + time.
Objectives of software testing
To make sure that the generated solution acquires the business and user requirements.
To decide user acceptability and identify errors which can be potential bugs or defects.
To make sure that system is ready to use.
To obtain the confidence showing that the product will work after testing.
To estimate the system capabilities showing that the system performs as desired.
To check the necessary documents.
Principles of software testing
Testing process should display the presence of defects.
It shows that complete testing is not possible.
It is a difficult task
It must be initiated as soon as possible.
It should be performed differently in different context.
It is risk-based because implementation of a particular feature is at its own risks at project level, development level.
It should follow a specific strategy and plan.
Testing team should have liberty and freedom.
Quality software testing should possess understanding of software product and domain related applications.
Testing team should regularly review and revise the test cases in order to overcome the defects where in software product becomes immune.
Guidelines of software testing
There are certain rules and guidelines that are followed during software testing. These guidelines act as a standard to test a software and make testing more effective and efficient. The commonly used software testing guidelines are listed below:
Define the expected output
When programs are executed during testing, they may or may not produce the expected outputs due to different types of errors present in the software. To avoid this, it is necessary to define the expected output before software testing begins. Without knowledge of the expected results, testers may fail to detect an erroneous output.
Inspect output of each test completely
Software testing should be performed once the software is complete in order to check its performance and functionality, as well as to find the errors that occur in various phases of software development.
Include test cases for invalid and unexpected conditions
Generally, a software produces correct outputs when it is tested using accurate inputs. However, if unexpected input is given to the software, it may produce erroneous outputs. Hence, test cases that detect errors even when unexpected and incorrect inputs are specified should be developed.
Test the modified program to check its expected performance
Sometimes, when certain modifications are made in a software (like adding of new functions) it is possible that the software produces unexpected outputs. Hence, it should be tested to verify that it performs in the expected manner even after modifications.