TFS2013 – Test WorkItem Creator

Neulich habe ich für ein internes Projekt ein Test-Set mit einer großen Anzahl von Work Items benötigt. Und da ich nicht nur einfach Product Backlog Items und ein paar Bugs anlegen wollte, sondern eine komplette Work Item Hierarchie benötigte, beschloss ich eine kleine Konsolenanwendung zu schreiben, die das für mich erledigt. Wie sonst hätte ich zweitausend Work Items innerhalb weniger Minuten anlegen sollen?

Für ein internes Projekt benötigte ich eine durchgängige Work Item Hierarchie, angefangen bei Feature Work Items bis hin zu Task Work Items. Ausserdem sollten auch Bug Work Items unterhalb eines Features auftauchen und Test Cases zu einigen Product Backlog Items verlinkt sein.

TFS Backlog ViewAbbildung 1: TFS2013 Feature to Task drill-down

Für eine kleine Menge kann man das noch gut mit der Hand erledigen, aber wenn man mehrere Hundert Work Items haben will, dann lohnt es sich ein kleines Tool zu schreiben, welches die Arbeit für einen erledigt.

Die wichtigsten Zeilen Code möchte ich hier kurz vorstellen. Das Programm könnt Ihr Euch gerne von hier runterladen und verwenden. Ebenso könnt Ihr mir gerne auch Anregungen hinterlassen, wie sich das Tool sinnvoll erweitern lässt. Wahrscheinlich kann man noch ordentlich an der Performance-Schraube drehen, aber das war mir jetzt nicht so wichtig…

Folgende References werden für die Anwendung benötigt:

  • Microsoft.TeamFoundation.WorkItemTracking.Client.dll
  • Microsoft.TeamFoundation.Client.dll

Für das Erzeugen von Work Item Titeln und Beschreibungen verwende ich eine externe Komponente, den NLipsum-Generator, die ich über NuGet in mein Projekt eingebunden habe.

Als Erstes muss eine Verbindung zur Team Project Collection aufgebaut und der Work Item Store geladen werden, bevor man das Team Projekt auslesen kann:

TfsTeamProjectCollection tfsCollection = new TfsTeamProjectCollection(
   new Uri(serverUrl));
tfsCollection.EnsureAuthenticated();
WorkItemStore store = (WorkItemStore)tfsCollection.GetService(
   typeof(WorkItemStore));
Project project = store.Projects[projectName];

Zum Anlegen eines Work Items muss zunächst der Work Item Typ ausgewählt und dann ein Work Item für diesen Typ erstellt werden.

WorkItemType wiType = project.WorkItemTypes[workItemType];
 
// Create the work item.
{
Title =  string.Join(" ", gen.GenerateWords(4)),
Description =  gen.GenerateLipsum(4, Features.Sentences"")
};

Je nachdem welches Work Item gerade erstellt worden ist, muss noch eine Verknüpfung zu anderen Work Items vorgenommen werden. Um eine Hierarchie von Feature, Product Backlog Item und Task aufzubauen, wird eine Parent-Child-Beziehung benötigt.

WorkItemLinkType hierarchyLinkType = 
   store.WorkItemLinkTypes[CoreLinkTypeReferenceNames.Hierarchy];
subItem.Links.Add(new WorkItemLink(hierarchyLinkType.ReverseEnd, parentId));
return hierarchyLinkType;

Eine Verknüpfung von einem Test Case zu einem Product Backlog Item erfolgt in der Regel über eine “Tests”-Beziehung oder von PBI zu Test Case über eine “Tested by”-Beziehung.

WorkItemLinkTypeEnd hierarchyLinkType = 
   store.WorkItemLinkTypes.LinkTypeEnds["Tests"];
workItem.Links.Add(new WorkItemLink(hierarchyLinkType, relationId));

Den Source Code gibt es hier zum Download.
Viel Spaß und happy testing!