<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ed Glas's blog on VSTS load testing : Testing</title><link>http://blogs.msdn.com/edglas/archive/tags/Testing/default.aspx</link><description>Tags: Testing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Increasing the ROI of our Automation</title><link>http://blogs.msdn.com/edglas/archive/2009/06/13/increasing-the-roi-of-our-automation.aspx</link><pubDate>Sat, 13 Jun 2009 02:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9740580</guid><dc:creator>edglas</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/edglas/comments/9740580.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edglas/commentrss.aspx?PostID=9740580</wfw:commentRss><description>&lt;P&gt;A while back I posted &lt;A href="http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx" mce_href="http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx"&gt;this on automation&lt;/A&gt;. I want to resurface this topic now, as it has been on my mind a lot lately as we develop dev10. What is the “right” approach for automation? How do we make it pay off?&lt;/P&gt;
&lt;P&gt;Automation is hugely important for us. It enables us to ensure our software works on a myriad of OS (XP, Vista, Win7, Server 2003, Server 2008), processor architecture (x86, ia64), and language (English, German, Japanese, Chinese, etc.) combinations. &lt;/P&gt;
&lt;P&gt;At the end of the day, return on investment is what it is all about. Is it faster to develop and maintain an automated test case, or simply run the tests manually? If over the lifetime of a test case you spend more time fixing it than it would have taken to run the test manually for each time you ran the automated test, that test has not paid off. This is basic and obvious, but often times get overlooked when considering automation.&lt;/P&gt;
&lt;P&gt;Going back a bit in history to the VS 2005 release when we initially introduced load testing, we made a few huge mistakes with our approach to automation, mistakes which I see others repeating over and over:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;My test team wrote automation exclusively using UI automation. &lt;/LI&gt;
&lt;LI&gt;My test team owned developing and maintaining the automation. &lt;/LI&gt;
&lt;LI&gt;Dev “unit tests” were not considered “automation”.&lt;/LI&gt;
&lt;LI&gt;Devs and testers used different test automation frameworks.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;With dev10, we have reversed each of these, and are benefitting greatly from it.&lt;/P&gt;
&lt;P&gt;One thing I really want to emphasize is the cost of maintaining our UI automation. I have not looked at the exact number, but &lt;STRONG&gt;in the course of developing dev10 nearly every single UI automation test case has broken&lt;/STRONG&gt;. Contrast that with our tests that test at the API layer, I estimate that &lt;STRONG&gt;fewer than 10% have broken&lt;/STRONG&gt;. To add insult to injury, the &lt;STRONG&gt;UI tests are hugely expensive to fix&lt;/STRONG&gt;. API tests that break nearly always give compile errors, which are easy to fix. UI tests do not fail until you run them, and then you have to grovel through the test log to figure out what UI controls have changed to cause the failure, make a fix, rerun the test (perhaps to find another failure), all of which is extremely time consuming. &lt;/P&gt;
&lt;H3&gt;Increasing our ROI: A Cost-Based Approach to Automation&lt;/H3&gt;
&lt;P&gt;For dev10, we have developed four methodologies for automation, and consider each when considering how to automate testing of particular functionality. We give preference to the lowest cost approach. That is, if we can use a cheaper approach to automate, we do it that way and we don’t automate everything through the UI. In fact, the UI is the least favored approach, and is only done if none of the other approaches will give us the coverage we need. The approaches, in order of preference, are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Unit tests&lt;/STRONG&gt; that run in the test process. Really “unit test” is a misnomer for most of these tests, as they typically test a broader area than a pure unit test. I prefer to call these tests API tests. The defining characteristics of these tests is that they are hosted by the test process. &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb.png" width=244 height=94 mce_src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;An example of this for our load test product is we have tests that run requests through our web test engine. &lt;BR&gt;&lt;BR&gt;Another example is in our TCM server product. Nearly all of the automation for TCM server has been developed using this approach. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Command line tests&lt;/STRONG&gt;. With this approach we have “unit tests” that spawn our command line. The test code then waits for the command to complete, and then uses APIs to validate the command did the right thing. We use this approach for both web and load test features and for our TCM server. &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb_1.png" width=410 height=112 mce_src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb_1.png"&gt;&lt;/A&gt; &lt;BR&gt;For example, for load tests we have tests that run a load test from the command line, then access the load test database to ensure the results were as expected. This gives us substantial coverage of our web and load test feature set. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;API tests&lt;/STRONG&gt; that run in the process under test. mstest has a feature that enables processes other than vstesthost.exe to host the test code. An example of this is ASP.NET unit tests, which run in the ASP.NET process. We take advantage of this extensibility point to add our client processes as host processes. &lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb_2.png" width=421 height=120 mce_src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/IncreasingtheROIofourAutomation_B225/image_thumb_2.png"&gt;&lt;/A&gt; &lt;BR&gt;An example of this is we run our new TCM test client Camano (aka Microsoft Test and Lab Manager) as a test host. This is a bit of a mind bender, but we also actually run VS as a test host! So devenv starts vstesthost which starts a second copy of devenv. Once VS is loaded, our test code runs and has access to our architectural layer “just beneath the glass” and enables us to run web and load tests in the IDE (e.g. open a project, open and edit load tests in the project, run them, validate the UI through code). &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;UI Automation&lt;/STRONG&gt;. With this approach, our test code instantiates the client under test, and drives it through the mouse and keyboard (we drive VS through MSAA, and we drive our TCM client using UIA). &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;The cost of UI automation is at least an order of magnitude&lt;/STRONG&gt; &lt;STRONG&gt;greater &lt;/STRONG&gt;than the other three approaches. Isn’t it ironic that we are introducing a new UI automation test type in dev10. If UI tests are so bad, why are we bringing them to market? While I maintain that they are very expensive, &lt;STRONG&gt;UI tests are also absolutely necessary&lt;/STRONG&gt;. There are some things we simply cannot test without them (like dialogs, or some integrated, cross-process end-to-end scenarios). But if I go back and look at the UI tests we developed for web and load tests in VS 2005, the vast majority of them could have been implemented using a cheaper alternative.&lt;/P&gt;
&lt;H3&gt;Engineering for Automation: Developing Testable Software&lt;/H3&gt;
&lt;P&gt;Developing these other automation approaches did not come for free. We have deliberately architected our software to enable each of these approaches, and spent time developing test frameworks and reference patterns for each approach. It has really paid off in a big way. If you look at our TCM tests, we maintain an extremely high pass rate (98% plus). Our “legacy” UI tests from the 2005 release are in bad shape.&lt;/P&gt;
&lt;H3&gt;Whose job is it anyway? &lt;/H3&gt;
&lt;P&gt;At the end of the day, it is the test team’s job to help us understand whether or not we are ready to ship. Automation plays a huge role in that, since we are able to run our automation suites unattended and generate test results relatively quickly and concurrently on many different configurations. The test team is responsible for ensuring we have the right set of automation in place help us understand where we are at.&lt;/P&gt;
&lt;H4&gt;Getting Testers and Developers on the Same Page&lt;/H4&gt;
&lt;P&gt;However, it is not solely the test team’s job to develop and maintain the automation. The test team develops the test plan, which includes the scenarios and functionality we want to automate, but &lt;STRONG&gt;both the dev and test team develop and maintain the automation&lt;/STRONG&gt;. If a developer is writing “unit tests” for a new API they are developing, they work off the test plan to develop one of the specified test cases. Tester do not duplicate this effort by developing “their own” automation to cover. A key tenet is that &lt;STRONG&gt;testers and developers use the same frameworks and methodologies for developing automation&lt;/STRONG&gt;. Testers are able to run tests developed by devs, and visa-versa. Going back to the mistakes we made in VS 2005, this simple methodology, along with considering the most cost-effective way to automate a given test case, is the key to fixing each of these mistakes.&lt;/P&gt;
&lt;P&gt;Similarly, it is the entire team’s job to maintain the automated tests. As I said earlier, maintenance is the hidden and huge cost of doing automation. Devs must fix any compile errors in tests introduced by their changes, and also must ensure that all P1 tests pass before checking in. Testers and devs share the load on ensuring all P2 and P3 tests maintain a high pass rate. We run these once a week and distribute the load on driving them to passing.&lt;/P&gt;
&lt;P&gt;I hope you can also learn from our mistakes, and use our experience to improve your approach to automation. &lt;/P&gt;
&lt;P&gt;Ed.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9740580" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edglas/archive/tags/Guidance/default.aspx">Guidance</category><category domain="http://blogs.msdn.com/edglas/archive/tags/tsbt-tst/default.aspx">tsbt-tst</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Test+Automation/default.aspx">Test Automation</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Testing/default.aspx">Testing</category></item><item><title>Elevating the Role of the Tester with Visual Studio 2010</title><link>http://blogs.msdn.com/edglas/archive/2009/05/19/elevating-the-role-of-the-tester-with-visual-studio-2010.aspx</link><pubDate>Tue, 19 May 2009 19:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9628598</guid><dc:creator>edglas</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/edglas/comments/9628598.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edglas/commentrss.aspx?PostID=9628598</wfw:commentRss><description>&lt;P&gt;I am very excited and proud to introduce the new testing features you’ll find in Visual Studio 2010. In addition to continuing to work on the performance testing tools, I have also been focusing on delivering a new set of products for the entire test team. Since most testing is done manually, we have really focused on the manual testers with this release. If you do testing or test management you will love the new features. We also are introducing a new solution for UI automation as well as improvements in web, load, and unit testing, and our testing framework. &lt;/P&gt;
&lt;P&gt;We have been working on this since before we shipped VS 2008, it is great to (finally) get the beta out. When we set out to define this release, we set forth a set of what we call value props that capture the value in the release. Using these as the frame, we built up the architecture and feature set to match. &lt;/P&gt;
&lt;P&gt;In this post, I’ll go over the over-arching themes for the test tools in dev10. Our GM Amit Chatterjee has a terrific set of posts on each of these feature areas on &lt;A href="http://blogs.msdn.com/amit_chatterjee/" mce_href="http://blogs.msdn.com/amit_chatterjee/"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;his blog&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;, be sure to check those out (I’ve linked to them throughout this post). Also be sure to check out the &lt;A href="http://msdn.microsoft.com/library/ms182409(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/ms182409(VS.100).aspx"&gt;beta version of our documentation&lt;/A&gt;, which takes a refreshing approach to product documentation.&lt;/P&gt;
&lt;H2&gt;Introduction to Team Test for Dev10&lt;/H2&gt;
&lt;P&gt;Visual Studio Team Test (VSTT10) for Dev10 introduces key new functionality for test management, manual testing, test lab management, and automated testing. Specifically, &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;VSTT10 introduces an entirely new tester-focused UI that will free Manual Testers from what they see as the developer-centric Visual Studio UI. This new UI (code named Camano) will be the console for test case authoring, management, execution and tracking. &lt;/LI&gt;
&lt;LI&gt;VSTT10 takes virtual test lab management to new heights by allowing virtual lab creation, configuration and deployment all integrated into the testing experience.&lt;/LI&gt;
&lt;LI&gt;VSTT10 significantly increases our investment in the Specialist Tester role by improving the capabilities and performance of load and web testing as well as introducing new UI automation capabilities through the Visual Studio IDE. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;VSTT10 introduces substantial new value propositions for software testers: 
&lt;OL&gt;
&lt;LI&gt;Make manual testers more effective by integrating test activity into the ALM and providing tools for managing, developing, recommending and executing tests.&lt;/LI&gt;
&lt;LI&gt;Enable manual testers to reliably and consistently create actionable bug reports via automatic data gathering, reducing debugging time and eliminating non-reproducible bugs. &lt;/LI&gt;
&lt;LI&gt;Ensure that both requirements and source code are adequately and transparently tested, ultimately answering the question "can we release?"&lt;/LI&gt;
&lt;LI&gt;Enable efficient collaboration between QA and the rest of the extended development team throughout all phases of the application lifecycle. &lt;/LI&gt;
&lt;LI&gt;Foster a collaborative tester community with an extensible platform that makes it easy to create and share new features and components that further enhance a tester’s productivity and effectiveness.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The core VSTT10 areas of test management, manual testing, lab management, and automated testing cut across each of these value propositions and create lasting value for test and development teams. 
&lt;H2&gt;Getting the Basics Right&lt;/H2&gt;
&lt;P&gt;VSTT10 lays the foundation to help you the tester be&amp;nbsp;more effective&amp;nbsp;at the essential aspects of your job. The idea is to “get the basics right” and create a toolset that appeals to all test teams as well as the extended development team.&amp;nbsp;You can watch&amp;nbsp;an overview video &lt;A href="http://channel9.msdn.com/shows/10-4/10-4-Episode-23-An-Introduction-to-Manual-Testing/" mce_href="http://channel9.msdn.com/shows/10-4/10-4-Episode-23-An-Introduction-to-Manual-Testing/"&gt;here&lt;/A&gt;.&amp;nbsp; 
&lt;H3&gt;An Emphasis on Test Management and Manual Testing&lt;/H3&gt;
&lt;P&gt;In talking to you, our customers, we found that many of you track&amp;nbsp;your testing effort using ad-hoc means and informal tools like Excel or Word. Most testing is performed manually by what we are calling &lt;I&gt;generalist testers&lt;/I&gt;. To this end, the main focus for VSTT10 is to offer solid test case management tooling as well as a differentiating experience for manual testing. Because we are targeting generalist testers and test managers, we chose to develop a new client&amp;nbsp;outside of&amp;nbsp;the Visual Studio shell. We really wanted to provide a simple, focused experience&amp;nbsp;for testers, and found we could not effectively do that with VS. We think you are going to really like the new client. 
&lt;H4&gt;TFS-based Test Planning and Authoring&lt;/H4&gt;
&lt;P&gt;VSTT10 integrates deeply with TFS to offer rich functionality for &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/17/test-planning-using-camano.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/17/test-planning-using-camano.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;test planning and authoring&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;. Test planning features enable the test manager to define which test cases to run as part of a specific test plan or testing effort. VSTT10 also incorporates test case authoring, including the ability to define test steps, attachments and to factor and re-use parts of tests into shared steps. Test cases also allow the manual tester to associate data with the test case making it easy to step through different rows of data within the same test case. 
&lt;P&gt;A tester adds structure to their test plans by organizing test cases into hierarchical test suites. Query-based suites are used to automatically include any test case that meets specific criteria. 
&lt;P&gt;Test configurations allow the tester to define valid configurations that will be covered in a test plan, and then assign which tests will run on which configurations. Again the recurring theme is to better organize a tester to perform more rigorous testing, and track which configurations have or have not been tested. 
&lt;P&gt;Test cases are assigned to different testers on a project and tracked by a test manager to allow for better team organization and management of the test effort during the testing phase. 
&lt;H5&gt;Linking Test Cases to Requirements and Bugs&lt;/H5&gt;
&lt;P&gt;Test cases are easily linked to requirements, which&amp;nbsp;enables test planning, test execution, and traceability. Linking requirements to test cases also enables rich reporting, such as the count of test cases per requirement and pass/fail/not run testing status per requirement. A tester can easily add a requirements-based suite to a test plan, which automatically adds any test case linked to the requirement to the test plan. 
&lt;P&gt;When a new bug is filed while testing, the bug is automatically linked to the test case that generated it. This enables the developer to quickly open the test case that generated the bug, as well as interesting reports on which test cases generate the most bugs. 
&lt;P&gt;Documentation links: &lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/dd286594(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286594(VS.100).aspx"&gt;Managing New Testing Efforts with Team Test&lt;/A&gt;, &lt;B&gt;&lt;A href="http://msdn.microsoft.com/library/dd286581(VS.100).aspx" mce_href=" http://msdn.microsoft.com/library/dd286581(VS.100).aspx"&gt;Defining your testing effort using test plans&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;
&lt;H4&gt;A Great Manual Testing Experience&lt;/H4&gt;
&lt;P&gt;The VSTT10 client offers a differentiating and highly productive &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/28/the-microsoft-test-runner-innovation-for-the-manual-tester.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/28/the-microsoft-test-runner-innovation-for-the-manual-tester.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;manual testing experience&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;. The capabilities around bug capture alone are not to be found in any competitors offering and will substantially increase productivity around bug finding, reporting and triaging. . In addition, the tester can easily capture screen shots, mark tests or steps as pass/fail and manage their bug finding techniques at a level not possible in other tools. 
&lt;P&gt;A key differentiator for manual testing is in &lt;I&gt;fast forward manual testing&lt;/I&gt;. This innovative feature enables a tester to automatically record during testing, and then replay these actions the next time that same test is run. Automation can also be associated with shared steps, enabling testers to fast-forward through common steps that are repeated across test cases. This will allow testers to quickly fill in form fields and other types of repetitive data entry activity by replaying the form fill actions recorded in previous tests. The idea is to increase productivity by focusing automation on repetitive tasks and freeing a tester to concentrate on finding bugs and gaining better test coverage. 
&lt;P&gt;Documentation links: 
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/dd286715(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286715(VS.100).aspx"&gt;Creating manual test cases&lt;/A&gt;, &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/library/dd286725(VS.100).aspx" mce_href=" http://msdn.microsoft.com/library/dd286725(VS.100).aspx"&gt;Running Manual Tests with Test Runner&lt;/A&gt;, &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/library/dd286714(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286714(VS.100).aspx"&gt;Recording and Playing Back Manual Tests&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;H4&gt;Are We Ready to Ship?&lt;/H4&gt;
&lt;P&gt;A key goal for test managers is answering the question “are we ready to ship?” Arguably, answering this question is the primary mission of a test team, and doing so has many facets. The test team must shine a light in dark places of the application under test in order to find problems before customers do. This becomes as much an exercise in understanding what hasn’t been tested as what has. To that end, the VSTT10 will collect and report data to answer questions like: 
&lt;UL&gt;
&lt;LI&gt;Do we have adequate test coverage of our requirements and features?&lt;/LI&gt;
&lt;LI&gt;Have we run all our tests?&lt;/LI&gt;
&lt;LI&gt;Have we tested all of our target configurations adequately?&lt;/LI&gt;
&lt;LI&gt;Have we tested the feature areas adequately?&lt;/LI&gt;
&lt;LI&gt;Have we tested the changes?&lt;/LI&gt;
&lt;LI&gt;What are we missing in our regression suite?&lt;/LI&gt;
&lt;LI&gt;Are we on track to complete our testing?&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To answer these questions, VSTT10 makes it easy to: 
&lt;UL&gt;
&lt;LI&gt;Define and organize test cases. &lt;/LI&gt;
&lt;LI&gt;Define and manage which test cases are to be executed in a test effort. &lt;/LI&gt;
&lt;LI&gt;Link test cases to requirements and features, and associate them with areas of the application.&lt;/LI&gt;
&lt;LI&gt;Manage which configurations test cases are run on.&lt;/LI&gt;
&lt;LI&gt;Seamlessly track which tests have been authored and run, and for those that have been run track pass/fail.&lt;/LI&gt;
&lt;LI&gt;View which tests have been impacted by code changes.&lt;/LI&gt;
&lt;LI&gt;View reports which surface this data to enable the test manager to answer the questions above.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;VSTT10 achieves this by allowing the tester to define relationships of test cases to requirements and bugs in TFS, and to define the set of test cases and configs to run as part of a test plan. VSTT10 then seamlessly captures test results, ultimately storing this data in the TFS warehouse. 
&lt;P&gt;A basic set of reports are available through the process template and hosted on the SharePoint portal.Data is surfaced through reports on top of TFS. Since the data is in the TFS warehouse, reporting services or Excel reporting can be used to flexibly mine the data. A very rich set of data is available and can be related to metrics and measures currently captured by a product team. The warehouse stores test results over the life of a project, and those results can be sliced by build, area path, suite, and configuration. 
&lt;P&gt;This allows a test manager and stakeholders to generate reports such as the set of tests run for a given plan, the set of tests not run a given plan, and for those that were run what the results were. Historical results are available in the warehouse, providing stake holders rich visualizations of testing activity and quality trends. 
&lt;P&gt;Because test data can be related to requirements, a test manager can generate reports that show pass/fail per requirement, the number of bugs per requirement, test results per area, per suite, per build, and so forth. In all a very rich set of information is available in VSTT10. Check out Amit’s blog post on &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/05/18/reporting-on-test-management-data.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/05/18/reporting-on-test-management-data.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;reporting&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;. 
&lt;H3&gt;Collaboration with Dev&lt;/H3&gt;
&lt;P&gt;VSTT10 provides tight integration between developers and testers through the free flow of information between them. Not only can developers and testers share the information stored in TFS, but information required by developers from ongoing testing is gathered automatically as described below. Also for the first time developers can get visibility into which areas of the product have and haven’t been tested, and better understand where their features are at. 
&lt;H4&gt;Actionable Bug Capture&lt;/H4&gt;
&lt;P&gt;The basic flow of information from testers to developers is primarily through bugs. The effort wasted chasing down bugs and reproducing errant behavior is a severe pain point for developers and testers alike. “It works on my box” is the norm. VSTT10 takes this on head-on through information rich bug capture. 
&lt;P&gt;In order to enable this rich flow of information, VSTT10 delivers an innovative technology called &lt;I&gt;data collectors&lt;/I&gt;. Data collectors enable testers to collect information from client and server machines in the test lab while they are testing. Data collectors enable a wide range of scenarios, including rich bug capture. 
&lt;P&gt;As test environments can be very complicated, and not all testers are experts at configuring the server system, an important aspect of data collectors is that they “just work” out of the box and are easy to configure and use. 
&lt;P&gt;A case in point is an essential new technology for bug capture known as &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/04/21/diagnostic-data-adapters-changing-how-developers-and-testers-work-together-part-2-of-2-the-diagnostic-trace-collector.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/04/21/diagnostic-data-adapters-changing-how-developers-and-testers-work-together-part-2-of-2-the-diagnostic-trace-collector.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;Historical Debugging&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;I&gt;&lt;/I&gt;, which enables developers to debug exactly what was going on on a machine at the time a bug occurred. 
&lt;P&gt;As useful as historical debugging is to developers, the &lt;I&gt;Action Recorder&lt;/I&gt; is a technology useful for developers and testers alike. It is based on VSTT10’s UI automation recorder, and captures user actions the tester takes and records that information as part of the bug report. The &lt;I&gt;Screen Capture&lt;/I&gt; tool enables the tester to easily take screen captures, and the &lt;I&gt;Video Recorder&lt;/I&gt; records the testers desktop and links the video to the bug. 
&lt;P&gt;Documentation links: &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/dd286743(VS.100).aspx" mce_href=" http://msdn.microsoft.com/library/dd286743(VS.100).aspx"&gt;Setting Up Machines and Diagnostic Information to be Collected Using Test Settings&lt;/A&gt;, &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/library/dd286727(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286727(VS.100).aspx"&gt;Creating A Diagnostic Data Adapter to Collect Custom Data or Impact a Test System&lt;/A&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; 
&lt;H4&gt;The Essential Role of Builds&lt;/H4&gt;
&lt;P&gt;As bugs represent the primary flow of information form test to dev, the flow from developers to testers is through the build. Testers pick up new builds to get new features and requirements to test and bugs to regress. The developers’ efforts are realized in the build. As such the build becomes fulcrum of the dev/test relationship and takes a first class role in the VSTT10 product. When selecting a new build, the test manager sees which work items were completed as part of the build and act on those. She &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/04/11/diagnostic-data-adapters-changing-how-developers-and-testers-work-together-part-1-of-2-the-test-impact-collector.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/04/11/diagnostic-data-adapters-changing-how-developers-and-testers-work-together-part-1-of-2-the-test-impact-collector.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;sees which tests were impacted&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt; by changes in the build and assign them to be run. The ability to see impacted tests is especially important in the end-game just before releasing to production, when the test manager and stakeholders need to make sure they have adequately tested the bug fixes that were made in the final builds. 
&lt;P&gt;Documentation links: &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/dd286589(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286589(VS.100).aspx"&gt;Recommending Tests to Run That are Affected by Code Changes&lt;/A&gt;, &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://msdn.microsoft.com/library/dd286586(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd286586(VS.100).aspx"&gt;Determining Which Builds Have Bug Fixes, New Features or Requirements&lt;/A&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; 
&lt;H4&gt;Preparing the Test Environment&lt;/H4&gt;
&lt;P&gt;The build is also central to ensuring high quality builds are passed to testers and assists in preparing the test environment for new builds. VSTT10 enables integration with VMM and Windows Workflow for automated provisioning and setting up the test environment as part of the build process. With VSTT10 build and deployment engineers can define a workflow script to provision machines from VMM, install the latest build, and then run functional BVT tests against the installed build. These can then be leverage by both the development and test teams to quickly set up complicated test environments. VS 2008 limited the level of testing to unit testing of assemblies whereas VSTT10 enables full functional build verification testing. 
&lt;P&gt;Testers leverage test environments from within the test client to quickly re-use environments. Network fencing enables testers to have more than one instance of the same VM running at the same time. This enables one person on the test or development team to get a test environment set up, and others on the team to quickly clone the environment for testing. 
&lt;H2&gt;Test Automation in VSTT10&lt;/H2&gt;
&lt;P&gt;Test automation is a key and strategic investment area for VSTT10. Every test team wants to be more efficient, and automation is one way to increase efficiency. A goal for VSTT10 is to enable teams to define and run a automated regression suites to validate their primary scenarios are still intact. These automated regression suites are then used both as build verification tests and as a final set of regression tests to run before shipping. 
&lt;H3&gt;The Record and Playback Engine&lt;/H3&gt;
&lt;P&gt;A primary investment in VSTT10 is the record and playback engine, which is leveraged in both automated tests and the &lt;I&gt;&lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/28/the-microsoft-test-runner-innovation-for-the-manual-tester.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/02/28/the-microsoft-test-runner-innovation-for-the-manual-tester.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;fast forward for manual testing&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/I&gt; feature. A great deal of engineering has gone into ensuring record and playback “just works”. Record and Playback supports IE, Winforms, and WPF front ends. Silverlight support and playback on Firefox are planned for an out of band release (between dev10 and dev11). The RnP technology also supports a rich extensibility mechanism for extending to custom controls within these UI technologies as well as new browsers and future UI frameworks. This technology provides the underpinnings for our future UI Automation solutions. 
&lt;H3&gt;UI Automation&lt;/H3&gt;
&lt;P&gt;VSTT10 includes a new &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/03/14/coded-ui-test.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/03/14/coded-ui-test.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;“Coded UI”&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt; UI automation test type which is available in Visual Studio. Coded UI tests are squarely targeted at the more sophisticated end of the specialist tester segment, as it requires development skills. The “Coded UI” test type provides an action recorder, validation tool, and comprehensive API. 
&lt;P&gt;Coded UI Tests are built on the mstest unit testing framework, providing a familiar and common paradigm for testers and developers. Test authors leverage the full power of VS, the .NET framework, and managed languages to develop their automation. 
&lt;H3&gt;Managing Automated Tests&lt;/H3&gt;
&lt;P&gt;Test management capabilities enable testers to track which test cases have or have not been automated, and to track automated test results over time. As part of the ability to scale-up test execution, VSTT10 enables you to define and run automated suites that span across VS solutions. 
&lt;P&gt;Documentation links: &lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;A href="http://msdn.microsoft.com/library/dd380741(VS.100).aspx" mce_href=" http://msdn.microsoft.com/library/dd380741(VS.100).aspx"&gt;How to: Associate an Automated Test With a Manual Test Case and Run It&lt;/A&gt;, &lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;A href="http://msdn.microsoft.com/library/dd465191(VS.100).aspx" mce_href=" http://msdn.microsoft.com/library/dd465191(VS.100).aspx"&gt;How to: Create Test Cases from an Assembly of Automated Tests&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/B&gt;
&lt;H2&gt;Performance Testing in VSTT10&lt;/H2&gt;
&lt;P&gt;VSTT10 builds on the success of &lt;A href="http://blogs.msdn.com/amit_chatterjee/archive/2009/01/29/web-and-load-testing-with-visual-studio-team-system.aspx" mce_href="http://blogs.msdn.com/amit_chatterjee/archive/2009/01/29/web-and-load-testing-with-visual-studio-team-system.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;VSTT 2008 performance testing tools&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;, with &lt;A href="http://blogs.msdn.com/edglas/archive/2009/05/18/dev10-beta-1-available.aspx" mce_href="http://blogs.msdn.com/edglas/archive/2009/05/18/dev10-beta-1-available.aspx"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;innovative new tools&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt; that help testers find performance problems and enable development to fix them. 
&lt;P&gt;VSTT10 introduces WAN emulation for both manual and automated performance testing. Network emulation enables you to see how your application will perform over a slow link. 
&lt;P&gt;New advances in Web Performance Tests (formerly known as Web tests) make it far easier to debug them, and powerful new extensibility hooks in the web test recorder enable custom rules that can be targeted at specific types of sites so that record/playback will “just work” against those sites. 
&lt;P&gt;Load tests leverage data collector collectors to collect information from the system under test during a load test. A significant advancement in this area is the ability to remotely collect a profiler trace from the system under test, enabling testers to collect code-level performance data from the server during the test, so developers will have enough information to fix performance bugs. 
&lt;P&gt;The timing details view enables the performance tester to visualize virtual user activity, and quickly drill into a complete virtual user session log from a failed iteration. And new advances in reporting will enable you to easily share performance test results and trends with your team. 
&lt;H2&gt;Advances in MSTest&lt;/H2&gt;
&lt;P&gt;Dev10 introduces significant advances in mstest extensibility, with new APIs for executing tests and getting results. This enables many new scenarios, including introducing new test clients outside of visual studio. 
&lt;P&gt;Dev10 also introduces test categories, which enable you to categorize tests (think tagging them) and dynamically select a set of tests that are in a particular category. A test can belong to multiple categories at a time. This enables you to move away from static vsmdi test lists, providing a richer way of selecting tests for BVTs. 
&lt;H2&gt;Mapping Value Props to Feature Areas&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Make manual testers more effective by integrating test activity into the ALM and providing tools for managing, developing, recommending and executing tests.&lt;/LI&gt;
&lt;LI&gt;Enable manual testers to reliably and consistently create actionable bug reports via automatic data gathering, reducing debugging time and eliminating non-reproducible bugs. &lt;/LI&gt;
&lt;LI&gt;Ensure that both requirements and source code are adequately and transparently tested, ultimately answering the question "can we release?"&lt;/LI&gt;
&lt;LI&gt;Enable efficient collaboration between QA and the rest of the extended development team throughout all phases of the application lifecycle. &lt;/LI&gt;
&lt;LI&gt;Foster a collaborative tester community with an extensible platform that makes it easy to create and share new features and components that further enhance a tester’s productivity and effectiveness.&lt;/LI&gt;&lt;/OL&gt;&lt;B&gt;&lt;/B&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=0 unselectable="on"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=115&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Effective Generalist Testers&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Actionable Bugs&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Can we Release?&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Collab with Dev&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Partners / Extensibility&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Planning&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Authoring&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Case Linking&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Runner&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Reporting&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Data Collectors&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;RnP&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Automation&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Test Impact&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Build Integration&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Lab Management&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=115&gt;
&lt;P&gt;Public APIs&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=106&gt;
&lt;P&gt;Yes&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;As you can see from this paper, this is a compelling release! But don’t take my word for it, try it out! &lt;A href="http://msdn.microsoft.com/subscriptions/downloads/default.aspx?pv=18:370" mce_href="http://msdn.microsoft.com/subscriptions/downloads/default.aspx?pv=18:370"&gt;&lt;STRONG&gt;&lt;FONT color=#006bad&gt;Download dev10 beta1 today&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;. You’ll need to download and install TFS server. The new test client is installed with VSTS in beta 1 (we are working on a stand-alone installer for beta 2). Once you have the product installed, here is a &lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/dd380763(VS.100).aspx" mce_href="http://msdn.microsoft.com/library/dd380763(VS.100).aspx"&gt;Quick Start Guide to get you up and running&lt;/A&gt;.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9628598" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edglas/archive/tags/Visual+Studio+Team+Test/default.aspx">Visual Studio Team Test</category><category domain="http://blogs.msdn.com/edglas/archive/tags/tsbt-tst/default.aspx">tsbt-tst</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Performance+Testing/default.aspx">Performance Testing</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Unit+Test/default.aspx">Unit Test</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Test+Automation/default.aspx">Test Automation</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/edglas/archive/tags/VSTS2010/default.aspx">VSTS2010</category></item><item><title>JW post on MS Testing - my observations</title><link>http://blogs.msdn.com/edglas/archive/2008/08/19/jw-post-on-ms-testing-my-observations.aspx</link><pubDate>Tue, 19 Aug 2008 15:17:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8878594</guid><dc:creator>edglas</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edglas/comments/8878594.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edglas/commentrss.aspx?PostID=8878594</wfw:commentRss><description>&lt;p&gt;Check out James's recent post with the eye-catching title &lt;a href="http://blogs.msdn.com/james_whittaker/archive/2008/08/11/if-microsoft-is-so-good-at-testing-why-does-your-software-suck.aspx"&gt;“if Microsoft is so good at testing, why does your software suck?”&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I have another angle on this, which I saw first hand with our Whidbey release. It goes to some of the themes I refer to in my &lt;a href="http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx"&gt;So you want to automate your test cases?&lt;/a&gt; post. We hire developers as testers. Our tester role is "Software Development Engineer in Test", or SDET. Our SDETs are awesome, our testers here at Microsoft are way better than testers I have worked with previously. But one problem I've seen is that because of our huge emphasis on test automation at Microsoft, sometimes ad-hoc or exploratory testing suffers because of it. That is, sometimes we're so busy writing automation, automation harnesses, and automation tools, we don't spend enough time in our customers shoes banging on our features and trying to break them. Almost all of the bugs we find are found through manual testing, not through automated testing. On my team we brainstorm on tests to run in order to break new features we're developing, schedule specific tasks in TFS for testers to beat on features, and also have dedicated bug bashes for our features.&lt;/p&gt; &lt;p&gt;Of course we can always do better, the recent &lt;a href="http://blogs.msdn.com/billbar/archive/2008/08/04/bug-in-vsts-2008-sp1-causes-think-time-for-redirected-requests-to-be-ignored-in-a-load-test.aspx"&gt;load test regression&lt;/a&gt; that got through in SP1 is evidence of that. I wish we had had an automated test for that one, we do now. :) The timing of finding this bug was unfortunate, and we had another like it in RTM, was that one of our internal customers from the Services Test Labs found this bug in SP1 beta just as the door closed on SP1. We need to drive more adoption of our betas so we can catch these problems before RTM. The other thing is we were pretty aggressive in SP1 about getting fixes and features in that we heard about from customers. This regression was caused by one of those customer-reported problems ("Thinktime that's set via plugin code is ignored"). I don't see that changing, SPs are a chance to get value back to you, we need to take advantage of that. Of course we want to be smart about that, and make incremental changes that pack a lot of power but do not introduce a lot of risk.&lt;/p&gt; &lt;p&gt;Ed.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8878594" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edglas/archive/tags/Visual+Studio+Team+Test/default.aspx">Visual Studio Team Test</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Testing/default.aspx">Testing</category></item><item><title>So you want to automate your test cases?</title><link>http://blogs.msdn.com/edglas/archive/2008/08/15/so-you-want-to-automate-your-test-cases.aspx</link><pubDate>Fri, 15 Aug 2008 15:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8869533</guid><dc:creator>edglas</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/edglas/comments/8869533.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edglas/commentrss.aspx?PostID=8869533</wfw:commentRss><description>&lt;P&gt;Many CIOs and Test Managers are interested in increasing the level of automation in testing efforts. What is automation good for? What is the best way to go about this? How much automation is enough? And who should do it, and when?&lt;/P&gt;
&lt;P&gt;I've heard on more than one occasion test managers say that 100% of all test cases should be automated. Really??? The first thing to assess is what are your goals for automation. Automation is about running the same tests over and over again in an efficient way, which can achieve two purposes:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Regression testing. This about finding bugs in functionality that at one time was working. &lt;/LI&gt;
&lt;LI&gt;Matrix or configuration testing. This is about running the same test against the same build, but in different configurations. &lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;Regression Testing&lt;/H3&gt;
&lt;P&gt;Regression testing comes in two flavors, depending on the phase of the development cycle you are in. The first is BVT or smoke tests, which determine whether or not the product is "off the floor" or has basic functionality working. For example, if you are doing regular builds as hand offs from dev to test, you want to make sure the product is "self-test", or basically working so the testers can use it. If, for example, login fails with no workaround, the test will be blocked, so there's no point promoting the build to test. BVTs are a small number of tests that validate the basic functionality of the software.&lt;/P&gt;
&lt;P&gt;Another flavor of regression testing is at project shutdown time. Here you are stabilizing new features preparing to deploy the software to production or ship it to customers. In the process of building new features, did the dev team break any existing features? Automation can help find these types of failures.&lt;/P&gt;
&lt;P&gt;A third important scenario is software maintenance. Say you have a hot bug fix you want to roll into production. How can you lower the risk of the bug fix breaking other features? Or if you are taking a security patch for the OS, how can you be sure your critical applications will continue to work? Just like the project shutdown scenario, automation can help here too.&lt;/P&gt;
&lt;P&gt;So if you are doing automation for regression testing,&amp;nbsp;a key question is how much testing needs to be done before you are ready to ship? Look at automating those parts. I always recommend crawl, walk, run. Before investing a ton of effort into a given strategy, be sure you understand the downstream costs. I recommend starting with a few key scenarios and running them through a lifecycle to get a feel for costs.&lt;/P&gt;
&lt;H3&gt;Config Testing&lt;/H3&gt;
&lt;P&gt;Another use of automation is if you have to run the same set of tests against many different configurations. This is most often the case for ISVs shipping software, where their software may be run in a variety of environments. For example, web and load tests are available in both VSTT and VSTS, both of which are available in 8 languages and on XP, Vista, Windows 2003, Windows 2008. And of course the OS comes in a variety of languages too, then there are other configs like running as Admin vs. normal user, SQL 2005 and 2008, etc. You can see the combinatorics are crazy here, each dimension is a multiplier. So we are smart about making sure we cover each in at least one test run, but you can see we have to run the same set of tests many, many times on different configs.&lt;/P&gt;
&lt;P&gt;If you have a browser app, another example may be testing it with different browsers (although here you're likely interested in page layout type bugs, which are difficult to detect in automation).&lt;/P&gt;
&lt;H3&gt;Automation is no replacement for manual testing&lt;/H3&gt;
&lt;P&gt;Fundamentally automation is about running tests that used to work, or worked on one config, and then no longer work when re-run (except in the case of TDD of course, that's another topic :)). &lt;/P&gt;
&lt;P&gt;You will definitely get the highest bug yields from manual testing, also manual testing allows testers to be creative in finding bugs. Automation is not creative at all, it typically just does the same thing over and over.&lt;/P&gt;
&lt;P&gt;A typical cycle for testing is to make sure all features are tested manually first, then select which test cases to automate.&lt;/P&gt;
&lt;H3&gt;The Hidden Cost of Automation: Maintenance&lt;/H3&gt;
&lt;P&gt;In order to reliably determine regressions, your tests must be reliable and working. As the application changes, you will need to fix your tests to match the application. If you don't do this your automation will turn into a smolder pile that is really good for nothing. Take this example, let's say you've automated 100 tests for a given release. Then you do a second release, and as you go into feature complete and the stabilization phase you go to re-run your tests and find that 75 of them are now failing.&amp;nbsp; As you investigate, you find that the UI changed, which caused your scripts to break. So now you are left with fixing your automation up, which for UI tests is really no easy task and often it takes longer to fix an automated test case than it did to develop it in the first place.&lt;/P&gt;
&lt;P&gt;If have seen on more than one occasion where the effort to maintain a set of tests outweighed the effort to run the test cases manually. I've also seen it where the test team is so wrapped up in building and maintaining automation that actual manual testing falls by the wayside, and as a result bugs make it out to customers or are found late in the cycle.&lt;/P&gt;
&lt;P&gt;I can't say this enough, the downstream cost of automating a test is huge, particularly if automating at the UI layer. UI tests have the advantage that they are easy to create and get started on, and easy to understand, but the disadvantage that they are significantly less reliable than unit (or I prefer the term API) tests, and more prone to break due to changes in the application.&amp;nbsp; API tests have the huge advantage of failing with compile-time errors rather than run-time errors, and are easier to maintain.&lt;/P&gt;
&lt;P&gt;Also where as unit tests are written by developers as they complete new features, you are likely best off holding off on automating at the UI layer until later in the cycle once the changes in the UI settle out. &lt;/P&gt;
&lt;P&gt;I love James Bach's classic paper &lt;A href="http://www.satisfice.com/articles/test_automation_snake_oil.pdf" mce_href="http://www.satisfice.com/articles/test_automation_snake_oil.pdf"&gt;Test Automation Snake Oil&lt;/A&gt;. It's almost 10 years old, but still applicable today.&lt;/P&gt;
&lt;H3&gt;Best Practices for Automation&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Keep the UI layer as thin as possible, and do as little automation at the UI layer as possible. Architect your application to allow testing at different layers via APIs, rather than driving all automation through the UI. This is referred to as proper architectural layering, where you have defined clear architectural layers in the software. Tests below the UI layer are developed as unit tests, so they have the advantages of lower cost of maintenance and less fragility.&lt;BR&gt;Here's the architecture of the test case management product we are developing, which enables this. We're currently focusing our test case development at the client API layer and action API layer, with a few UI tests for end-to-end testing.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/Soyouwanttoautomateyourtestcases_78BC/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/Soyouwanttoautomateyourtestcases_78BC/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=250 alt=image src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/Soyouwanttoautomateyourtestcases_78BC/image_thumb.png" width=362 border=0 mce_src="http://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/Soyouwanttoautomateyourtestcases_78BC/image_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Ensure developers and testers work together.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Developers should develop unit tests for the layers they are developing as they go. Testers should leverage developer unit tests for config testing. For example, if your application supports different server configurations, and you have dev unit tests that test the server, testers should run these tests against the different supported configs.&lt;/LI&gt;
&lt;LI&gt;Avoid duplication of tests. If developers have a rich set of business object unit tests to test the business logic, all of these tests likely does not need to be repeated at the UI layer. For the products we are developing, our test team develops the test plan and test cases, we tag which ones we want to automate, and both developers and testers work off this list.&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt;
&lt;H3&gt;Getting started with VS 2008&lt;/H3&gt;
&lt;P&gt;You can start now with automation using VS 2008 unit tests to target the layers in your software, and web tests to test your server at the http layer. Web tests largely fall into the same boat as UI automation tests for maintenance and development cost. They were primarily developed for load testing, but can also be used for functional testing of the server. Since they do not drive the application at the UI layer, but rather the http layer, they are harder to work with than UI tests.&lt;/P&gt;
&lt;P&gt;You can also automate your builds using TeamBuild, and configure BVT unit tests to run as part of the build to ensure the build quality. Test results are published to TFS, so the entire team can see the results of the tests and quality of the build.&lt;/P&gt;
&lt;P&gt;There are several different test partners offering UI automation solutions for VS, including Automated QA and ArtOfTest.&lt;/P&gt;
&lt;P&gt;We are also working on UI automation technology for our next release, as well as TFS server-based test case management and a manual test runner.&lt;/P&gt;
&lt;P&gt;Ed.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8869533" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edglas/archive/tags/Guidance/default.aspx">Guidance</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Test+Automation/default.aspx">Test Automation</category><category domain="http://blogs.msdn.com/edglas/archive/tags/Testing/default.aspx">Testing</category></item></channel></rss>