Difference between functional and non-functional requirements:
Functional Requirements
Non-Functional Requirements
They define a system or its component. They define the quality attribute of a system
It specifies, “What the system should do?” It specifies, “How should the system fulfill the functional requirements?”
User specifies functional requirement. Non-functional requirement is specified by technical peoples e.g. Architect, Technical leaders and software developers.
It is mandatory to meet these requirements. It is not mandatory to meet these requirements.
It is captured in use case. It is captured as a quality attribute.
Defined at a component level. Applied to a whole system.
Helps you to verify the functionality of the software. Helps you to verify the performance of the software.
Functional Testing like System, Integration, End to End, API testing, etc are done. Non-Functional Testing like Performance, Stress, Usability, Security testing, etc are done.
Usually easy to define. Usually more difficult to define.