One of the benefits of writing in .NET is that its managed code "compilation" produces an abstract intermediary language (IL). The results of this compilation are code and meta-information that we can analyze very easily and directly with .NET, using reflection or other tools via inspection of the generated IL or bytecode.
As tests and test classes are generally attributed with information around tests and test methods, we're free to search for and specifically analyze our tests in very useful ways.
One analysis, of course, involves static analysis of test to check for specific rules. There are various tools out that perform such tasks, such as FxCop or Visual Studio Code Analysis. We won't look too closely at those (I'll leave that as an exercise to the user).
One thing we can do with our tests is perform round-trip requirements and acceptance documentation.
The typical "waterfall" type approach is that you are given requirements, you implement...