What should application do? Verifying the application's specific functionality as per requirements is called functional testing.
Non-functional testing deals with verifying non-functional requirements. like performance, scalability, security etc Non-functional testing mainly deals with quality, performance and usability of the product.