non functional testing tutorial