functionality and non functional testing