Non-functional testing verifies quality characteristics - how the system behaves rather than what it does. This includes attributes like usability, reliability, performance, security, and efficiency. Functional testing checks whether the system meets specified functional requirements (what features work), while non-functional testing evaluates the quality of those features (how well they work).