Automated tests in TFS have a very helpful method of categorizing tests. With the addition of a .NET attribute on the test method, you can add categories to your tests such as “unit,” “BVT,” “smoke,” or any string you can envision. As this MSDN article describes, you can do this via the UI in Visual Studio, or straight in the .NET source code. Example:


[TestCategory("BVT")]
[TestCategory("Smoke")]
[TestMethod()]
public Void SomeImportantTest()
{
}

However, for manual tests, there doesn’t seem to be an excellent way to categorize tests. For example, in the absence of automation, there may be a few test cases to designate as “smoke tests” that will be manually run over a few minutes to verify basic sanity of the product. We have gotten into the habit of including a “TestCategory” data field in our work item type definitions in TFS to support this. Something as basic as below works fine:

<FieldDefinition reportable="dimension" refname="Crosslake.TestCategory" name="Category" type="String">
<ALLOWEDVALUES>
<LISTITEM value="BVT" />
<LISTITEM value="End-to-End" />
<LISTITEM value="Feature" />
<LISTITEM value="Smoke" />
</ALLOWEDVALUES>
<ALLOWEXISTINGVALUE />
<REQUIRED />
<HELPTEXT>Category of test case</HELPTEXT>
</FieldDefinition>

This allows us to set up query-based suites based on the category in test manager, to automatically group all our smoke tests, BVTs, etc. into various suites with very little effort.

Got a better way to categorize tests? Please share with everyone.