From Scrum for Team System, which was found via Rob Caron’s blog post Scrum for Team System Released.

Scrum for Team System is a free Agile Software Development Methodology add-in for Microsoft Visual Studio Team System, developed by Conchango, in collaboration with Ken Schwaber and the Microsoft Technology Centre UK.

Scrum for Team System provides development teams with deep support for the use of Scrum, when running projects using Visual Studio Team System’s integrated suite of lifecycle tools.

Update: Ken Schaefer has posted about Using commas in IIS Redirects, which will solve the problem that I was having. I personally decided to change the permalinks from dasBlog’s default use GUID’s in permalinks standard, to the much more human friendly .aspx format.

Now I just need to work out why Ken’s comments disappeared ….

Original post: (Tuesday, 21 March 2006)

Well I have finally migrated my blog from flat html to dasblog. This change means that the locations and extensions of all my files has changed, requiring a number of server redirections.

Interestingly it was at this point that I noticed that IIS can’t support commas in redirection URL’s and, suprise, suprise, dasblog uses commas in it’s permalinks…

So the rub is that there are currently a few broken links around the place (like where I have manually relinked to a post), but I will be working to fix them as soon as possible.

I will definatley be changing the current permalinks, so please don’t link to anything just yet.

From Microsoft Presspass,
REDMOND, Wash. — March 21, 2006 — Microsoft Corp. today confirmed that Windows Vista, the next generation of the Windows client operating system, is on target to go into broad consumer beta to approximately 2 million users in the second quarter of 2006. Microsoft is on track to complete the product this year, with business availability in November 2006 and broad consumer availability in January 2007.

My question is, what exactly do Microsoft mean by business availability?

From Mike Harsh’s Blog : WPF/E at Mix ‘06, which was found via Jb Evain ’s post on monologue.

Note that Joe’s talk also showed XAML content running on a Mac.

Interesting. Now if MS could just port VS 2005 …


If you are looking for the instructions on how to get Windows XP dual booting with Mac OS X on a new Mactel, the instructions can be found here.

Disclamer: I have not tried this, and if you do, is entirely at your own risk.

Found via Rob Caron’s Team System Nexus : Updated MSF Process Guidance Downloads.

MSF for Agile Software Development Process Guidance
This download contains the agile process guidance that will be shipping with Visual Studio 2005 Team System. MSF for Agile Software Development is a scenario-driven, context-based, agile software development process that utilizes many of the ideas embodied in Team System.

From: MSF for Agile Software Development Process Guidance

MSF for CMMI Process Improvement Process Guidance
This download includes the MSF for CMMI® Process Improvement process guidance, which is a highly iterative, adaptive planning, agile software development process which meets the requirements for the Software Engineering Institute’s (SEI) Capability Maturity Model Integration (CMMI) level 3 and provides a smooth transition all the way to level 5.

From: MSF for CMMI Process Improvement Process Guidance

Thanks for the links Rob.

Adam Cogan mentioned on his guest appearance on .Net rocks that there was no facility to run Visual Studio 2005 unit tests outside of the IDE. Well I am not aware of a published API or a standalone GUI tool, but I did manage to find a command line tool, MSTest.exe.

On a standard installation it should be located in: C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\MSTest.exe.

In the first post in my series on the seven tenets of software testing, I discussed one technique for identifying your most important tests. In this post I am going to discuss using combinations reducing the number of test cases that you need to execute.

If you want to impress all your friends with can refer to this topic as combinatorics. This is guaranteed to have nerds from miles around thinking you are “the man”, but it will also ensure that you will never be able to get a date with a member of the opposite sex again.

The problem

Let’s assume that we are building an application that we use determine the cost of a flight. We can choose from Sydney, Melbourne or Brisbane as destinations. We can choose from Business, Economy or Budget Economy as our type of ticket. Finally, we can choose Virgin Blue, Qantas or Jetstar as our airline. Let’s assume that there is a bug which occurs when Business and Jetstar are selected together, because Jetstar don’t have any business class seats. With all 27 possible combinations, we would get three test failures, as shown below.

DestinationClassAirlineResult
SydneyBusinessJetstarError
SydneyBusinessQantas
SydneyBusinessVirgin Blue
SydneyEconomyJetstar
SydneyEconomyQantas
SydneyEconomyVirgin Blue
SydneyBudget EconomyJetstar
SydneyBudget EconomyQantas
SydneyBudget EconomyVirgin Blue
MelbourneBusinessJetstarError
MelbourneBusinessQantas
MelbourneBusinessVirgin Blue
MelbourneEconomyJetstar
MelbourneEconomyQantas
MelbourneEconomyVirgin Blue
MelbourneBudget EconomyJetstar
MelbourneBudget EconomyQantas
MelbourneBudget EconomyVirgin Blue
BrisbaneBusinessJetstarError
BrisbaneBusinessQantas
BrisbaneBusinessVirgin Blue
BrisbaneEconomyJetstar
BrisbaneEconomyQantas
BrisbaneEconomyVirgin Blue
BrisbaneBudget EconomyJetstar
BrisbaneBudget EconomyQantas
BrisbaneBudget EconomyVirgin Blue

With all 27 cases, there is obviously some duplication, as we get three failures from the same error. What can we do to intelligently reduce the number of tests? The trick we will use here is to test each unique pair of combinations at least once. Using a free tool like All pairs or TConfig to generate the pairs, reduces the list to the following 10 test cases.

DestinationClassAirlineResult
SydneyBusinessJetstarError
SydneyEconomyQantas
SydneyBudget EconomyVirgin Blue
MelbourneBusinessVirgin Blue
MelbourneEconomyJetstar
MelbourneBudget EconomyQantas
BrisbaneBusinessQantas
BrisbaneEconomyJetstar
BrisbaneEconomyVirgin Blue
BrisbaneBudget EconomyJetstar

So what exactly are we doing here? Well we are ensuring that we are testing each pair of values at least once. For example: Sydney and Business is one pair. Business and Jetstar is another. I personally used TConfig for this example and it produced the following output.

Degree of interaction coverage:            2
Number of parameters:                      3
Maximum number of values per parameter:    3
Number of configurations:                  10

   1  |    1   1   1
   2  |    1   2   2
   3  |    1   3   3
   4  |    2   1   2
   5  |    2   2   1
   6  |    2   3   1
   7  |    3   1   3
   8  |    3   2   1
   9  |    3   3   2
  10  |    2   2   3

All 2-way combinations covered.

Initially I thought that the 10th test case was erroneous, and unnecessary. The 10th case is ensuring that all the 2-way combinations are covered. A 2-way combination means that it counts Sydney and Business as a different pair to Business and Sydney. This may or may not be an issue for your application, but it is good to know that the bases are being covered.

Ok so what is the trade-off with using pairs? Well if a bug only occurs when three or more things occur, such as a Qantas business class flight to Melbourne, then you are not guaranteed of finding it. You may get lucky if your test case just happens to match, but you are not guaranteed to find it.

So using pairs isn’t magic, it is simply a technique to ensure that you are intelligently reducing the number of tests that you have to perform, instead of just bumbling through and relying on blind luck.