Recently I posted a blog entry titled, "The Declining Prestige of Software Testing" that generated a ton of e-mail replies. The messages generally fell into one of two Boolean-style categories: 1.) I’m completely wrong, 2.) I’m completely right. Regardless, the replies were very vigorous so I seem to have touched on something that quite a few software engineers care about. For the sake of argument, let’s suppose that the perception of the prestige of software testing as a discipline at Microsoft and other companies is in fact declining. What are some possible actions the software testing community can take? The answer to this depends on the root causes of the decline in prestige. So we need to make yet more assumptions; in particular suppose that software testing is uncovering fewer critical bugs because 1.) software developers are doing more testing on their own, 2.) developing software with C#, Java, and frameworks such as RoR is inherently less tricky than with older technologies such as C++ and ATL, and 3.) software developers are using increasingly sophisticated code check-in and regression tools. If all of these assumptions are correct then in order to enhance the prestige of software testing, testers must make some significant additions and changes to the software testing paradigm. One idea that comes to mind is that testing may become more valuable by integrating more closely with the software development process. This integration could take many forms. For example, instead of testing code after the code has been checked into a version control system and built, testers could start decorating source code with pre-conditions, post-conditions, and state invariants (something developers in general absolutely hate to do), using either a commenting approach or an attribute approach. This would enable semi-automatic test case generation (in theory at least) and greatly enhance test coverage. Microsoft Research has a very interesting Spec# project (see http://research.microsoft.com/specsharp/) which is looking at this type of approach.