<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Dennis Stone&amp;#39;s Blog</title><subtitle type="html" /><id>http://blogs.msdn.com/b/densto/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/densto/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2009-11-09T16:09:10Z</updated><entry><title>Using Retention Policy to Delete Builds but Keep Test Results</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/07/16/using-retention-policy-to-delete-builds-but-keep-test-results.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/07/16/using-retention-policy-to-delete-builds-but-keep-test-results.aspx</id><published>2010-07-16T15:10:44Z</published><updated>2010-07-16T15:10:44Z</updated><content type="html">&lt;p&gt;There’s a good post over at &lt;a title="http://blog.nfocus.co.uk/2010/07/oi-what-happened-to-my-test-results.html" href="http://blog.nfocus.co.uk/2010/07/oi-what-happened-to-my-test-results.html"&gt;http://blog.nfocus.co.uk/2010/07/oi-what-happened-to-my-test-results.html&lt;/a&gt; by Danny Crone that goes over a scenario where a Retention Policy was specified on a Build Definition and testers were unpleasantly surprised to find their Test Results history disappearing as older builds got cleaned up.&amp;#160; Check out the post to see a good walk-through on how to avoid this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10039150" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="Team Build" scheme="http://blogs.msdn.com/b/densto/archive/tags/Team+Build/" /><category term="Team Test" scheme="http://blogs.msdn.com/b/densto/archive/tags/Team+Test/" /></entry><entry><title>How to keep your Test Plans / Suites in sync with your Unit Test assemblies</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/12/how-to-keep-your-test-plans-suites-in-sync-with-your-unit-test-assemblies.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/12/how-to-keep-your-test-plans-suites-in-sync-with-your-unit-test-assemblies.aspx</id><published>2010-03-12T19:40:08Z</published><updated>2010-03-12T19:40:08Z</updated><content type="html">&lt;p&gt;In my last post I gave an overview of what automated testing looks like in VS / TFS 2010 with the new testing features.&amp;#160; In 2010 we’ve added Test Plans which contain Test Suites which you can think of as a folder hierarchy to separate and organize your tests within.&amp;#160; Test Suites contain Test Cases (well, Test Points really, you can see my previous post here if you’re interested in the distinction) which you can run from Microsoft Test Manager (MTM.exe).&amp;#160; Test Cases can either be Manual or Automated, for a Test Case to be automated you need to associate the Test Case work item with one of the VSTS 2010 automated test types which includes Unit Tests, Web Performance Tests, Load Tests, Coded UI Tests, etc.&amp;#160; The most common scenario here is probably to associate your Unit Tests with Test Cases.&amp;#160; &lt;/p&gt;  &lt;p&gt;To manually create that association you perform the following steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open your Test Project and Connect to your TFS 2010 Server&lt;/li&gt;    &lt;li&gt;Create or open an existing Test Case     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_2.png" width="860" height="540" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Switch to the Associated Automation tab     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_3.png" width="859" height="540" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Click the … button next to the Automated test name textbox     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_4.png" width="859" height="521" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Choose the test in the list you want to associate the work item Test Case with, in this simple example I only have one so I’ll go ahead and choose that and hit OK, then you’ll see the following data filled in.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_5.png" width="861" height="539" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Save the Test Case.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now when you add this Test Case to a Test Suite in Camano, associate your Test Plan with a build, and then Run the Test MTM will go to the corresponding build share to find the test assembly and run the associated unit test.&lt;/p&gt;  &lt;p&gt;As you can see there’s a point where things quickly become unmanageable if you’re forced to manually manage these associations.&amp;#160; My teams Unit Test assembly contains approximately 650 Unit Tests that we run through Microsoft Test Manager every night.&amp;#160; We’re pretty well locked down now of course but there was a long time during the product cycle during which we were adding new tests and removing deprecated tests quite regularly.&amp;#160; It would have been very time consuming to keep our MTM Test Suites in sync with these changes to our Unit Test assembly (and that’s not even considering the amount of time it would have taken to manually create 650 Test Case work items and then associate each one with the corresponding Unit Test just to get started).&amp;#160; We saved a lot of time using the TCM.exe command line tool that is included with the product to do this for us so I wanted to dive into that process here.&lt;/p&gt;  &lt;p&gt;First, here’s a tip you may find useful if you are going to be using TCM.exe against the same server / project frequently.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Navigate to your VS Install Root\Common7\IDE&lt;/li&gt;    &lt;li&gt;Open TCM.exe.config&lt;/li&gt;    &lt;li&gt;Set the TeamFoundationServer and TeamProject app settings there, so you don’t have to specify them on every command you run.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here’s a set of fake Unit Tests I’ll use to demonstrate some of the features of TCM.exe:&lt;/p&gt;  &lt;pre class="code"&gt;        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;BVT&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(1)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Apple()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}

        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;BVT&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;NotLocFriendly&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(1)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Banana()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}

        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;BVT&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(1)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Pear()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}

        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;NotLocFriendly&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(2)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Kiwi()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}

        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(1)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Lemon()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}

        [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]
        [&lt;span style="color: #2b91af"&gt;TestCategory&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;BVT&amp;quot;&lt;/span&gt;)]
        [&lt;span style="color: #2b91af"&gt;Priority&lt;/span&gt;(1)]
        &lt;span style="color: blue"&gt;public void &lt;/span&gt;Orange()
        {
            &lt;span style="color: green"&gt;//Test something
        &lt;/span&gt;}&lt;/pre&gt;

