13 September 2010

Visual Studio 2010 Testing Tools Round Up

Yesterday, I co-presented a session covering some of the testing tools available in Visual Studio 2010.  Overall, the talk seemed to go very well.  In fact, the majority of the feedback responses were highly positive.  However, there was one negative comment – “This talk really was about Team Foundation Server.  Without this expensive application, the information provided is useless.

This comment was, no doubt, formulated based on a statement I had made near the start of my talk.  I pointed out that Microsoft Test Manager relied on Team Foundation Server (TFS) and that it could not be utilized without it.  In hindsight, I should have clearly pointed out that the remaining test tools found within the various SKUs of Visual Studio 2010 are not reliant on TFS to be functional.  Also, although it wasn’t directly relevant to the topic at hand, I should have pointed out that TFS is now included with Visual Studio Ultimate/Test Professional (w/MSDN) – thereby possibly addressing the “…expensive application…” portion of the above statement.

To address some of the confusion around the various testing tools available within the various Visual Studio 2010 SKUs, I’ve create the following graphic (note: each of the SKUs listed below are assumed to have a corresponding MSDN subscription):


For full comparison of Visual Studio features, click here

If you’re not familiar with all of these testing features found in Visual Studio 2010, check out the links below for more details.

  • Lab Management REQUIRES TFS – Lab Management lets you manage a collection of virtual machines, templates, and virtual environments for your Team Foundation team project. You can use these environments to develop, test, or run your application.  Many of the Lab Management features can be integrated into your automated builds as well.
  • Microsoft Test Manager - REQUIRES TFS – this is a brand new product with Visual Studio 2010 providing the following capabilities:
    • Create Test Plans
    • Create/Manage Test Suites
    • Create/Manage Test Configurations (e.g. Operating System, Web Browser, etc.)
    • Create/Manage Test Cases
    • Manual Testing – with the ability to record test actions
    • “Fast Forward” capabilities – the ability to automatically run through a selected set of manual test steps that have been previously recorded.
    • Lots more
  • Basic Unit Tests – Unit tests give developers and testers a quick way to look for logic errors in the methods of classes in Visual C#, Visual Basic, and Visual C++ projects.  TFS is not required for unit tests to operate in Visual Studio.  However, if you have TFS, the results can be published for later review.
  • Database Unit Tests – You can use database unit tests to establish a baseline state for your database and then to verify any subsequent changes that you make to database objects.  NOTE: In Visual Studio 2010 Professional, you can run database unit tests but you cannot create or modify tests in the designer.
  • Generic Unit Tests - A generic test typically wraps an automated test or tool that was previously created outside the Visual Studio Team System framework. Using generic tests, therefore, is a means for taking advantage of an existing test infrastructure.
  • Ordered Tests - An ordered test contains other tests (e.g. unit, web, generic, manual, and ordered tests, but not load tests) that are meant to be run in a specified order.
  • Coded UI Tests - You can use Visual Studio 2010 Ultimate or Visual Studio 2010 Premium to create automated tests of the user interface (UI) known as coded UI tests.
  • Load Tests - You use a load test to encapsulate non-manual tests, that is, unit, Web, generic, ordered tests, and then run them simultaneously by using virtual users. Running these tests under load generates test results, including performance and other counters, in tables and in graphs.
  • Web Performance Tests - Web tests consist of an ordered series of HTTP Requests that you record in a browser session using Microsoft Internet Explorer. You can also create a coded Web test, in which you can add more advanced features, such as flow control.
  • Test Impact Analysis - By using Test Impact Analysis during code development, you can identify the methods in a test project that have been affected by code changes in your managed code solution.
  • Code Coverage - You can use the code coverage feature of Visual Studio Application Lifecycle Management (ALM) to determine what proportion of your project's code is actually being tested using unit tests.