A Comparative Study of White Box, Black Box and Grey Box Testing Techniques

—Software testing is the process to uncover requirement, design and coding errors in the program. It is used to identify the correctness, completeness, security and quality of software products against a specification. Software testing is the process used to measure the quality of developed computer software. It exhibits all mistakes, errors and flaws in the developed software. There are many approaches to software testing, but effective testing of complex product is essentially a process of investigation, not merely a matter of creating and following route procedure. It is not possible to find out all the errors in the program. This fundamental problem in testing thus throws an open question, as to what would be the strategy we should adopt for testing. In our paper, we have described and compared the three most prevalent and commonly used software testing techniques for detecting errors, they are: white box testing, black box testing and grey box testing.


INTRODUCTION
Software testing identifies defects, flaws or errors in the application code that must be fixed.We can also define software testing as a process of accessing the functionality and correctness of a software through analysis.The main purpose of testing can be quality assurance, reliability estimation, validation and verification.Software testing is a fundamental component of software quality assurance and represents a review of specification, design and coding.The main objective of software testing is to affirm the quality of software system by systematically testing the software in carefully controlled circumstances, another objective is to identify the completeness and correctness of the software, and finally it uncovers undiscovered errors.[1] [2] The three most important techniques that are used for finding errors are: [1] 1) White Box Testing Technique: It is the detailed investigation of internal logic and structure of the code.In white box testing it is necessary for a tester to have full knowledge of source code.
2) Black Box Testing Technique: It is a technique of testing without having any knowledge of the internal working of the application.It only examines the fundamental aspects of the system and has no or little relevance with the internal logical structure of the system.
3) Grey Box Testing Technique: White box + Black box = Grey box, it is a technique to test the application with limited knowledge of the internal working of an application and also has the knowledge of fundamental aspects of the system.White box testing is a test case design method that uses the control structure of the procedural design to derive test cases.White box testing can uncover implementation errors such as poor key management by analyzing internal workings and structure of a piece of software.White box testing is applicable at integration, unit and system levels of the software testing process.In white box testing the tester needs to have a look inside the source code and find out which unit of code is behaving inappropriately.[3] Some of the advantages and disadvantages of white box testing technique are listed below: [3]   2) Branch Testing: Branch testing has the objective to test every option (true or false) on every control statement which also includes compound decision.

II. WHITE BOX TESTING TECHNIQUE
3) Basis Path Testing: Basis path testing allows the test case designer to produce a logical complexity measure of procedural design and then uses this measure as an approach for outlining a basic set of execution paths.
4) Data Flow Testing: In this type of testing the control flow graph is annoted with the information about how the program variables are define and used.
5) Loop Testing: It exclusively focuses on the validity of loop construct.Black box testing treats the software as a "Black Box"without any knowledge of internal working and it only examines the fundamental aspects of the system.While performing black box test, a tester must know the system architecture and will not have access to the source code.[ 3) Fuzzing: Fuzz testing is used for finding implementation bugs, using malformed/semi-malformed data injection in an automated or semi-automated session.

Processing Unit
4) Cause-Effect Graph: It is a testing technique, in which testing begins by creating a graph and establishing the relation between the effect and its causes.Identity, negation, logic OR Analyse Fundamental aspects only www.ijacsa.thesai.organd logic AND are the four basic symbols which expresses the interdependency between cause and effect.
5) Orthogonal Array Testing: OAT can be applied to problems in which the input domain is relatively small, but too large to accommodate exhaustive testing.
6) All Pair Testing: In all pair testing technique, test cases are designs to execute all possible discrete combinations of each pair of input parameters.Its main objective is to have a set of test cases that covers all the pairs.7) State Transition Testing: This type of testing is useful for testing state machine and also for navigation of graphical user interface.

IV. GREY BOX TESTING TECHNIQUE
Grey box testing technique will increase the testing coverage by allowing us to focus on all the layers of any complex system through the combination of all existing white box and black box testing.

Input Output
Figure 2) Matrix Testing: In matrix testing the status report of the project is stated.
3) Regression Testing: If new changes are made in software, regression testing implies running of test cases.
4) Pattern Testing: Pattern testing verifies the good application for its architecture and design.

V. FUTURE OF SOFTWARE TESTING
With the changing trends in the software industry, software testing too changes.The existing new technologies like Service Oriented Architecture (SOA), wireless technologies, mobile services etc. has opened new path to testing.Some of the changes which we will see in the industry over the next few years are listed below: [8]  Testers will provide light weight models that developers can run against their codes. Early review and modeling will exposes many ambiguous bugs. As in the future developer's code is full of testability hooks, errors will be more detectable. Static analyser (detection tools) will come in main stream. Useful matrices such as spec coverage, model coverage and code coverage drives the projects. Combinatorial tools will allow testers to prioritize their testing. The testers will provide visible and value added services throughout the software development process. Tester can develop test harnesses stubs and drivers written in and interacting with a variety of programmatic languages.

Partially analyse internal working +
Fundamental aspects www.ijacsa.thesai.org Tomorrows' tester will be professionally more educated, examine and accredited professional.In the near future we will see a shift towards new techniques and testing transformed business operations, the way people interact with the systems and information it provides, and therefore mitigating the risk and increasing the benefits of business change.

VI. CONCLUSION
We can define software testing as an activity aimed at evaluating an attribute, or capability of a program to determine, that it meets its required specification.Software testing can provide an independent view of the software to allow the business to appreciate and understand the risk of software implementation.

Figure 1 .
Figure 1.Represent white box testing

Figure 2 .
Figure 2. Represent different forms of white box testing techniques 1) Control Flow Testing: It is a structural testing strategy that uses the program control flow as a model control flow and favours more but simpler paths over fewer but complicated path.2) Branch Testing: Branch testing has the objective to test every option (true or false) on every control statement which also includes compound decision.3)Basis Path Testing: Basis path testing allows the test case designer to produce a logical complexity measure of procedural design and then uses this measure as an approach for outlining a basic set of execution paths.4)Data Flow Testing: In this type of testing the control flow graph is annoted with the information about how the program variables are define and used.5)Loop Testing: It exclusively focuses on the validity of loop construct.

Figure 3 .
Figure 3. Represent black box testing It can reduce the number of test cases, as it divides the input data of a software unit into partition of data from which test cases can be derived.2) Boundary Value Analysis: It focuses more on testing at boundaries, or where the extreme boundary values are chosen.It includes minimum, maximum, just inside/outside boundaries, error values and typical values.
Test coverage is limited as the access to source code is not available. It is difficult to associate defect identification in distributed applications. Many program paths remain untested. If the software designer has already run a test case, the tests can be redundant.The other name of grey box testing is translucent testing.