Software Testing & Types of Software Testing
It is a process of finding or identifying defects in software is called software testing. It is verifying the functionality(behaviour) of the application(s/w) against requirements specification. It is the execution of the software with the intention of finding defects. It is checking whether the software works according to the requirements.
Types of Software Testing
There are 3 types of softwaretesting, namely,
1) White box testing — also called unit testing or structural testing or glass box testing or transparent
testing or open-box testing
2) Grey box testing
3) Black box testing — also called as functional testing or behavioral testing
- White box Testing
Entire WBT is done by developers. It is the testing of each and every line of code in the program. Developers do WBT, sends the s/w to testing team. The testing team does black box testing and checks the s/w against requirements and finds any defects and sends it to the developer. The developers fixes the defect and does WBT and sends it to the testing team. Fixing defect means the defect is removed and the feature is working fine.
Test engineers should not be involved in fixing the bug because,
1) if they spend time in fixing the bug, they lose time to catch some more other defects in the s/w
2) fixing a defect might break a lot of other features. Thus, testers should always identify defects and developers should always be involved in fixing defects.
WBT consists of the following tests :
a) Path testing
Write flow graphs and test all the independent paths.
Writing flow graphs means — flow graphs means representing the flow of the program, how each program is interlinked with one another.
Test all independent paths — Consider a path from main( ) to function 7. Set the parameters and test if the program is correctly in that path. Similarly test all other paths and fix defects.
b) Condition testing
Test all the logical conditions for both true and false values i.e, we check for both “if” and “else” condition.
If( condition) — true
{
…….
…….
}
Else — false
{
}
…..
…..
The program should work correctly for both conditions i.e, if condition is true, then else should be false and vice-versa
c) Loop testing
Test the loops(for, while, do-while, etc) for all the cycles and also check for terminating condition if working properly and if the size of the condition is sufficient enough.
For ex, let us consider a program where in the developer has given about 1lakh loops.
{
}
While ( 1,00,000 ) …….
…….
We cannot test this manually for all 1lakh cycles. So we write a small program,
Test A {
……
…… }
Which checks for all 1lakh loops. This Test A is known as unit test. The test program is written in the same language as the source code program. Developers only write the test program.
2. BLACK BOX TESTING
It is verifying the functionality ( behavior ) against requirement specifications.
Types of Black Box Testing
1) FUNCTIONAL TESTING
Also called component testing. Testing each and every component thoroughly (rigorously) against requirement specifications is known as functional testing.
2) INTEGRATION TESTING
Testing the data flow or interface between two features is known as integration testing.
Take 2 features A & B. Send some data from A to B. Check if A is sending data and also check if B is receiving data.
There are two types of integration testing,
- Incremental Integration Testing
2. Non-Incremental Integration Testing
Incremental Integration Testing :
Take two modules. Check if data flow between the two is working fine. If it is, then add one more module and test again. Continue like this. Incrementally add the modules and test the data flow between the modules.
There are two ways,
a) Top-down Incremental Integration Testing b) Bottom — up Incremental Integration Testing
a) Top-down Integration Testing :
Incrementally add the modules and test the data flow between the modules. Make sure that the module that we are adding is child of previous one.
b) Bottom-up Integration Testing :
Testing starts from last child upto parent. Incrementally add the modules and test the data flow between modules. Make sure that the module you are adding is the parent of the previous one.
2. Non – incremental Integration Testing
We use this method when,
a) When data flow is very complex
b) When it is difficult to identify who is parent and who is child. It is also called Big – Bang method.
3) SYSTEM TESTING
It is end-to-end testing wherein testing environment is similar to the production environment. End — to — end testing.
Here, we navigate through all the features of the software and test if the end business / end feature works. We just test the end feature and don‟t check for data flow or do functional testing and all.
Difference between White Box Testing and Black Box testing
White Box Testing 2) Black Box Testing
a) 1) Done by developers
2) Done by test engineers
b) 1) Look into the source code and test the logic of the code
2) Verifying the functionality of the application against requirement specifications
c) 1) Should have knowledge of internal design of the code
2) No need to have knowledge of internal design of the code
d) 1) Should have knowledge of programming
2) No need to have knowledge of programming