Quality is delighting customers
joining in a bit late. Requirements whose behavior can be measured under controlled conditions are testable requirements. Controlled conditions mean test environment. Behavior reflects the pattern of measured values of the output. The output measures should have well defined limits (tolerance limits) to decide whether they are acceptable or not acceptable. For e.g. "the promotion module should update the price of all the SKUs within 30 minutes of from the start of the the process". The input to the promotion module here is a list of latest promotions (pricing schemes) for different items in the store. Output is updation of the price tag of each item in the database. The update process should not take more than 30 minutes. When you run this system again and again under different stress conditions, the avg time to update price may come to say 20 minutes with maximum time of 30 minutes.
Requirements whose inputs or outputs cannot be measured or do not have specific measures to track (not defined in the requirement) or which do not have tolerance limits are not testable. Testable is that requirement which can be ticked off as pass or fail. "System should be fast" is not testable as the output (whatever the system produces) is not associated with any measure not is there any tolerance limit. Fast for a Japanese customer may be in milliseconds, for a Israeli few seconds, for a Brit a few more seconds, for an American a few minutes and for Indian, a few days!Just kidding. In other words, the metrics and tolerance limits need to be clearly specified. If the requirement specs mention that system is OK even if it responds within a day, the requirement is testable. Otherwise not.
I have come across requirements which are truly not testable. They are not testable because we cannot re-produce those physical conditions in labs. Testing aircraft systems at high altitude where cosmic rays have the potential to impact the bits in the system cannot be reproduced on the ground. The cosmic rays hitting a data bit and flipping it from 0 to 1 or vice versa is random. Such requirements are again not testable. That is why in such situations we have redundant systems running in parallel.