What is functional testing?
Functional testing treats a program as a black box, testing the mapping of inputs (domain) to outputs (range).
boundary value testing
focuses on testing edges of input domains
this is because at boundaries developers are more likely to make mistakes
Advantages of boundary testing
simple test case generation
disadvantage of boundary testing
Does not guarantee input domain coverage - as focuses on boundaries probably not testing values that have different behaviour
awkward for logical - cant do nominal , maximal of booleans and conditions
domains must be independent
no whitebox knowledge
What is weak normal equivalence testing
type of testing where we partition input domain into equivalence classes and ensure each equivalence class covered at least once
maximum no of test case
Number of test cases: max x ∣Sx∣
or in english
if 2 variables - x and y
max(no of equivalence classes x , no of equivalence classes y)
define strong normal
strong normal – partition input domain into equivalence classes – cover every combination of valid equivalence classes across all input domains
no of test cases for strong normal
Number of test cases: ∏x∣Sx∣
multiply the number of each class
weak robust
Weak Robust ECT: Includes weak normal ECT plus out-of-range values.
no of test cases for weak robust
max x |Sx| ( weak normal part) + 2 x n ( no of variables)
strong robust
takes all combinations of valid and invalid equivalence classes across all input domains
no of test cases for strong robust
Number of test cases: ∏x(∣Sx∣+2) (add two to each class)
Functional Testing advantages ( look in structural testing notes for explanations)
.straightforward testcase generation
.based on specification
Functional Testing disadvantages ( look in structural testing notes for explanations)
.no white box knowledge
. Gaps and redundancies
Gaps and redundancies explained:
.Gaps :
- functional uses spec to group inputs
into broad partitions
- in the actual code these broad
may be split further into finer partitions
- if we test with value from broad
partition may miss behaviour from
from finer code level partitions creating
gaps in coverage}
. redundandcies:
- spec might detail multiple equivalence classes and so would test for each but if someone actually looked at code theyd see these equivalnce classes trigger same behaviour and would collapse it into one ( now only one test cases)