&lt;p&gt;This set of tests includes tests across 3 different Priority levels and 2 Test Categories (including some tests not in a Test Category).&amp;#160; If you’re not familiar with the [TestCategory] attribute, I believe it’s new to this release.&amp;#160; It’s a nice way to mark your unit tests in such a way that you can query them from MSTest.exe so you can easily run certain subsets of your tests without having to list them all out individually.&amp;#160; We also support this in TCM.exe for the testcase import commands.&lt;/p&gt;

&lt;p&gt;In my Test Plan I have a Suite Hierarchy like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_6.png" width="990" height="543" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Here goes first let’s check out the command we’ll use.&amp;#160; As you can see in the help output below we can import our tests with as little input as simply pointing to the assembly with the “/storage” option.&amp;#160; That would import all of the Test Methods in the entire assembly though and it would only create the associated work items rather than actually add them to our suites.
    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_7.png" width="672" height="338" /&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;We’ll want to use the /syncsuite and /category options.&amp;#160; That runs us into our first issue though, we don’t know our suite id’s, and they aren’t displayed in the MTM UI anywhere.&amp;#160; We can get the Test Plan Id from the UI by going to the Test Plan Properties page.&amp;#160; TCM.exe includes the ability to query this information from the server though, since I already know my Test Plans Id from the UI, I can do:
    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_8.png" width="680" height="346" /&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Now I have the Suite Id’s I need for the /syncsuite option and can proceed.
    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_9.png" width="675" height="341" /&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;And we can see that Orange, Pear, Apple, and Banana were Added, here’s what our Test Suite now looks like:
    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_10.png" width="995" height="455" /&gt;&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;What happens when I run the command again?&amp;#160; We don’t create an additional set of Test Case work items, we just update the existing ones.
    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_11.png" width="680" height="343" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it!&amp;#160; I’ll skip going through populating the other Test Suites this way, hopefully you get the idea from the example above.&amp;#160; Instead, let’s take a quick look at what the Test Case that the import command created looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/densto/WindowsLiveWriter/HowtokeepyourTestPlansSuitesinsyncwithyo_985E/image_thumb_13.png" width="993" height="634" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The “Assigned To” was set to the account I’m running the import as, if you specify the “Owner” attribute on your Unit Test it’ll use that value instead.&amp;#160; Priority was set to the value on the Unit Test attribute also.&amp;#160; You can also see that the Associated Automation info was set for us just as it was in the manual example at the beginning of this post.&lt;/p&gt;

