functional testing types with examples