non functional testing types with examples