&lt;p&gt;That’s it for this post, hope you find it useful.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977707" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /><category term="Automated Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/Automated+Testing/" /></entry><entry><title>Automated Testing in VSTS / TFS 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/05/automated-testing-in-vsts-tfs-2010.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/05/automated-testing-in-vsts-tfs-2010.aspx</id><published>2010-03-05T09:31:00Z</published><updated>2010-03-05T09:31:00Z</updated><content type="html">&lt;p&gt;I thought I’d make a brief post giving an overview of what automated testing looks like in our 2010 release.&amp;#160; While it’s true that in this release we focused primarily on nailing the experience for the manual tester there is quite a bit of carryover from those features that also apply to automated testing, and as we do quite a bit of automated testing ourselves and dogfood our own product we did end up working on the automated testing experience as well despite that heavy focus on the manual test side of things.&lt;/p&gt;  &lt;p&gt;Since the 2005 release we’ve had several types of tests that you could create in a Visual Studio Test Project, they included Unit Tests, Web Tests, Load Tests, etc.&amp;#160; In those versions you could run your tests locally through Visual Studio or MSTest, or you could run them against a remote controller and agent from either of those clients.&amp;#160; When your tests were complete you could publish them against a TFS Server / Project / Build and then use the various reporting mechanisms in the product to view the test results.&amp;#160; They would also show up on the Build Summary Report.&amp;#160; &lt;/p&gt;  &lt;p&gt;In the 2010 release we’ve added a ton of new test features.&amp;#160; We now have first class support for Test Case work items, and tooling for creating Test Plans, organizing your test cases into test suites, tracking which test configurations you’ve run against, etc.&amp;#160; There are tons of blog posts covering these new features so I won’t go into a lot of detail here on them, instead I’ll focus on how those automated test types fit into this new landscape of test objects.&lt;/p&gt;  &lt;p&gt;Each Test Case can have associated automation, this creates a reference from the Test Case work item to the actual automated test, be it a Unit Test, Web Performance Test, Coded UI Test, or whatever.&amp;#160; When you add that Test Case to one of the Test Suites in your Test Plan and run it, it will look for the referenced test on the build share for whatever build you’re running against.&amp;#160; When you create this association between your Test Case work items and your VSTT tests you can then track your test progress within the context of your Test Plan and/or Test Suites and publishing / saving the results is all handled for you without the need for a separate publish operation.&lt;/p&gt;  &lt;p&gt;If you aren’t using Team Build to generate your builds yet then you’ll need to use “Fake Builds” that your test plan can reference and use another process to copy your test assemblies / files to the drop location you specify on the fake build, that way when you run your automated tests through MTM it will know where to find the associated test files.&amp;#160; See my earlier post &lt;a href="http://blogs.msdn.com/densto/archive/2010/03/02/creating-fake-builds-in-tfs-2010.aspx"&gt;Creating Fake Builds in TFS 2010&lt;/a&gt; for more information on that.&amp;#160; Alternatively you can use tcm.exe to run your tests and point to any share containing your test assemblies / files.&lt;/p&gt;  &lt;p&gt;In the most basic scenario you would create an Environment (physical in this case, but there are also virtual environments) that specifies a Test Controller to run your tests against.&amp;#160; When you kick off an automated test run from MTM you’ll have specified the environment to run tests on as well as the build you are running against.&amp;#160; The test assemblies / files from the build you specified will be sent over to the controller &amp;amp; agent much like they were in the previous versions, they’ll be run there, and the results will be posted back to the new system.&amp;#160; From within MTM you can then drill into failed tests and even open up the corresponding trx’s into Visual Studio.&lt;/p&gt;  &lt;p&gt;All of this allows you to use all of the new test planning, organization, execution, and tracking features that we’ve added in 2010 with the automated test types that you’ve been producing throughout our earlier releases.&amp;#160; &lt;a href="http://blogs.msdn.com/densto/archive/2009/11/09/tcm-exe-a-general-introduction.aspx"&gt;TCM.exe&lt;/a&gt; provides some features that allow easier importing of these tests so that you don’t have to generate Test Case work items for each individual test case manually one by one.&amp;#160; It also allows you to easily keep a Test Suite in sync with a unit test assembly for example without having to manually account for added or removed unit tests as you move through the product cycle.&lt;/p&gt;  &lt;p&gt;For more details on this refer to &lt;a href="http://msdn.microsoft.com/en-us/library/dd465191(VS.100).aspx"&gt;this MSDN article.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9974762" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>The Test Management API – Part 2: Creating &amp; Modifying Test Plans</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/04/the-test-management-api-part-2-creating-modifying-test-plans.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/04/the-test-management-api-part-2-creating-modifying-test-plans.aspx</id><published>2010-03-04T02:37:12Z</published><updated>2010-03-04T02:37:12Z</updated><content type="html">&lt;p&gt;In the previous &lt;a href="http://blogs.msdn.com/densto/archive/2010/03/02/the-test-management-api-getting-started-updated-for-rc-release.aspx"&gt;Getting Started&lt;/a&gt; post for this series I covered the basics of creating a connection to the server and getting an instance of ITestManagementTeamProject which is at the core of just about everything you may want to do with the Test Management objects.&lt;/p&gt;  &lt;p&gt;This time I’d like to show how to create and modify a Test Plan, add a new Test Suite to it, and then add Test Cases to your new suite.&amp;#160; Then I’ll query it all back and output some basic info about what we’ve created.&lt;/p&gt;  &lt;p&gt;I start with the same basic framework I laid out in the Getting Started post, and also reference the post I previously did on &lt;a href="http://blogs.msdn.com/densto/archive/2009/11/19/test-management-terminology-what-is-a-test-point.aspx"&gt;Test Points&lt;/a&gt; so you may want to review those before proceeding.&amp;#160; Note that in several places I used WIQL for querying test objects from the server, for more on that Duat Le has &lt;a href="http://blogs.msdn.com/duat_le/archive/2010/02/25/wiql-for-test.aspx"&gt;put together a great post here&lt;/a&gt; that goes into depth on that topic.&lt;/p&gt;  &lt;p&gt;One last note, beyond the references mentioned in the Getting Started post you need to add a reference to WindowsBase.&amp;#160; Now, on to the code.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Linq;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text;

