I'm not sure what the question is here. A couple of general observations:
#2: This is a very common theme in software development. The reason to keep specs up to date is so you or somebody else can understand and modify/refactor code at a later date. It's easy to forget why you made design or programming decisions after some time has elapsed and/or you've moved on to greener pastures. Documentation & specs become especially important if you are working on interfaces with other teams and/or if the code (or domain) is complex. If you're working on a one-off, simple project that nobody other than you will look at, feel free to omit specs & documentation.
#5: No amount of testing will completely ensure program quality in any except the simplest programs. You will never have an infinite number of testers or an infinite amount of time to write tests, so you'll constantly be making tradeoffs to test as much as possible given time/personnel/budget limitations, especially in critical sections of code. Typical limitations on testing for quality are budget, time, and staffing (number of testers and their experience/background).