More Team System Class Notes
Date Published: 04 July 2005
Didn’t get a chance to post my notes for days two and three until now.
We spent some time looking at testing in general, and the theory of why to test
and how testing relates to quality. Briefly mentioned TDD and other
related disciplines. In VSTS, tests are code and are versioned along with
the code. The tool can auto-geneate tests per method or class. The
skeleton is generated along with stub code to call the method, but no additional
logic is inferred. It’s possible to step through tests in the debugger,
which can be done today with NUnit, but it seems easier with Team System.
Test Driven Development (TDD)
Red – Green –
Unit Tests must be
– Available to all devs
– Team Builds
Build Types – basically different build scripts – stored centrally
Choose a machine to perform builds
In VS Team Explorer, locate Team Build. VS communicates with Team
Foundation Server, which talks to the Build Server. The build information
is stored in the database. The build server pulls the build information
from the data store and performs the build. In theory, the build server
does not require a full version of visual studio — unfortunately in practice it
pretty much does, since without Visual Studio it cannot do any advanced options
like running tests, performing code analysis (FxCop), etc. All those tasks
are tightly coupled to Visual Studio today.
–Record a script – basically like
Application Center Test but nicer.
– Data Source – set up a data
source for the test, and use queries to populate posted data fields or user
– Set Credentials
– Add Test Callback
Generate Code –> one way process. For ultimate customization you can
convert a web test to code (your choice of .NET language) and basically do
anything you can do with code within the test.
– Add Validation
– Find Text — specify text, specify pass/fail if
– Extraction Rule — Pull out some data, use it in
a following request.
– Can run web tests, obviously, but can
also run unit tests, which is really slick
– Can be scheduled with
– Allows a bunch of options Application Center Test does
– Ramping Load (add x users every N
– Think Time randomized normally around recorded
– Impersonate various browser types and
connection speeds for clients
Work Item Queries
Work Items are the main thing tracked by Team System’s bug/task
tracker. It comes with a bunch of default queries and you can build your
own. You can save your custom queries in your own My Queries section, or
save them as team queries for all to use. If you customize a process
template, you can specify quich queries should be in there by default,
too. These queries are saved as *.wiq files, and use a SQL-like
syntax. A couple of good aliases to know are @Project which refers to the
current project and @Me which refers to the current user.
Performance Wizard – Profiling
Built into Visual Studio (under Tools). Allows two choices, sampling
– No Instrumentation
Some methods could be missed
– Basically polls the running process
periodically to see which method is currently being executed.
supported on Virtual Machines. If you try it you’ll get an error:
VSP1454 – Sampling is not supported on Virtual Machines.
– Injects code
– More accuracy
– Add code to the entry/exit of
every method, which notifies profiler when the code is reached.
Neither choice will allow line-level accuracy, only method level.
In case anybody encounters this error (from the lab): Launch Error –
Found two different objects associated with the same URI. The fix
for me was to restart Visual Studio.
– supports branching
– store pending changes in source
control but outside main repository – good for work in progress or if a
gatekeeper is used to review all code before it goes into main
– workspace – local working copy
Team System Source Control Does NOT Support:
Pinning (but branching is better)
– Sharing (sharing one file among
multiple projects; avoids need for multiple copies)
– Archive and
In fact, it’s fairly difficult to delete anything once it gets into VSTS
Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.