Functional testing deals with the functional aspect of the application. This technique tests that the system is behaving as per the requirement and specification. These are directly linked with customer requirements. We validate the test cases against the specified requirement and make the test results as pass or fail accordingly.
Examples include regression, integration, system, smoke, etc
Nonfunctional testing, on the other hand, tests the non-functional aspect of the application. It does not focus on the requirement, but environmental factors like performance, load, and stress. These are not explicitly specified in the requirement but are prescribed in the quality standards. So, as QA we have to make sure that these testing are also given sufficient time and priority.