Friday, April 4, 2008

Visual Studio Team System: the Platform and the Tools

The New Role of Visual Studio

Microsoft’s Visual Studio has been for a long, long time a platform of choice for developers who use Microsoft technologies such as Visual Basic and ASP, C++ with MFC, C#, VB.NET and ASPX. With Visual Studio Team System, or VSTS, Microsoft offered something much bigger than a set of sophisticated compilers. They provided a platform for software life cycle processes and a tool for functional and performance test automation.

VSTS as a Software Life Cycle Platform

Visual Studio Team System allows the development of software life cycle processes and makes them easily available to all stakeholders. This is done through work items (VSTS term) that represent deliverables of software processes and workflows associated with these work items. For example, if we go for the basics, we can configure:


- Requirements management process and Requirement work item with meta-data and attachments

- Change management process with Change Requests and Risk work items and a workflow with customized statuses and approvals

- Defect tracking process with custom Defect report form, flow and reports

- Test Cases with meta-data and steps and Test Data work item.

The main advantage of VSTS as a software life cycle platform, in my eyes, is the ease with which it can be configured and maintained. Familiar Windows GUI standards, convenient tools and the ultimate flexibility of work item definitions and workflows are a huge plus. Powerful objects help a lot. For example, the capability to trace the history of changes for each work item, e.g., a defect, is built-in.

VSTS has a native SharePoint portal generation capability, which makes posting guidelines and visualizing data achievable without extensive design and programming. The illustration provides an example from a real project. The programming effort invested in it was a fraction of what would be done in another environment.

VSTS also integrates with Excel. I mean really integrates. You can edit work items in Excel and update them in VSTS with two or three clicks. No need for unreliable and time consuming steps to import/export each time you want to analyze and update something in Excel.

VSTS as a Test Automation Tool

Visual Studio Team System for Testers, a licensing variation on VSTS, provides a number of tools that can be used for testing. The most interesting of them is the Web Test – a tool for automating functional tests, the scripts of which can be used for performance testing as well.

In contrast to most of the test automation tools on the market, Web Test records HTTP transactions, not Windows API calls. When you click on a [Submit] button, what’s recorded is not the click but the transaction going to the server as a result. You can parameterize recorded transactions with test data, add or remove transactions, add validation points (called Validation Rules in VSTS lingo), etc. While it’s not possible to perform GUI validation with this tool, the scripts can be quite reliable in terms of being oblivious to minor changes in the application user interface – the curse of functional test automation. VSTS scripts can also detect defects that would be missed with GUI tools. Consider, for example, broken reference to a JavaScript or CSS file. These would never be discovered by another tool unless they caused changes in the application’s appearance, yet VSTS detects them without any extra effort.

The scripting languages used by Web Test are C# and VB.NET, with no shortage of books and classes to learn them. That, too, is an advantage. After all, C# is much more common than any proprietary testing tool language, and sooner rather than later will be more common than VBA of VBScript.

One Room, Many Windows

Architecturally, VSTS followed the idea of modularity. Work items are defined as XML files, so you can mess up one without ruining the other. Same applies to workflows.
The Team Foundation Server, VSTS’s core, has a Web Services API, which allows development of various clients.

TeamPlain, a web interface to VSTS, is a remarkable example. Initially developed by devBiz, it has found its respectful place among VSTS downloads after Microsoft's acquisition of the company in 2007. Besides allowing you to handle work items, it's also very light and undemanding. No Java applets, no ActiveX components, nothing to install on the user's computer. Just a decent web browser is sufficient. Works through firewalls and proxies.

Common Framework Advantages

There are a number of advantages in using a common platform for a number of major stakeholders of the software process. These stakeholders would include those in management, business analysts, developers, quality assurance and test engineers. Different sets of tools for each role, as good as they can be, will necessarily instill different concepts and different language – and as a result will require conscientious effort to communicate in common terms. Visual Studio Team System, being a common platform, provides universal terminology, one framework and improves communication as a result. Coupled with the ease of configuration and a set of testing tools, this has serious potential for more efficient software development resulting from people paying attention to contents rather than being bogged down in configuration details, trying to understand one another and make tools developed by different people for different purposes to communicate.
Add to that significant cost savings resulting from licensing, maintenance, and personnel training for one tool rather than three or four, and you will see that the economic argument in favor of Visual Studio Team System makes sense.


VSTS Community

Visual Studio Team System has a vibrant community developed around it: portals, blogs, forums and code samples sharing. Microsoft clearly decided to adopt some of the ways of the 2.0 technology community. Here are some links that will give you an idea:


http://teamsystemrocks.com/ – a great place to begin; has a number of useful tutorials.

http://msdn2.microsoft.com/en-us/library/ms182409(VS.80).aspx – in-depth articles about using VSTS for testing.

http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1408&SiteID=1 – VSTS functional and performance testing forum.


http://msdn2.microsoft.com/en-us/teamsystem/bb500979.aspx - how to download and install TeamPlain

Useful blogs:


http://blogs.msdn.com/dscruggs/


http://moustafa-arafa.blogspot.com/ - useful if you are into heavy customizations of VSTS