Non-functional testing assesses how well a product behaves rather than what it does. It evaluates attributes like reliability, performance, usability, maintainability, and portability. Reliability testing checks that software operates failure-free for a specified time and helps identify recurring failures. Performance is tested under various loads to measure response times. Usability ensures features are easy to understand and use. Maintainability permits software to be updated and modified over its lifecycle. Portability testing verifies how effortless it is to transfer software between environments.