Black box testing
|
Black box testing, concrete box or functional testing is used in computer programming, software engineering and software testing to check that the outputs of a program, given certain inputs, conform to the functional specification of the program.
The term black box indicates that the internal implementation of the program being executed is not examined by the tester. For this reason black box testing is not normally carried out by the programmer. In most real-world engineering firms, one group does design work while a separate group does the testing.
A complementary technique, white box testing or structural testing, uses information about the structure of the program to check that it performs correctly.
Equivalence partitioning
A technique in black box testing is equivalence partitioning. Equivalence partitioning is designed to minimize the number of test cases by dividing tests in such a way that the system is expected to act the same way for all tests of each equivalence partition. Test inputs would be selected from each partition.
Equivalence partitions are designed so that every possible input belongs to one and only one equivalence partition.
Disadvantages to equivalence partitions
- Doesn't test every input
- No guidelines for choosing inputs
- Heuristic-based
Boundary value analysis
Boundary value analysis is a technique of Black box testing in which input values at the boundaries of the input domain are tested. It has been widely recognized that input values at the extreme ends of, and just outside of, input domains tend to cause errors in system functionality.
In Boundary value analysis values at, and just beyond, the boundaries of the input domain are used to generate test cases to ensure proper functionality of the system.
As an example, for a system that accepts as input a number between one and ten, Boundary value analysis would indicate that test cases should be created for the lower and upper bounds of the input domain (1, 10), and values just outside these bounds (0, 11) to ensure proper functionality.
Boundary value analysis is an excellent way to catch common user input errors which can disrupt proper program functionality.
Boundary value analysis complements the technique of Equivalence partitioning.
Some of the advantages of Boundary value analysis are:
- Very good at exposing potential user interface/user input problems
- Very clear guidelines on determining test cases
- Very small set of test cases generated
Disadvantages to Boundary value analysis:
- Does not test all possible inputs
- Does not test dependencies between combinations of inputs
Fuzz testing
Fuzz testing uses software tools to generate random data for the inputs of software. It's quite useful because it requires very little test design, and can locate unexpected errors, especially in input-handling.de:Black-Box-Test