Recently I was telling somebody that testing will not improve quality, it is what you do with the information that testing provides that will improve quality. They then asked, can you improve quality without testing? I found this an interesting question. I decomposed this into the following questions. Can you improve the quality of software testing without getting any information? and if testing is about providing information, does that mean that anything which provides information would be considered testing? I think you need to answer the second to prove the first is true. Breaking testing up into dynamic (requires the code to be executed) and static (testing the code without executing it) testing I believe the most controversial would be static testing. Is pair programming static testing? What about acceptance criteria creation, talking about the design of a system on the whiteboard or even a standup meeting. These all provide information but I don’t think they should all be called testing.
In my mind, testing is about providing information on an existing system. So code reviews or pair programming are forms of static testing, but they both rely on code to be created before issues are commented on. Anything done before the application is developed, which may just be the first line of code is written, is all analysis. Once a system is live and being used, the information gathered as part of everyday use is not testing, in my opinion. So user feedback of a system that is in use is also not testing, which implies it is possible to obtain information without testing.
Therefore theoretically it is possible to improve quality without testing, by improving the analysis you are doing, and by using user feedback to determine the quality of what is being produced. However, without testing I don’t believe you can achieve the same quality in as short a period of time as you would with testing providing the continual, detailed feedback.