This blog post discusses how to apply a Test-driven Development (TDD) approach to non-functional requirements like performance. He proposes examples on how to test performance with time and memory constraints. He suggests that it is possible to extend this approach to performance, scalability, portability, maintainability and even more abstracts requirements like usability, accessibility.