&lt;span style="color: blue"&gt;using &lt;/span&gt;Microsoft.TeamFoundation.Client;
&lt;span style="color: blue"&gt;using &lt;/span&gt;Microsoft.TeamFoundation.TestManagement.Client;
&lt;span style="color: blue"&gt;using &lt;/span&gt;Microsoft.TeamFoundation.WorkItemTracking.Client;

&lt;span style="color: blue"&gt;namespace &lt;/span&gt;BlogSamples
{
    &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Program
    &lt;/span&gt;{
        &lt;span style="color: blue"&gt;static void &lt;/span&gt;Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color: blue"&gt;string &lt;/span&gt;serverurl = &lt;span style="color: #a31515"&gt;&amp;quot;http://localhost:8080/tfs&amp;quot;&lt;/span&gt;;
            &lt;span style="color: blue"&gt;string &lt;/span&gt;project = &lt;span style="color: #a31515"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #2b91af"&gt;ITestManagementTeamProject &lt;/span&gt;proj = GetProject(serverurl, project);

            &lt;span style="color: green"&gt;// List all Test Plans
            &lt;/span&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ITestPlan &lt;/span&gt;p &lt;span style="color: blue"&gt;in &lt;/span&gt;proj.TestPlans.Query(&lt;span style="color: #a31515"&gt;&amp;quot;Select * From TestPlan&amp;quot;&lt;/span&gt;))
            {
                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Plan - {0} : {1}&amp;quot;&lt;/span&gt;, p.Id, p.Name);
            }

            &lt;span style="color: green"&gt;// Get a Test Plan by its Id
            &lt;/span&gt;&lt;span style="color: blue"&gt;int &lt;/span&gt;myPlansId = 1;
            
            &lt;span style="color: #2b91af"&gt;ITestPlan &lt;/span&gt;foundPlan = proj.TestPlans.Find(myPlansId);
            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Got Plan {0} with Id {1}&amp;quot;&lt;/span&gt;,
                foundPlan.Name, foundPlan.Id);

            &lt;span style="color: green"&gt;// Let's create a new Test Plan from scratch
            // Only the Name property is required to be set before
            // you can save, but we'll set a few extras here as well.
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ITestPlan &lt;/span&gt;plan = proj.TestPlans.Create();
            plan.Name = &lt;span style="color: #a31515"&gt;&amp;quot;My New Test Plan&amp;quot;&lt;/span&gt;;
            plan.StartDate = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now;
            plan.EndDate = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now.AddMonths(2);
            plan.Save();

            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Created new Plan \&amp;quot;{0}\&amp;quot; with Id: {1}&amp;quot;&lt;/span&gt;,
                plan.Name, plan.Id);

            &lt;span style="color: green"&gt;// Next let's add a new Test Suite to our plan
            // First, create a static suite (I'll cover Dynamic Suites
            // in a future post)
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IStaticTestSuite &lt;/span&gt;newSuite = proj.TestSuites.CreateStatic();
            newSuite.Title = &lt;span style="color: #a31515"&gt;&amp;quot;Acceptance Tests&amp;quot;&lt;/span&gt;;
            
            plan.RootSuite.Entries.Add(newSuite);
            plan.Save();

            &lt;span style="color: green"&gt;// Let's find the default configuration that was created when
            // we created our Team Project.  We'll need this to add some
            // tests to our new suite (or we could create a new one, but 
            // I'll keep things simple and just get the default one for now)
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ITestConfiguration &lt;/span&gt;defaultConfig = &lt;span style="color: blue"&gt;null&lt;/span&gt;;

            &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ITestConfiguration &lt;/span&gt;config &lt;span style="color: blue"&gt;in &lt;/span&gt;proj.TestConfigurations.Query(
                &lt;span style="color: #a31515"&gt;&amp;quot;Select * from TestConfiguration&amp;quot;&lt;/span&gt;))
            {
                defaultConfig = config;
                &lt;span style="color: blue"&gt;break&lt;/span&gt;;
            }

            &lt;span style="color: green"&gt;// I would typically check that defaultConfig is not null here
            // but for brevity sake will skip that.

            // Next we'll create a Testcase to add to our Test Suite
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ITestCase &lt;/span&gt;tc = proj.TestCases.Create();
            tc.Title = &lt;span style="color: #a31515"&gt;&amp;quot;Verify X when doing Y&amp;quot;&lt;/span&gt;;
            tc.Save();

            &lt;span style="color: green"&gt;// Now let's add it to your suite, we still have our reference
            // to the static suite around so we'll use that
            // First we need an &amp;quot;IdAndName&amp;quot; object for our config
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IdAndName &lt;/span&gt;defaultConfigIdAndName = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IdAndName&lt;/span&gt;(
                defaultConfig.Id, defaultConfig.Name);
            
            &lt;span style="color: green"&gt;// Now we'll set the default configs for our suite
            &lt;/span&gt;newSuite.SetDefaultConfigurations(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IdAndName&lt;/span&gt;[] {
                defaultConfigIdAndName});

            &lt;span style="color: green"&gt;// Now let's add that testcase
            &lt;/span&gt;newSuite.Entries.Add(tc);

            &lt;span style="color: green"&gt;// Now let's save the plan (don't need to explicitly
            // save test suites).
            &lt;/span&gt;plan.Save();
            
            &lt;span style="color: green"&gt;// And finally, let's take a look at what we've created.
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Test Plan: {0}&amp;quot;&lt;/span&gt;, plan.Name);

            &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ITestSuiteBase &lt;/span&gt;suite &lt;span style="color: blue"&gt;in &lt;/span&gt;plan.RootSuite.SubSuites)
            {
                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;\tTest Suite: {0}&amp;quot;&lt;/span&gt;, suite.Title);

                &lt;span style="color: #2b91af"&gt;IStaticTestSuite &lt;/span&gt;staticSuite = suite &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IStaticTestSuite&lt;/span&gt;;

                &lt;span style="color: green"&gt;// Let's Query the Test Points (see my previous post on what
                // Test Points are)
                &lt;/span&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ITestPoint &lt;/span&gt;point &lt;span style="color: blue"&gt;in &lt;/span&gt;plan.QueryTestPoints(
                    &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;SELECT * FROM TestPoint WHERE SuiteId = {0}&amp;quot;&lt;/span&gt;,
                    suite.Id)))
                {
                    &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;\t\tTest Point for Testcase \&amp;quot;{0}\&amp;quot; against config \&amp;quot;{1}\&amp;quot;&amp;quot;&lt;/span&gt;,
                        point.TestCaseWorkItem.Title, point.ConfigurationName);                        
                }
            }
        }


        &lt;span style="color: blue"&gt;static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ITestManagementTeamProject &lt;/span&gt;GetProject(&lt;span style="color: blue"&gt;string &lt;/span&gt;serverUrl,
            &lt;span style="color: blue"&gt;string &lt;/span&gt;project)
        {
            &lt;span style="color: #2b91af"&gt;TfsTeamProjectCollection &lt;/span&gt;tfs = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TfsTeamProjectCollection&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TfsTeamProjectCollection&lt;/span&gt;.GetFullyQualifiedUriForName(serverUrl));
            &lt;span style="color: #2b91af"&gt;ITestManagementService &lt;/span&gt;tms = tfs.GetService&amp;lt;&lt;span style="color: #2b91af"&gt;ITestManagementService&lt;/span&gt;&amp;gt;();

            &lt;span style="color: blue"&gt;return &lt;/span&gt;tms.GetTeamProject(project);
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9972560" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /></entry><entry><title>Test Impact Demo Video posted by Danny Crone</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/03/test-impact-demo-video-posted-by-danny-crone.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/03/test-impact-demo-video-posted-by-danny-crone.aspx</id><published>2010-03-03T15:20:54Z</published><updated>2010-03-03T15:20:54Z</updated><content type="html">&lt;p&gt;There’s a nice video demo featuring Test Impact you may find interesting here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blog.nfocus.co.uk/2010/03/vs2010-test-impact-one-giant-leap-for.html" href="http://blog.nfocus.co.uk/2010/03/vs2010-test-impact-one-giant-leap-for.html"&gt;http://blog.nfocus.co.uk/2010/03/vs2010-test-impact-one-giant-leap-for.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The demo is a little under 20 minutes and actually touches on quite a few of the integration features in VSTS / TFS 2010 including the Intellitrace Data Collector, Video Recording, and the experience of logging bugs directly from the Test Runner and all the automatically filled in bug data that you get with that.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9972196" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /><category term="Test Impact" scheme="http://blogs.msdn.com/b/densto/archive/tags/Test+Impact/" /></entry><entry><title>Creating Fake Builds in TFS 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/02/creating-fake-builds-in-tfs-2010.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/02/creating-fake-builds-in-tfs-2010.aspx</id><published>2010-03-02T20:26:18Z</published><updated>2010-03-02T20:26:18Z</updated><content type="html">&lt;p&gt;Sometimes it can be useful to create “fake” builds in Team Foundation Server in order to successfully use other ALM features in the product.&amp;#160; If you aren’t using Team Build to generate the build drops for your application but you’d like to have a way to track test runs against builds in TFS one way would be to generate a corresponding “Fake Build” in TFS and publish your tests against that.&amp;#160; With all the added Test Management features in 2010 there are even more ways to associate your testing with specific builds so if you’re not using Team Build to generate your builds yet, the ability to create Fake Builds in TFS that correspond to your real builds may come in handy.&lt;/p&gt;  &lt;p&gt;Here is a post by Jason Prickett that shows the updated code for 2010 (it also links to the old post which showed how to do it in 2008):&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/jpricket/archive/2010/02/23/creating-fake-builds-in-tfs-build-2010.aspx" href="http://blogs.msdn.com/jpricket/archive/2010/02/23/creating-fake-builds-in-tfs-build-2010.aspx"&gt;http://blogs.msdn.com/jpricket/archive/2010/02/23/creating-fake-builds-in-tfs-build-2010.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971751" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /><category term="Team Build" scheme="http://blogs.msdn.com/b/densto/archive/tags/Team+Build/" /></entry><entry><title>The Test Management API – Getting Started (Updated for RC Release)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/02/the-test-management-api-getting-started-updated-for-rc-release.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/02/the-test-management-api-getting-started-updated-for-rc-release.aspx</id><published>2010-03-02T20:09:02Z</published><updated>2010-03-02T20:09:02Z</updated><content type="html">&lt;div class="Section1"&gt;   &lt;p style="line-height: normal" class="MsoNormalCxSpFirst"&gt;&lt;u&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Overview &lt;/font&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/font&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p style="line-height: normal" class="MsoNormalCxSpMiddle"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;This post kicks off a series that will explore the Test Management API’s.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Using these API’s you can accomplish many tasks that may not be possible via the UI, Microsoft Test Manager (MTM).&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Perhaps you have test assets in another system for example, with the API you could create your own solution that fits your individual needs for migrating data between systems.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Or maybe you have a custom tool in mind for your team that will need to be able to examine the various objects you’ve stored in the test case management component of TFS, such as your Test Plans, Test Cases, Test Runs, Results, etc.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;font size="3" face="Times New Roman"&gt;Whatever your reason, using the Test Management API’s will almost always have a common starting point, you first need to establish a connection to the Team Foundation Server and that’s what I’ll cover here.&lt;/font&gt;&lt;/p&gt;    &lt;p style="line-height: normal" class="MsoNormalCxSpMiddle"&gt;&lt;u&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;The Code &lt;/font&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/font&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p style="line-height: normal" class="MsoNormalCxSpMiddle"&gt;&lt;font size="3" face="Times New Roman"&gt;You’ll need to add references to the following assemblies to your project:&lt;/font&gt; &lt;/p&gt;    &lt;p style="line-height: normal" class="MsoNormalCxSpMiddle"&gt;&lt;font size="3" face="Times New Roman"&gt;Microsoft.TeamFoundation.Client.dll&lt;/font&gt;       &lt;br /&gt;&lt;font size="3" face="Times New Roman"&gt;Microsoft.TeamFoundation.TestManagement.Client.dll&lt;/font&gt;       &lt;br /&gt;&lt;font size="3" face="Times New Roman"&gt;Microsoft.TeamFoundation.TestManagement.Common.dll&lt;/font&gt;       &lt;br /&gt;&lt;font size="3" face="Times New Roman"&gt;Microsoft.TeamFoundation.WorkItemTracking.Client.dll&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;font size="3" face="Times New Roman"&gt;These will all be GAC’d on a machine you’ve installed VSTS on.&lt;/font&gt;&lt;/p&gt;    &lt;p style="line-height: normal" class="MsoNormalCxSpMiddle"&gt;&lt;font size="3" face="Times New Roman"&gt;Here’s a quick and easy sample C# console application that connects to the server and creates a very basic test case.&lt;/font&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;

