|A software system can be tested in two ways. It depends on your point of view. It can be with or without technical knowledge of the system.|
Black-box tests can be functional or non-functional, though usually functional. The tester selects valid and invalid input for the test and determines if the output is correct. The tester doesn’t need to have knowledge of the internal structure of the system. Typical black-box test design techniques include:
- Equivalence partitioning; To reduce the number of test cases and select test cases that cover all possible scenarios
- Boundary value analysis Validates input and checks if the input is in the valid range, i.e. if (month > 0 && month < 13)
- Decision table testing Are about if- and switch-statements. Decision tables model conditional logic.
- Pairwise testing Test each pair of input parameters to a method. Simple bugs are triggered by a single parameter, next simplest category of bugs consists of those dependent on interactions between pairs of parameters.
- State transition tables Shows in what state a system moves to, based on the current state and input parameters.
- Use case testing Users work through use cases with the aid to verify that a UI fulfills the needs of its users, as described in the use case model. The tester identifies which use case(s) to test, the actors (users), input, output and system effects and the flows of interest between the use cases.
- Cross-functional testing The work of one person is reviewed by the team as a whole.