Wednesday, August 10, 2011

22 Basic Testing Methodologies



1.    Black box testing
This is done by testing the system without any knowledge of internal design or code. This typically will be carried by a functional expert than a technical expert. Tests are based on requirements and functionality.

2.    White box testing
This testing is based on knowledge of the internal logic of an application's code. Tests are based on coverage of code statements, branches, paths, and conditions.

3.    Unit Testing
Unit Testing is the first level of dynamic testing and is first the responsibility of the developers and then of the testers. Unit testing is performed after the expected test results are met or differences are explainable /acceptable.

4.    Parallel/Audit Testing
Testing where the user reconciles the output of the new system to the output of the current system to verify the new system performs the operations correctly.

5.    Functional Testing
Black-box type of testing geared to functional requirements of an application. Testers should perform this type of testing.

6.    Usability Testing
Testing for 'user-friendliness'. Clearly this is subjective and will depend on the targeted end user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.

7.    Incremental Integration Testing
Continuous testing of an application as new functionality is recommended. This may require various aspects of an application's functionality be independent enough to work separately before all parts of the program are completed, or that test drivers are developed as needed. This type of testing may be performed by programmers or by testers.

8.    Integration Testing
Upon completion of unit testing, integration testing, which is, black box testing, will begin. The purpose is to ensure distinct components of the application still work in accordance to customer requirements. Test sets will be developed with the express purpose of exercising the interfaces between the components. This activity is to be carried out by the Test Team. Integration test will be termed complete when actual results and expected results are either in line or differences are explainable/acceptable based on user/management input.


9.    System Testing
Upon completion of integration testing, the Test Team will begin system testing. During system testing, which is a black box test, the complete system is configured in a controlled environment to validate its accuracy and completeness in performing the functions as designed. The system test will simulate production in that it will occur in the "production-like" test environment and test all of the functions of the system that will be required in production. The Test Team will complete the system test.
Prior to the system test, the unit and integration test results will be reviewed by Software Quality Assurance (SQA) to ensure all problems have been resolved. It is important for higher level testing efforts to understand unresolved problems from the lower testing levels. System testing is deemed complete when actual results and expected results are either in line or differences are explainable/acceptable based on client input.

10.  End-to-End Testing
Similar to system testing, the 'macro' end of the test scale involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.

11.  Regression Testing
The objective of regression testing is to ensure software remains intact. A baseline set of data and scripts will be maintained and executed to verify changes introduced during the release have not "undone" any previous code. Expected results from the baseline are compared to results of the software being regression tested. All discrepancies will be highlighted and accounted for, before testing proceeds to the next level.

12.  Sanity Testing
Sanity testing will be performed whenever cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing. It will normally include a set of core tests of basic GUI functionality to demonstrate connectivity to the database, application servers, printers, etc.

13.  Performance Testing
Although performance testing is described as a part of system testing, it can be regarded as a distinct level of testing. Performance testing will verify the load, volume, and response times as defined by requirements.

14.  Load Testing
Testing an application under heavy loads, such as the testing of a web site under a range of loads to determine at what point the systems response time degrades or fails.



15.  Installation Testing
Testing full, partial, or upgrade install/uninstall processes. The installation test for a release will be conducted with the objective of demonstrating production readiness. This test is conducted after the application has been migrated to the client's site. It will encompass the inventory of configuration items (performed by the application's System Administration) and evaluation of data readiness, as well as dynamic tests focused on basic system functionality. When necessary, a sanity test will be performed following the installation testing.

16.  40Security/Penetration Testing
Testing how well the system protects against unauthorized internal or external access, willful damage, etc. This type of testing may require sophisticated testing techniques.

17.  Recovery/Error Testing
Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

18.  Compatibility Testing
Testing how well software performs in a particular hardware / software / operating system / network etc. environment.

19.  Comparison Testing
Testing that compares software weaknesses and strengths to competing products.

20.  Acceptance Testing
Acceptance testing, which is black box testing, will give the client the opportunity to verify the system functionality and usability prior to the system being moved to production. The acceptance test will be the responsibility of the client, however, it will be conducted with full support from the project team. The Test Team will work with the client to develop the acceptance criteria.

21.  Alpha Testing
Testing of an application, when development is nearing completion Minor design changes may still be made as a result of such testing. Alpha Testing is typically performed by end users or others, not by programmers or testers.

22.  Beta Testing
Testing when development and testing are essentially completed and final bugs and problems need to be found before the final release. Beta Testing is typically done by end users or others, not by programmers or testers.

Welcome to Software Testing is Key

Hi Folks,

I will be writing on this blog regularly on the Software Testing and How Software Testing is playing the important  role in the success of various Products.

Hope you all will get some brief idea from my blog.

Thanks,
Sagar Bhandare
Bangalore / Pune.