Functional testing involves tests that evaluate functions that system should perform as per customer and business requirements.
Non-functional testing evaluates characteristics of system such as usability, performance and security. It is essentially the testing of “how well” the system behaves in other words, it is concerned with the user experience.