White Box Testing
Is a verification technique software engineers can use to examine if their code works as expected.
There are six basic types of testing: unit, integration, function/system, acceptance, regression, and beta. White-box testing is used for three of these six types:
Unit testing: Unit testing is important for ensuring the code is solid before it is integrated with other code.
Integration testing: Test cases are written which explicitly examine the interfaces between the various units. These test cases can be black box test cases, whereby the tester understands that a test case requires multiple program units to interact. Alternatively, white-box test cases are written which explicitly exercise the interfaces that are known to the tester.
Regression testing: As with integration testing, regression testing can be done via black-box test cases, white-box test cases, or a combination of the two. White-box unit and integration test cases can be saved and rerun as part of regression testing.
Black Box Testing
Is a software testing technique in which functionality of the software is tested without looking at the internal code structure. Also known as (Behavioral Testing).
This method is named so because the software program, in the eyes of the tester, is like a black box; inside which one cannot see.
This method attempts to find errors in the following categories:
Incorrect or missing functions
Errors in data structures or external database access
Behavior or performance errors
Initialization and termination errors
It can be done on the basis of the software requirements and specifications. Applying different inputs and comparing the output with the expected result.
Black Box Testing Techniques:
Equivalence Partitioning- Here we consider which cases are valid/invalid into a feature.
Boundary Value Analysis- Here we consider the primary case of each partitioning.
Decision Table Testing- Different conditions for a feature. With help of a table with rules(test cases) and actions(inputs).
Failure (“Dirty”) Test Cases- Evil evil evil :)
Is preliminary testing to reveal simple failures severe enough to reject a prospective software release. A subset of test cases that cover the most important functionality of a component or system is selected and run, to ascertain if crucial functions of a program correctly work Important here: The Functionality
When? Before a sprint release