Introduction to Software Testing
To test something is to evaluate the functionality of it against some criteria. The process of software application testing is an exercise with the purpose of checking whether or not a system meets both the user and system requirements that were set out in the earlier stages of the system development life-cycle. The process of software application testing involves running and analyzing a system in various ways in a bid to identifying bugs and errors and to check for requirements that might have been missed in the development stage.
There are 3 core testing methodologies available, each of which are suitable for different varieties of the testing types: Black box testing, white box testing and grey box testing.
Each of these 3 methods takes a different approach to how a system is tested and each is suitable for different cases. The above linked articles discuss these 3 core testing methodologies in detail. The remainder of this post compares and contrasts the 3 methods and evaluates the applicability of each.
Comparison – Black Box, White Box and Grey Box Testing
Feature | Black Box | White Box | Grey Box |
Does the methodology require access to applications code-base? | No | Yes | Some |
Is coding knowledge required by the software testers? | No | Yes | Some |
Is the testing carried out from the perspective of an end user? | Yes | No | Yes |
Does the methodology allow for the easy design of test cases? | Yes | No | Yes |
Generally, is the method an efficient approach? | Yes | No, relatively time consuming. | Somewhat time consuming |
Is the method an intrusive approach? | No | Yes | No |
Is it suitable for testing security features / penetration testing? | No | Yes | Yes |
Who is the testing carried out by? | Testing Team | Developers | Both Testers and Developers |
Is it suitable for algorithm testing? | No | Yes | No |
What is the primary focus of the methodology? | Application functionality | Internal logic | Mostly functionality, some logic |
What types of testing is the method most applicable to? | Acceptance testing, system testing | Unit testing, integration testing, penetration testing | Integration testing, penetration testing, system testing |