Testing Levels Testing itself may be clear at several levels of Software Development Life Cycle. The testing process runs equivalent to software development. Testing distinctly 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 updating 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.
While Being Tested
The following documents may be required while testing is started and is being done:
- Test Case document: This document contains list of tests required to be conducted. It includes Unit test plan, Integration test plan, System test plan and Acceptance test plan.
- Test description: This document is a detailed description of all test cases and procedures to execute them.
- Test case report: This document contains test case report as a result of the test.
- Test logs: This document contains test logs for every test case report.
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.
Testing vs. Quality Control, Quality Assurance and Audit
Software testing is different from software quality assurance, software quality control and software auditing.
- Software quality assurance: Software quality assurance are software development process monitoring means, by which it is assured that all the measures are taken as per the standards of organization. This monitoring is done to make sure that proper software development methods were followed.
- Software quality control: Software quality control is a system to maintain the quality of software product. It may include functional and non-functional aspects of software product, which enhance the goodwill of the organization. This system makes sure that the customer is receiving quality product for their requirement and the product certified as ‘fit for use’.
- Software audit : Software audit is a review of procedure used by the organization to develop the software. A team of auditors, independent of development team examines the software process, procedure, requirements and other aspects of SDLC. The purpose of software audit is to check that software and its development process, both conform standards, rules and regulations.