Types and Levels of Testing in Programming
Testing is an important step in software development life cycle. The process of testing takes place at various stages of development in programming. This is a vital step in development life cycle because the process of testing helps to identify the mistakes and sends the program for correction.
This process gets repeated at various stages until the final unit or program is found to be complete thus giving a total quality to the development process. The various levels and types of testing found in a software development life cycle are:
White Box Testing
For doing this testing process the person have to access to the source code of the product to be tested. So it is essential that the person doing this white box testing have some knowledge of the program being tested. Though not necessary it would be more worth if the programmer itself does this white box testing process since this testing process requires the handling of source code.
Black Box Testing
This is otherwise called as functional testing. In contrary to white box testing here the person who is doing the black box testing need not have the programming knowledge. This is because the person doing the black box testing would access the output or outcomes as the end user would access and would perform thorough functionality testing to check whether the developed module or product behaves in functionality in the way it has to be.
Unit Testing
This testing is done for each module of the program to ensure the validity of each module. This type of testing is done usually by developers by writing test cases for each scenarios of the module and writing the results occurring in each step for each module.
Regression testing
We all know that development life cycle is subjected to continuous changes as per the requirements of user. Suppose if there is a change in the existing system which has already been tested it is essential that one has to make sure that this new changes made to the existing system do not affect the existing functionality. For ensuring this regression testing is done.
Integration testing
By making unit testing for each module as explained above the process of integrated testing as a whole becomes simpler. This is because by correcting mistakes or bugs in each module the integration of all units as a system and testing process becomes easier. So one might think why the integration is testing needed. The answer is simple. It is needed because unit testing as explained test and assures correctness of only each module. But it does not cover the aspects of how the system would behave or what error would be reported when modules are integrated. This is done in the level of integration testing.
Smoke Test
This is also called as sanity testing. This is mainly used to identify environmental related problems and is performed mostly by test manager. For any application it is always necessary to have the environment first checked for smooth running of the application. So in this testing process the application is run in the environment technically called as dry run and checked to find that the application could run without any problem or abend in between.
Alpha Testing
The above different testing process described takes place in different stages of development as per the requirement and needs. But a final testing is always made after a full finished product that is before it released to end users and this is called as alpha testing. The alpha testing involves both the white box testing and black box testing thus making alpha testing to be carried out in two phases.
Beta Testing
This process of testing is carried out to have more validity of the software developed. This takes place after the alpha testing. After the alpha phase also the generally the release is not made fully to all end users. The product is released to a set of people and feedback is got from them to ensure the validity of the product. So here normally the testing is being done by group of end users and therefore this beta testing phase covers black box testing or functionality testing only.
Having seen about testing levels and types let us now see how the testing process takes place in general. After getting an idea of what all to be tested by communicating with developers and others in the design phase of the software development life cycle the testing stage carries on parallel. Test plan is made ready during the planning stage of testing. This test plan has details like environment of setting like software, hardware, operating system used, the scope and limitation of testing, test type and so on. In the next phase the test case is prepared which has details of each step for module to be checked, input which can be used for each action are described and recorded for testing. It also has details about what is the expected outcome or expected result of each action .The next phase is the actual testing phase. In this phase the testers make testing based on the test plan and test case made ready and record the output or result resulting from each module. Thus the actual output is recorded .Then a report is made to find the error or defect between expected outcome and actual output in each module in each step. This is sent for rework for developers and testing cycle again continues as above.
It does not mean that the system released is bug free or error free hundred percent. This is because no real system could have null percentage error. But an important point to bear in mind is that a system developed is a quality system only if the system could run for a period of time after its release without error and after this time period only minimal errors are reported. For achieving this testing phase plays an essential role in software development life cycle.