I have been reading about software testing again, just surveying the market to see what new techniques and approaches have been invented. I have found that the basics are still in well-respected planning, preparation, objectivity, etc. What is amazing to me is what I don't see. Everyone has suggestions about how to improve your testing—implement a testing process or methodology, utilize IEEE standards, work towards CMMI compliance, etc. No one mentions that improving requirements will improve testing!
Testing software is an extremely time consuming and expensive activity. As software continues to get more complex the difficultly with testing increases exponentially. Why does it take so long? I would argue that one of the main reasons is that poor (or missing) requirements slow down the process as much as any other issue. If you don't have good requirements, how do you write a test plan? If you don't have detailed requirements, how do you write a detailed test case with a step by step procedure? If you don't have excellent requirements, how do you evaluate the software's ability to address the business problem. Instead of focusing so much time trying to improve our testing methods – let's spend more time writing excellent requirements – which are "testable" or "verifyable" and make our tester's lives easier!