&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.TestManagement.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.WorkItemTracking.Client;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; BlogSamples
{
    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program
    {
        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span class="kwrd"&gt;string&lt;/span&gt; serverurl = &lt;span class="str"&gt;&amp;quot;http://localhost:8080/tfs&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; project = &lt;span class="str"&gt;&amp;quot;Beta1&amp;quot;&lt;/span&gt;;
            ITestManagementTeamProject proj = GetProject(serverurl, project);

            ITestCase tc = proj.TestCases.Create();
            tc.Title = &lt;span class="str"&gt;&amp;quot;Test&amp;quot;&lt;/span&gt;;
            tc.Save();

            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;TC: {0}&amp;quot;&lt;/span&gt;, tc.Id);
        }


        &lt;span class="kwrd"&gt;static&lt;/span&gt; ITestManagementTeamProject GetProject(&lt;span class="kwrd"&gt;string&lt;/span&gt; serverUrl,
            &lt;span class="kwrd"&gt;string&lt;/span&gt; project)
        {
            TfsTeamProjectCollection tfs = &lt;span class="kwrd"&gt;new&lt;/span&gt; TfsTeamProjectCollection(TfsTeamProjectCollection.GetFullQualifiedUriForName(serverUrl));
            ITestManagementService tms = tfs.GetService&amp;lt;ITestManagementService&amp;gt;();

            &lt;span class="kwrd"&gt;return&lt;/span&gt; tms.GetTeamProject(project);
        }
    }
}&lt;/pre&gt;
  &lt;/blockquote&gt;
  &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;&lt;/p&gt;
  &lt;span style="line-height: 115%; font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; font-size: 11pt; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971740" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /></entry><entry><title>Post on Querying Test Management Objects by Duat Le</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2010/03/02/post-on-querying-test-management-objects-by-duat-le.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2010/03/02/post-on-querying-test-management-objects-by-duat-le.aspx</id><published>2010-03-02T18:05:52Z</published><updated>2010-03-02T18:05:52Z</updated><content type="html">&lt;p&gt;Duat Le, a Developer on our team, has put up a very nice post that goes over how to query Test Objects using WIQL (Work Item Query Language).&amp;#160; This information will be very useful if you ever need to use our query syntax in any code you write against our Test Management API’s.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/duat_le/archive/2010/02/25/wiql-for-test.aspx" href="http://blogs.msdn.com/duat_le/archive/2010/02/25/wiql-for-test.aspx"&gt;http://blogs.msdn.com/duat_le/archive/2010/02/25/wiql-for-test.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971655" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author><category term="VSTS Testing" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS+Testing/" /><category term="VSTS2010" scheme="http://blogs.msdn.com/b/densto/archive/tags/VSTS2010/" /></entry><entry><title>Test Management Terminology: What is a Test Point?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2009/11/19/test-management-terminology-what-is-a-test-point.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2009/11/19/test-management-terminology-what-is-a-test-point.aspx</id><published>2009-11-19T16:15:45Z</published><updated>2009-11-19T16:15:45Z</updated><content type="html">&lt;p&gt;I was just getting started on what I intended to be my next post on this blog when I realized that the topic in that post would be much easier to discuss and understand if I first wrote about Test Points.&amp;#160; A Test Point is an object in our TCM Object Model that isn’t really explained or directly surfaced in the UI anywhere, the reason is that the user doesn’t necessarily need to know they’re working with a “Test Point” when they are.&amp;#160; &lt;/p&gt;  &lt;p&gt;A Test Point represents a Test Case to be run against a Test Configuration in a Test Suite.&lt;/p&gt;  &lt;p&gt;In MTLM, if you go to the Testing Center –&amp;gt; Plan tab –&amp;gt; Contents, you see the list of Test Case’s in each suite.&amp;#160; One of the columns in the grid is “Configurations” which shows a count of how many Test Configurations that Test Case is tested against in that suite.&amp;#160; When you go to Testing Center –&amp;gt; Test tab –&amp;gt; Run Tests and click on the same suite you will see an entry in the grid there for each Test Case / Test Configuration combination.&amp;#160; These are Test Points.&lt;/p&gt;  &lt;p&gt;Knowing this terminology shouldn’t fundamentally change the way you use the Test Management product, but it should help make future posts easier for me :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925506" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>TCM.exe – A General Introduction</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/densto/archive/2009/11/09/tcm-exe-a-general-introduction.aspx" /><id>http://blogs.msdn.com/b/densto/archive/2009/11/09/tcm-exe-a-general-introduction.aspx</id><published>2009-11-09T16:09:10Z</published><updated>2009-11-09T16:09:10Z</updated><content type="html">&lt;p&gt;Along with the new tools we’ve added in VSTS 2010 for testers comes the TCM.exe command-line application.&amp;#160; This command-line isn’t intended to be an alternative for everything you can do in Microsoft Test Manager (MTM) but rather to fill some gaps and enable some of the less common scenarios that still may be important for some testers.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can get a general overview of TCM.exe over on &lt;a href="http://msdn.microsoft.com/en-us/library/dd465192(VS.100).aspx"&gt;MSDN in this article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Some examples of things you can do with TCM.exe include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create an automated test run that contains test points across multiple test suites. &lt;/li&gt;    &lt;li&gt;Create an automated test run without specifying a Team Build (you can specify the build directory where automated test assemblies are picked up directly). &lt;/li&gt;    &lt;li&gt;Publish results from a trx (MSTest / VS run results file) against your Test Plan. &lt;/li&gt;    &lt;li&gt;Import VSTT Unit Tests (or even other VSTT test types) from your test assembly into your team project.&amp;#160; Creates a Test Case work item from each Unit Test (given some user specified constraints on what to import) and creates the association with the automated unit test for you.&amp;#160; You can also sync this set of imported tests with a specified Test Suite. &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919587" width="1" height="1"&gt;</content><author><name>Dennis Stone1</name><uri>http://blogs.msdn.com/Dennis-Stone/ProfileUrlRedirect.ashx</uri></author></entry></feed>