I'm somewhat confused by your argument (actually; entirely confused). Perhaps a quick refresher of Evolution is useful.
Basically there is a wide misconception that mutation and NS is Evolution. This is something of a well taught fallacy.
Evolution consists of three parts - Variation, Mechanism and Outcome. The first of these, Variation, relates to the physical phenomena that cause changes in organisms. One of these is mutation; which is a random action at the gene level causing something different to occur in the organism. There are several other things that can cause variation in an organism.
The second is Mechanism; which is the process by which individual variations take effect across a "population". This is, in effect, the guts of evolution - and one of the main parts of that is Natural selection (which is an easy theory to comprehend). The thing to remember about NS is that this is a very very slow process; if one variation is favoured this is not a process that occurs from one generation to the next. NS works best in larger populations - so the progress of multiple variations through the population can take hundreds, or thousands, of generations.
The final part of Evolution is the outcome of the progress of variations across a species; this is more about the phenomena we observe (i.e. that we are adapted to our environment, or that two species "co-operate" at a very basic level). This is the guts of your particular problem. Mutation is a pretty provable phenomena because, well, we see mutation all the time!
Your original post made this note:
If you have a really good team of tester and code reviewers, but no one submits any patch (or, no one makes any change), then the software will not evolve on its own. It will not get better just because there are a lot of people to test it. It needs other people to make changes/submit patches.
Consider a more "true to life" version of your example; a program exists that can compile and produce a version of itself as well as doing some other specific task. People download V1 of this program that, say, flashes a pixel on your screen. As the program compiles itself a random "mutation" may occur in the code - adding, removing or changing something. Programs that don't work are discarded (naturally) and those that do something extra or cool are favoured. Over the course of millions of generations you will end up with a number of highly evolved programs - for example a network scanner, a web browser and a word pad.
Your mistake is in assuming a system that requires an intelligent input.
You seem to be suggesting that it is unlikely for mutation to create useful variations; this is also a fallacy because mutation is random. So despite being unlikely it is not impossible; please remember we are not talking about a mutation that suddenly means the offspring grows a lung - that is a common misconception. We are already highly evolved over millions of generations - so it is a lot harder to observe directly in current organisms. But we can observe it in bacteria who adapt to new situations through mutation. That is the basis of the whole shebang.
The theory of evolution has survived this challenge a number of times without being proven fallacious.