Neues rund um's Thema .Net, Team Foundation Server und SCRUM RSS 2.0
# Tuesday, August 19, 2014

Ich habe meinen Blog umgezogen. Ab sofort erscheinen neue Blog Posts nur noch unter http://www.artisoag.com/expertenblog

Tuesday, August 19, 2014 7:43:30 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Wednesday, July 23, 2014

DeveloperWeek

Auf der Developer Week 2014 habe ich einen Vortrag über NuGet gehalten. Dabei habe ich vorgestellt, wie man eigene Bibliotheken als NuGet Packages bereitstellen kann. Wer sich nochmals in Ruhe die .target Files und andere Details anschauen möchte, kann sich das Demo mit unten stehendem Link herunterladen.

http://1drv.ms/1mFiBt7

Wednesday, July 23, 2014 9:10:01 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Saturday, April 19, 2014

Seit der Version 2013 bringt der TFS ein neues Build Template mit, das ein paar interessante Neuerungen beinhaltet. Eine davon ist, dass nun einfach verschiedene Scripts aufgerufen werden können

image

Es können sowohl vor / nach dem Build als auch vor / nach dem Ausführen der Tests entsprechende Scripts angegeben werden. In meinem Beispiel habe ich einen Build für eine Web-Anwendung die ich nach dem Build auf eine Testumgebung deployen möchte. Ich nutze hier die Umgebungsvariable TF_BUILD_BINARIESDIRECTORY die das Verzeichnis angibt, in das der Build kompiliert.

xcopy "%TF_BUILD_BINARIESDIRECTORY%\_PublishedWebsites\FabrikamFiber.Web" "C:\inetpub\FabrikamFiber.Web" /s /y

Ich habe das Script als Post-build angegeben, d.h. es wird noch vor der Ausführung der Tests ausgeführt. Das ist für meinen Anwendungsfall absolut OK, da es sich eh nur um eine Test-Instanz für das Team handelt. Will man das Deployment nur dann ausführen, wenn der Build und die Tests erfolgreich waren, muss man den Build Workflow anpassen.

Saturday, April 19, 2014 9:38:19 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2013
# Monday, April 14, 2014

Ich hatte gerade folgende Situation:

Coded UI-Test gebaut, lokal ausgeführt - funktioniert. Lab Environment aufgesetzt, Test ausgeführt – funktioniert. Lab Build eingerichtet, Test ausgeführt – funktioniert. Lab Build über Nacht automatisch laufen lasen – funktioniert nicht.

Das Problem war hier, dass der Test bei der Ausführung einen Button nicht klicken konnte und behauptet hat, das der Button “hidden” ist.

Test method AddUnitsAndStartBatchCodedUITest threw exception: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException: Cannot perform 'Click' on the hidden control. Additional Details: TechnologyName:  'UIA'FrameworkId:  'WPF'ControlType:  'Button'AutomationId:  'addButton' ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0xF004F002

Der Fehler trat aber nur im Build auf. Nach einiger Suche bin ich dann drauf gekommen, dass die Bildschirmauflösung bei meinen anderen Szenarien auf 1920 x 1200 eingestellt war, weil ich mich per Remote Desktop überd en Environmen Viewer verbunden hatte. Wenn der test im Build über Nacht lief, dann war aber kein Viewer verbunden und die Environment lief nur mit 1024 x 768. Und tatsächlich war bei dieser Auflöung ein Button außerhalb des Bildschirmbereichs, da die Anwendung für diese niedrige Auflösung nicht ausgelegt war. Wie nun diese Einstellung ändern? Ich habe hierzu ein kleines NugetPackage erstellt, das hier weiterhilft.

image http://www.nuget.org/packages/DisplaySettingsChanger/

Damit kann im Test-Code die Auflösung entsprechend eingestellt werden, so dass das auch im Build funktioniert.

TestContext.WriteLine("Checking current display resolution");
var currentDisplayMode = DisplaySettings.DisplaySettingsChanger.GetCurrentDisplayMode();
TestContext.WriteLine(String.Format("Current resolution is {0} x {1}", currentDisplayMode.dmPelsWidth, currentDisplayMode.dmPelsHeight));

if (currentDisplayMode.dmPelsWidth == 1920 && currentDisplayMode.dmPelsHeight == 1200)
{
TestContext.WriteLine("Current display resultion is 1600 x 1200, no changes needed.");
}
else
{
TestContext.WriteLine("Setting resolution to 1600x1200 to make sure the test will run in a proper resolution");
DisplaySettings.DisplaySettingsChanger.SetScreenResolution(1600, 1200);
}
TestContext.WriteLine("Executing the test now...");

Monday, April 14, 2014 6:13:00 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | Testing
# Wednesday, March 26, 2014

Wenn NuGet Packages genutzt werden, dann ist die Frage, wie kommt der Build-Server an diese Packages um die Solution zu bauen? Natürlich kann man die Packages in der Versionsverwaltung einchecken, aber das ist meist eher nicht gewollt. Statt dessen kann der sog. Package Restore genutzt werden, der nicht nur auf dem Build Rechner sondern auch beim Entwickler-Kollegen die benötigten Packages gemäß der angegebenen Konfiguration herunterlädt und verwendet. D.h. dann wollen wir natürlich nicht mehr, dass die Packages in der Versionsverwaltung eingecheckt werden.

image

Wenn der klassische Package Restore aus dem Kontext Menü der Solution verwendet wird, dann sorgt NuGet automatisch dafür, dass diese Packages nicht mehr eingecheckt werden.

image

Durch diese Funktion wird eine .targets-Datei angelegt und diese in alle Projekt-Dateien eingebunden und sorgt so für einen entsprechenden NuGet Aufruf der den Package Restore ausführt. Mit Visual Studio 2013 ist dieser Package Restore in dieser Form aber gar nicht mehr nötig und wir können uns somit die Anpassung der Projekt-Dateien sparen. Außerdem bietet die neue Vorgehensweise auch noch weitere Vorteile so dass diese zu bevorzugen ist, wenn alle Entwickler Visual Studio 2013 nutzen.

Nun müssen wir aber manuell dafür sorgen, dass unsere Packages nicht mehr eingecheckt werden. Man kann natürlich ein Undo auf dem Panding Changes im Packages-Ordner machen, aber das muss dann jedesmal gemacht werden, wenn man neue Packages einfügt. Das ist leicht mal vergessen. Besser ist da, wir übernehmen den Mechanismus der auch beim Package Restore verwendet wird.

Dazu legen wir auf der Ebene unseres Solution Files einen Ordner “.nuget” an. Leider lässt der Windows Explorer das Anlegen von Ordnern die mit einem Punkt beginnen nicht zu, d.h. wir müssen die Commandline bemühen

image

image

In diesem Ordner legen wir dann eine Datei nuget.config mit folgendem Inhalt an:

<?xml version="1.0" encoding="utf-8"?>
<
configuration>
  <
solution>
   
<add key="disableSourceControlIntegration" value="true" />
  </
solution>
</
configuration>

Nun werden neu hinzugefügte Packages nicht mehr automatisch zur Versionsverwaltung hinzugefügt. D.h. auf noch bestehenden Pending Changes auf dem Packages Ordner können wir nun einen Undo machen und wenn Packages schon eingecheckt wurden diese in der Versionsverwaltung löschen. Die gerade angelegte Config-Datei sollten wir einchecken und am besten in unsere Solution einbinden, damit die Kollegen das beim nächsten Get Latest automatisch auf ihrem Rechner richtig eingerichtet haben.

image

Wednesday, March 26, 2014 9:33:18 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
NuGet | VS 2013
# Thursday, March 20, 2014

Ich hatte heute ein Problem mit einem Lab Build. Bei der Ausführung der Test im Lab erhielt ich folgende Fehlermeldung:

The build directory of the test run either does not exist or access permission is required.

Ich war mir sicher, dass die Berechtigungen richtig vergeben waren und die Assemblies waren auch vorhanden. Also warum diese Fehlermeldung? Seltsam war auch, dass direkt aus dem Microsoft Test Manager die Testausführung fehlerfrei lief. Nach einigen Versuchen, habe ich herausgefunden, dass der Lab Build die Test Assemblies in einer ganz bestimmten Struktur erwartet, abhängig von der Build Configuration die ausgewählt wurde.

image

In obigem Beispiel müssen die Assemblies im Verzeichnis $BuildLocation\x64\WCF Release liegen. In meinem Fall wurde aber auf der Drop Location eine andere Struktur gewählt. Nachdem ich die Dateien in die erwartete Struktur kopiert habe, wurden die Tests auch erfolgreich ausgeführt.

Thursday, March 20, 2014 9:00:44 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Lab Management | TFS 2013

Generic Tests können dazu genutzt werden, externe Test-Tools zu kapseln. Diese möchte man dann ja auch gerne im Build ausführen. MSTest kann die Tests ausführen, man gibt diese über den Parameter /testcontainer einfach mit an. Hat man jedoch mehrere Generic Tests, dann ist es zwar möglich, mehrere über den Parameter anzugeben, aber erstens ist das unpraktisch, wenn jeder neue Test hier angegeben werden muss und zweitens wird die Liste irgendwan so lang, dass der Aufruf fehlschlägt.

Glücklicherweise gibt es da aber eine ganz einfache Lösung: Man kann mit *.GenericTest einfach alle Tests ausführen lassen.

Dazu einfach eine neue Build Definition anlegen und in den Parametern die Testausführung konfigurieren. Dort dann als Test runner “MSTest.exe Runner” auswählen. Als Test assembly file specification kann dann “*.GenericTest” angegeben werden. Leider kann man Generic Tests keine Test Category zuweisen und der TFS Build kann aktuell nicht mit Playlists umgehen. Deshalb muss man sich für die Filterung einen anderen Ansatz überlegen und z.B. im Namen der Tests ein Prefix etc. mit einbauen auf das man dann filtern kann.

image

Vielen Dank an Neno für den Tipp.

Thursday, March 20, 2014 7:05:31 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Testing | TFS 2013 | VS 2013
# Wednesday, March 19, 2014

Nutzt man den Team Foundation Server zur Versionsverwaltung im Visual Studio, so kann beim CheckIn ein Work Item verknüpfen und so eine Traceability zwischen Code-Änderungen und den Arbeitsaufgaben erreichen. Das Standardverhalten ist dabei so, dass auch der Status des verknüpften Work Items automatisch auf abgschlossen gesetzt wird, also beim Task auf “Done”.

image

Gerade für Scrum Teams ist das nicht das gewünschte Verhalten, weil diese ja die Tasks im Daily Scrum auf abgeschlossen setzen wollen. Glücklicherweise kann das Verhalten aber geändert werden. Dazu muss die Definition des Work Items (Task) angepasst werden. Am einfachsten verwendet man hierfür den Process Template Editor aus dem TFS Power Tools (http://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f).

Im Reiter Workflow können die Status und die einzelnen Übergänge bearbeitet werden. Wir nehmen zunächst den Übergang von “In Progress” nach “Done”. Durch einen Doppelklick öffnet sich die Detailansicht für die Transition. Dort finden sie unter “Actions” einen Eintrag, der besagt, dass dieser Übergang beim CheckIn ausgeführt werden soll. Diesen Eintrag löschen sie nun einfach. Das selbe tun sie ebenfalls für den Übergang von “To Do” nach “Done”.

image

Wenn sie nun die Work Item Type Definition speichern, dann steht das neue Verhalten sofort zur Verfügung. Wenn sie nun ein Work Item verknüpfen, dann ist die Standard-Aktion “Associate” und der Status des Work Items wird beim CheckIn nicht mehr verändert.

Wednesday, March 19, 2014 10:54:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
TFS 2013 | VS 2013
# Monday, March 10, 2014

image

Mit dieser kostenlosen Extension für Visual Studio bekommen wir eine leistungsfähigere Suchfunktion die z.B. die Suchergebnisse nach Relevanz sortiert und die Suchergebnisse mit einer kleinen Vorschau versieht. Einen Überblick über die Funktionen bietet dieses Video:

http://visualstudiogallery.msdn.microsoft.com/06f39a31-20ce-408c-afee-8a02b484db1c

Monday, March 10, 2014 8:42:08 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
VS 2013

MVP Kollege Pieter Gheysens hat eine nette Serie von Blog Posts die beschreibt, wie sich Visual Studio ALM (vormals Visual Studio Team System) im Laufe der Zeit entwickelt hat und welche Versionen welche wichtigen Verbesserungen und Meilensteine gebracht haben. Die Serie gibts auch als PDF-Datei.

Monday, March 10, 2014 10:13:45 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
TFS 2010 | TFS 2012 | TFS 2013
# Thursday, February 20, 2014

Aktuell geistern zwei Begriffe durch die Entwicklerwelt, “Continous Deployment” und “Continous Delivery”. Gemeint ist damit, kontinuierlich (häufig) neue Funktionalität bereitzustellen, meist mit dem Ziel schnelles Kundenfeedback zu bekommen.

Sind die beiden Beriffe nun gleich und wurde hier nur mal wieder für die gleiche Sache zwei verschiedene Begriffe eingeführt?

Nein, es gibt hier einen kleinen Unterschied. Während “Continous Deployment” davon ausgeht, dass die Funktionen direkt bis zum Endanwender geliefert werden ist “Continous Delivery” ein kontinuierliches Deployment aus der Entwicklung and die nächste Instanz (z.B. UAT – User Acceptance Testing).

Vielleicht lässt sich das an einem kleinen Beispiel verdeutlichen. Microsoft entwickelt den Team Foundation Server in Sprints von 3 Wochen. Daraus werden 2 Produkte gespeist, Visual Studio Online (Team Foundation Server in der Cloud) und der Team Foundation Server on premise (der im eigenen Netz installiert werden kann). Für Visual Studio Online nutzt Microsoft “Continous Deployment”, am Ende jedes Sprints wird die Produktivinstanz aktualisiert. Für den TFS on premise nutzt Microsoft “Continous Delivery”, d.h. die aktuelle Version wird intern für Tests deployed und häufig auch in Form von CTPs außerhalb von Microsoft verfügbar gemacht. Aber der TFS on premise wird nur ca. alle 3 Monate offiziell released. Nun kann man natürlich darüber diskutieren, ob 3 Wochen noch kontinuierlich ist. Die eigentliche Idee von “Continous Deployment” ist, eine neue Funktion sofort auszuliefern, wenn sie implementiert wurde und alle Tests gelaufen sind. Aber im Vergleich zu früher (2 Jahres Releases”") ist das schon recht kontinuierlich und natürlich hängt die Deployment-Strategie auch vom darunterliegenden Prozess ab. So unterstützt beispielsweise Kanban “Continous Deployment” etwas besser als Scrum, da in Scrum typischerweise erst am Ende des Sprints deployed wird während Kanban einen kontinuierlichen Fluss einzelner Funktionen durch den Entwicklungsprozess abbildet.

Man kann also vereinfacht sagen:

Continous Delivery != Release

Continous Deployment = Released

Thursday, February 20, 2014 12:04:48 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Kanban | Scrum
# Monday, February 17, 2014

Bisher habe ich in meinen Vorträgen aufgezeigt, wie Agilität für Teams funktioniert und welche Vorteile sich daraus ergeben. Jedoch ist die Teamsicht nur ein wichtiger Aspekt. Agilität bietet für Organisationen jedoch nicht nur Vorteile in einer verbesserten Verwaltung von Anforderungen und optimierter Teamorganisation, sondern es ergeben sich auch klare betriebswirtschaftliche Vorteile. Welche dies sind und wie sie sich auswirken stelle ich gemeinsam Thomas Fischer in einem Vortrag dar.

Die Veranstaltung findet in Zusammenarbeit mit der IHK Ulm statt. Im Anschluss an den Vortrag findet eine Podiumsdiskussion statt. Weitere Details unter http://scrum-fuer-manager.com.

Die ideale Gelegenheit, wenn sie sich informieren wollen, warum Scrum auch für ihre Organisation ein Thema sein sollte oder wie sie ihrem Chef das Thema Agilität vermitteln können.

Das Programm der Veranstaltung sieht wie folgt aus:

Ab 15:45 Uhr BEGRÜSSUNG
  • Volker Rath, Geschäftsführender Gesellschafter, artiso solutions GmbH
  • Nikolaus Hertle, IHK Ulm, Leiter Innovation und Umwelt
16:00 Uhr KEYNOTE
Neno Loje, Freier Berater für ALM & Scrum
16:30 Uhr VORTRAG
Scrum für Manager – Agilität aus betriebswirtschaftlicher Sicht

Referenten:

  • Thomas Schissler gehört zu den gefragtesten ALM Experten in Deutschland. Er ist erfahrener Professional Scrum Trainer und unterstützt Entwickler-Teams dabei, agile Entwicklungspraktiken im Unternehmen einzuführen und erfolgreich zu leben, Geschäftsführender Gesellschafter, artiso solutions GmbH.
  • Thomas Fischer ist erfahrener Generalist in der modernen Personalleitung, Director Human Resources, Burgmaier Metalltechnik GmbH & Co.KG
17:30 – 17:45 Uhr KAFFEEPAUSE
17:45 – 18:45 Uhr PODIUMSDISKUSSION
Moderation: Nikolaus Hertle, IHK Ulm, Leiter Innovation und Umwelt

Teilnehmer:

  • Uwe Baumann (Microsoft Deutschland GmbH)
  • Thomas Fischer (Burgmaier Metalltechnik GmbH & Co.KG)
  • Thomas Schissler (artiso solutions GmbH)
  • Neno Loje (Freier Berater für ALM & Scrum)
  • Ein Teilnehmer aus dem Auditorium
Danach GET TOGETHER – IMBISS

Monday, February 17, 2014 9:09:07 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Scrum
# Tuesday, January 28, 2014

Ich habe eine Lab Environment in der ich meine Tests ausführen möchte. Dazu habe ich einen CUIT (Coded UI Test) mit einem Test Case verknüpft und kann den Test Case nun entweder im Build oder direkt aus dem MTM (Microsoft test Manager) heraus ausführen. Dabei bekam ich aber immer eine komische Fehlermeldung:

Error calling Initialization method for test class LabTests.Tests.SetupCodedUITests: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.VisualStudio.TestTools.UITest.Extension.CrossBrowser, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A) ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)

Ich habe gar keine Browser-Tests, warum also mecker er an der Datei rum? Ich habe auch nichts gefunden, was die Datei referenzieren würde. Die DLL war auf meiner Testmaschine in der Version 11.0.60610.1 im Ordner C:\Program Files\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages vorhanden, sollte doch eigentlich funktionieren.

Nach ziemlich langem Herumprobieren dann die Lösung: Ganz einfach die DLL löschen und schon laufen die Tests Smile

Ich hab mir jetzt noch nicht angeschaut, woher die Datei kam, kann aber erst mal mit der Lösung leben. Nicht vergessen, den Snapshot für die Lab VM entsprechend zu aktualisieren und dann können die Tests endlich laufen.

Tuesday, January 28, 2014 4:00:54 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Lab Management | VS 2012
# Friday, December 20, 2013

Mit dem SharePoint Server hat man die Möglichkeit, mit Hilfe der Excel Sevices Excel-Dateien direkt im Browser anzuzeigen. Es gibt allerdings Situationen wo das gar nicht gewünscht ist. Glücklicherweise kann man das je Document Library einstellen.

1.) In der Document Library auf Library Settings gehen

image

2.) Unter “General Settings” auf “Advanced Settings” gehen

3.) Hier lässt sich nun einstellen, wie SharePoint die Dateien öffnen soll.

image

Friday, December 20, 2013 3:01:27 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SharePoint
# Thursday, December 05, 2013

Screenshot

Die Visual Studio Productivity Power Tools 2013 bringen eine Reihe cooler neuer und verbesserter Features. Kostenlos und jeder Entwickler findet darin mit Sicherheit das eine oder andere hilfreiche Feature.

Die Features werden in diesem kurzen Video kurz vorgestellt:
http://channel9.msdn.com/Events/Visual-Studio/Launch-2013/VS106

Und den Download gibt es hier:
http://visualstudiogallery.msdn.microsoft.com/dbcb8670-889e-4a54-a226-a48a15e4cace

Thursday, December 05, 2013 6:33:08 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tipps und Tricks | Tools | VS 2013
# Wednesday, November 20, 2013

Moderne Software-Entwicklung mit TFS 2013 und Visual Studio 2013

Microsoft veröffentlich bereits nach nur einem Jahr eine neue Version seiner ALM-Plattform, in der Zwischenzeit gab es aber auch 3 Updates die einige neue Funktionen mitbrachten.

Deshalb haben wir uns dieses Mal entschieden, an unserem traditionellen Info-Tag zum neuen Release nicht nur die Neuerungen vorzustellen, sondern wir wollen den Tag nutzen, um verschiedene Aspekte und Anforderungen moderner Software-Entwicklung aufzugreifen und die Nutzung von Visual Studio und TFS aufzuzeigen.

Natürlich werden dabei auch die allerneuesten Features aufgegriffen und gezeigt. Damit eignet sich dieser Tag für alle, die sich einen guten Überblick verschaffen wollen, wo sie noch Potenzial haben, ihren Software-Entwicklungsprozess zu verbessern, ganz unabhängig davon, ob sie TFS bereits nutzen oder nicht.

Christian Binder und Thomas Schissler werden in gewohnt lockerer Art die Themen kompetent präsentieren und versuchen alle Fragen zu beantworten.

Verpassen Sie also nicht diesen kurzweiligen Tag, tanken Sie neues Wissen und holen Sie sich vielfältige Anregungen!

Thomas Schissler Christian Binder
arbeitet als ALM Architect in der Developer Platform & Strategy Group bei Microsoft Deutschland. Er arbeitet seit 1999 bei Microsoft u.a. als Escalation Engineer, dann Platform Strategy Manager und kann so auf umfangreiche Erfahrungen im Bereich Application Development zurückgreifen. Auch konnte er einige Erfahrungen im Product Development von Microsoft in Redmond sammeln, was ihn 2005 zum Thema Application Lifcycle Management gebracht hat.

Thomas Schissler Thomas Schissler
entwickelt seit 1996 Software, seit dem Jahr 2001 ausschließlich mit .NET. Er arbeitet als Coach und Berater in der Nähe von Ulm. Er ist MVP für Visual Studio ALM und Professional Scrum Trainer. Seine Schwerpunkte sind Team Foundation Server, Entwicklungsprozesse, insbesondere SCRUM und Softwarearchitektur. Als Sprecher ist er auf verschiedenen Konferenzen und bei Usergroups unterwegs. Selbst leitet er die .Net Developer Group Ulm (www.dotnet-ulm.de).

Für die Planung und Organisation der Veranstaltung ist eine Anmeldung über unser Online-Formular erforderlich. 

Wednesday, November 20, 2013 1:20:53 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Usergroup | Vorträge
# Friday, September 13, 2013

Dies ist eine der großen Fragen bei Microsofts Lizenz-Modell. Für die neue Version VS 2013 hat Microsoft nun eine Feature-Matrix veröffentlich die hilft, diese Frage zu beantworten:

http://www.microsoft.com/visualstudio/eng/products/compare

Friday, September 13, 2013 1:56:44 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2013 | VS 2013
# Thursday, June 13, 2013

In Visual Studio 2010 gab es eine Funktion um durch Rechtsklick auf eine Methode einen Unit-Test-Stub für diese Methode zu generieren. Diese Funktion fehlt leider in VS 2012 nachdem Microsoft dort das Unit-Test Framework komplett umgebaut hat. Eine kleine Extension von der VSGallery, erstellt von den ALM Rangers fügt diese Funktion VS 2012 nun wieder hinzu.

image

Thursday, June 13, 2013 8:21:07 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Testing | Tools | VS 2012
# Monday, June 03, 2013

Zusammen mit Neno Loje und Christian Binder habe ich ein paar kurze Videos aufgezeichnet in denen wir gemeinsam darstellen, welche Aspekte in der modernen Software-Entwicklung wichtig sind. Unsere Teams hier bei artiso arbeiten im wesentlichen (wenn es der Kunde erlaubt) nach diesen prinzipien und wir haben dadurch die Aspekte Kundenzufriedenheit, Qualität und Performance merklich verbessern können. Auch wenn diese Dinge sich nicht alle über Nacht einführen lassen, kann ich nur jedem Team empfehlen, sich auf die Reise zu machen und den Umstellungsprozess zu beginnen. Die Videos sind kurz gehalten und sollten einen guten Überblick über die Themen geben, die sie nicht verpassen sollten, wenn sie sich und ihre Software-Teams fit für die Zukunft machen wollen. 

 

Moderne Softwareentwicklung 1 - Trends in der modernen Software Entwicklung
http://www.youtube.com/watch?v=jcCSa7boTgA
Moderne Softwareentwicklung 2 - Modernes Anforderungsmanagement und Planung
http://www.youtube.com/watch?v=GdLgjgiRHvs
Moderne Softwareentwicklung 3 - Stakeholder effizient einbinden
http://www.youtube.com/watch?v=iYp_T3BkuPM
Moderne Softwareentwicklung 4 - Continuous Delivery für erfolgreiche Projekte
http://www.youtube.com/watch?v=SZj7h53nOfo
Moderne Softwareentwicklung 5 - Optimierte Qualitätssicherung für moderne Prozesse
http://www.youtube.com/watch?v=ie56ESWXg1Q
Moderne Softwareentwicklung 6 - Erweiterbare und wartbare Architekturen entwickeln
http://www.youtube.com/watch?v=jEGU4c8IKHo

Moderne Softwareentwicklung:

Moderne Softwareentwicklung 1 - Trends in der modernen Softwareentwicklung

Die Software-Entwicklung ist ein Gebiet das sich schnell verändert und weiterentwickelt. Dabei findet diese Veränderung in den letzten Jahren nicht nur auf technologischer Ebene, sondern zunehmend auch auf der Prozess-Ebene statt. In diesem Video geben drei Experten einen Überblick über die wichtigsten Trends und Entwicklungen für moderne Software-Entwicklung und bieten Ihnen damit eine einfache Möglichkeit, sich schnell darüber zu informieren, welche Themen für Ihre Teams in Zukunft wichtig sein werden und welche Aspekte dabei besonders zu beachten sind.

Moderne Softwareentwicklung 1 - Trends in der modernen Softwareentwicklung | Microsoft from Visual Studio [Microsoft]

 

Moderne Softwareentwicklung 2 - Modernes Anforderungsmanagement und Planung

Das Bild ist meistens ähnlich: Es gibt eine große Liste an Wünschen an eine Software und nur begrenzte Mittel, mit denen man nicht alles umsetzen kann. Gerade deshalb ist es wichtig, sich auf die richtigen Dinge zu fokussieren und die "Wunschliste" sichtbar zu machen, sodass jeder weiß was und in welcher Reihenfolge es abgearbeitet wird, um letztlich möglichst viel Mehrwert (aus Sicht des Kunden) zu produzieren.

Moderne Softwareentwicklung 2 - Modernes Anforderungsmanagement und Planung | Microsoft from Visual Studio [Microsoft]

 

Moderne Softwareentwicklung 3 - Stakeholder effizient einbinden

Einer der wichtigsten Trends in der modernen Softwareentwicklung ist eine Veränderung in der Zusammenarbeit mit den sog. Stakeholdern, also Kunden, Vertrieb, Support, Management etc. Diese werden stärker in den Entstehungsprozess von Software eingebunden. Warum das wichtig ist und wie man dies effizient organisieren kann, erfahren sie in diesem Video.

Moderne Softwareentwicklung 3 - Stakeholder effizient einbinden | Microsoft from Visual Studio [Microsoft]

Moderne Softwareentwicklung 4 - Continuous Delivery als zentraler Motor für erfolgreiche Projekte

Kurze Zyklen bieten für die Softwareentwicklung einige interessante Vorteile, aber auch Herausforderungen. Um kurze Zyklen und häufige Releases zu ermöglichen ist auch ein höherer Automatisierungsgrad in den Test- und Release-Prozessen von Nöten. Ist dies erstmals vollbracht, erhält man auf verschiedenen Ebenen eine frühzeitige Rückmeldung. Ist die Implementierung eines Features geplant, geht weniger Zeit verloren bis es seine Produktionsreife erreicht und dann idealerweise schon bald von den Benutzern der Software genutzt werden kann.

Moderne Softwareentwicklung 4 - Continuous Delivery als zentraler Motor für erfolgreiche Projekte | Microsoft from Visual Studio [Microsoft]

Moderne Softwareentwicklung 5 - Optimierte Qualitätssicherung für moderne Prozesse

Moderne Entwicklungsprozesse versuchen neue Software-Inkremente in immer kürzeren Zyklen bereitzustellen um kontinuierlich zu prüfen, ob die umgesetzte Funktionalität die Anwenderanforderungen erfüllt oder ob entsprechend korrigiert werden muss. Bereitstellung neuer (Test-)Versionen im Rhythmus von wenigen Wochen erfordert aber neue Test-Strategien, da die bisherigen Vorgehensweisen in diesem Szenario meist versagen. Informieren sie sich, wie sie ihre Test-Prozesse fit machen für Continuous Delivery.

Moderne Softwareentwicklung 5 - Optimierte Qualitätssicherung für moderne Prozesse | Microsoft from Visual Studio [Microsoft]

Moderne Softwareentwicklung 6 - Erweiterbare und wartbare Architekturen im Team entwickeln

Eine wichtige Anforderung an Architektur ist die einfache Erweiterbarkeit und eine robuste Struktur, die Änderungen möglichst auf wenig Code-Bereiche begrenzt, um das Risiko von Änderungen zu minimieren. Nur so kann die Idee von gewachsener Architektur tatsächlich auch umgesetzt werden. Welche Aspekte dabei wichtig sind und wie dieses Vorhaben gelingen kann, wird in diesem Video erläutert.

 

 

Moderne Softwareentwicklung 6 - Erweiterbare und wartbare Architekturen im Team entwickeln | Microsoft from Visual Studio [Microsoft]

Monday, June 03, 2013 8:46:09 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -
Agile | Eigene Tutorials
# Thursday, May 16, 2013

Der TFS Build geht standardmäßig so vor, dass er vor einem Build, alle Dateien sauber löscht und dann den kompletten Workspace neu aus der Versionsverwaltung holt. Ein solcher “Clean Build” birgt natürlich das geringste Risiko, dass veraltete Dateien in den Build einfließen oder dass der Build Dateien benutzt die gar nicht mehr in der versionsverwaltung enthalten sind. Aber gerade bei größeren Projekten ist das natürlich auch sehr ineffizient. deshalb kann man im TFS Build einstellen, wie er sich verhalten soll.

In den Build Process Parametern gibt es eine Einstellung dafür.

image

Dieser Parameter hat 3 mögliche Einstellungen:

  1. All – Mit dieser Einstellung werden sowohl der Source Code all auch alle Outputs des Builds gelöscht (Clean Build). Dies ist die Default-Einstellung
  2. Outputs – Der Build löscht die Outputs, nicht aber die Sourcen. Für die Sourcen wird ein get Latest ausgeführt, d.h. es werden nur geänderte Dateien vom TFS heruntergeladen
  3. None – Sowohl Outputs als auch Sourcen bleiben erhalten. Nach einem Get Latest wird ein Build ausgeführt und dabei nur Projekte gebaut bei denen sich die SOurcen bzw. die Referenzen geändert haben

So weit so gut. Ich hatte einen Build auf “Outputs” gestellt und dann folgenden Fehler bekommen:

Warning C:\Builds\101\Projekt\artiso_Working1_CI\Sources\Solutions\artisoSolutions\WCH_Diff\NoDeploy.testsettings - Unable to perform the delete operation because the file already exists locally

Völlig unlogisch, dass eine Datei nicht gelöscht werden kann, weil sie schon existiert, aber nun gut. Die Ursache war dann auch schnell gefunden. Um die Version in der AssemblyInfo.cs während des Builds zu ändern, hebe ich den Schreibschutz dieser Dateien auf. Und der Get hat nun ein problem, wenn da Dateien rumliegen die keinen Schreibschutz haben, da diese ja geändert sein könnten und er die nicht einfach überschreibt. Es gibt aber eine kleine Einstellung im Workflow mit der man dieses Verhalten anpassen kann:

Man sucht die Gte Workspace Activity im Workflow

image

Dann stellt man in den Properties die GetOptions auf “Overwrite”

image

Damit überschreibt der Build beim Get nun die Dateien ohne Schreibschutz-Attribut und der Build läuft problemlos durch – und das nun auch deutlich schneller als zuvor.

 

 

 

Thursday, May 16, 2013 11:36:15 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2010 | TFS 2012
# Wednesday, May 08, 2013

Seit dem Update 2 ist es nun endlich wieder möglich, das Lab Management im TFS 2012 auch mit XP-Maschinen zu betreiben. Das Problem war hier bisher, dass der Test Agent 2012 das .Net Framework 4.5 benötigt, dass sich das aber auf XP nicht installieren lässt. Man kann nun die Test Agents für 2012 Update 2 hier herunterladen: http://www.microsoft.com/en-us/download/details.aspx?id=38186.

Wie man bei der Installation vorgehen muss, wird hier beschrieben: http://msdn.microsoft.com/en-us/library/jj153008.aspx#installagent. Das Dokument hat jedoch einen kleinen Schönheitsfehler. Es verschweigt nämlich die Tatsache, dass  man vor der Installation des Test Agents das .Net Framework manuell installieren muss. Das Setup des Test Agents versucht nämlich das Framework zu installieren, wenn keines vorhanden ist, dummerweise aber immer das 4.5er. Probleme gibt es übrigens auch, wenn nur ein älteres Framework (z.B. 3.5) installiert ist. Dort schlägt die Installation fehl. Auch hier hilft einfach Framework 4.0 manuell zu installieren.

image

Lustig finde ich auch die Fehlermeldung “0x800713ec – Asia” Smile

Wednesday, May 08, 2013 6:12:46 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | TFS 2012
# Tuesday, May 07, 2013

Wenn man unter Windows 8 Coded UI Tests auf laufen lassen möchte, hat man Probleme, wenn man die Tests z.B. in einer Lab Umgebung mit Autologon ausführen möchte. D.h. die Maschine bootet aus einem Snapshot und wird automatisch angemeldet. Dann bekommt man als erstes den Windows 8 Startbildschirm. Da der Coded UI Test diesen nicht steuern kann, haben wir hier ein Problem. Mit einem kleinen Tool kann man Windows 8 aber auch so konfigurieren, dass es direkt mit dem Desktop startet. Vielleicht ist das ja auch für andere Szenarien als dem hier beschriebenen interessant Smile

http://win-8.de/MetroDeactivator/

Tuesday, May 07, 2013 3:38:51 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks | UI Automation | VS 2012
# Tuesday, April 30, 2013

Wenn das Deployment einer neuen VM im TFS Lab Management bzw. im SCVMM aus einem Template ewig dauert, kann möglicherweise ein Problem mit dem Product Key vorliegen. Wenn man sich im SCVMM oder Hyper-V Manager auf die VM verbindet, sieht man, dass dort eine Fehlermeldung angezeigt wird:

Windows could not parse or process the unattend answer file for pass [specialize].  The settings specified in the answer file cannot be applied.

Wenn man den Fehler bestätigt, dann bootet der Rechner neu, bringt aber wieder den selben Fehler. Bei mir hat sich herausgestellt, dass ich einen ungültigen Product key verwendet habe. Nachdem ich den Produkt Key im Template korrigiert habe, hat das Deployment einwandfrei funktioniert.

Tuesday, April 30, 2013 11:09:46 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Saturday, April 20, 2013

Beim schreiben von Unit-Tests, speziell wenn man TDD praktiziert, möchte man auch die Validierungslogik seiner Methoden prüfen, also werden ungültige Werte mit einer entsprechenden Exception quittiert? Dazu gibt es in MS Test eine ganz einfache Methode:

ExpectedException Attribute
[TestMethod]
[ExpectedException(typeof(FormatException))]
public void InvalidInput_FormatException()
{
    var result = Int32.Parse("abc");            
}

Damit gilt der Test als erfolgreich wenn die angegebene Exception geworfen wird. Dieses Vorgehen hat jedoch zwei Schwächen:

  1. Es kann nicht geprüft werden, ob die Exception auch die erwartete Message wirft.
  2. Bei umfangreicheren Tests können wir nicht sicherstellen, dass die Exception nicht an einer anderen Stelle, z.B. innerhalb des Test-Codes geworfen wurde

Wir können das Problem mit der Message lösen indem wir die Exception selbst abfangen und die Message prüfen

Exception message prüfen
[TestMethod]
[ExpectedException(typeof(FormatException))]
public void InvalidInput_FormatException()
{
    try
    {
        var result = Int32.Parse("abc");
    }
    catch (FormatException exc)
    {
        Assert.AreEqual("Input string was not in a correct format.", exc.Message);
        throw;
    }
}

 

Das bedeutet aber schon einiges mehr an Test-Code und ob die Exception an der richtigen Stelle geworfen wurde, bekommen wir auch nur indirekt raus. So würde z.B. dieser Test auch erfolgreich durchgeführt werden obwohl wir gar nicht die richtige Exception auswerten:

Falsche Exception
[TestMethod]
[ExpectedException(typeof(FormatException))]
public void InvalidInput_FormatException()
{
    throw new FormatException();
    try
    {
        var result = Int32.Parse("abc");
    }
    catch (FormatException exc)
    {
        Assert.AreEqual("Input string was not in a correct format.", exc.Message);
        throw;
    }
}

 

Mit den FluentAsserstions (frei verfügbar unter http://fluentassertions.codeplex.com/ bzw. als NuGet Package) lässt sich das Problem mit weniger Code lösen und wir können spezifich einen Teil unseres Codes auf die Exception prüfen

Mit FluentAssertions
[TestMethod]
public void InvalidInput_FormatException()
{
    Action action = () => Int32.Parse("abc");
    action.ShouldThrow<Exception>()
        .WithMessage("correct format", ComparisonMode.Substring);                
}
Saturday, April 20, 2013 4:53:43 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Wednesday, March 20, 2013

Die Layer Diagramme im Visual studio sind eine tolle Sache und ich benutze die gerne. Ich hatte aber kürzlich ein Problem, dass diese nicht sauber funktioniert haben. Auf einem Rechner ist Visual Studio ständig abgestürtzt wenn man versucht hat aus dem Solution Explorer Projekte oder Klassen in das Diagramm zu ziehen, auf einem anderen rechner hat das zwar funktioniert, aber weder die Generierung noch die Validierung von Abhängigkeiten hat da funktioniert. Es stellte sich heraus, dass das Problem daran lag, dass die Solution auch ein WIX Setup Projekt beinhaltet hat. Nachdem das entladen wurde, hat das Layer-Diagramm wieder funktioniert.

Microsoft hat das Verhalten als Bug bestätigt und versprochen das in der nächsten Version zu fixen.

Wednesday, March 20, 2013 6:37:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
VS 2012
# Friday, March 08, 2013

Nach der Migration von TFS 2010 auf TFS 2012 Update 1 hatte ich nun schon bei verschiedenen Kunden das Problem, dass nach der Migration einige Dateien den falschen Inhalt hatten. So waren in einigen .cs Dateien auf einmal XML-Inhalte. Nach dem Betrachten der Historie stellt man fest, dass in einem früheren Changeset der Inhalt korrekt ist.

Auch wenn mir das beim ersten Mal den Angstschweiß auf die Stirn getrieben hat und der Kunde doch stark an der Zuverlässigkeit des TFS gezweifelt hat, es gibt eine einfache Lösung und Erklärung. Auf dem TFS gibt es serverseitig einen Cache in dem die Dateien aus der Versionsverwaltung enthält. Dummerweise bereinigt der Upgrade-Prozess diesen Cache nicht und dieser hat nach dem Upgrade einen ungültigen Inhalt was zu dem beschriebenen Phänomen führt. D.h. keine Sorge, der TFS zerstört keine Daten und nichts ist verloren, man löscht einfach den Cache und alles ist gut.

Der Cache liegt im Verzeichnis C:\ProgramData\Microsoft\Team Foundation\Web Access. Dort alle Ordner mit dem Name “Cache” löschen.

Friday, March 08, 2013 4:26:51 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
TFS 2012
# Thursday, February 21, 2013

See English version below.

image

Das Definition of Done (DoD) Control unterstützt Teams dabei, für Work Items Checklisten zu verwalten. Wenn alle Punkte auf einem Work Item angehakt sind, kann ein Feld des Work Items automatisch geändert werden. Somit läßt sich z.B. der Status ändern, wenn alle Punkte der DoD Liste abgearbeitet sind. Und natürlich lässt sich das Control auch für andere Anwendungsfälle einfach als Checkbox-Liste nutzen.

In der neuen Version des DoD Controls haben wir ein paar zusätzliche Funktionen eingebaut. Die wichtigsten sind hier aufgeführt:

  1. Support für TFS 2012
  2. Support für TFS Web Access
  3. Unterschiedliche Listenelemente abhängig von Work Item Feldern um z.B. unterschiedliche DoDs für Teams abzubilden oder für den Einsatz mit Kanban wo für verschiedene States unterschiedliche DoDs genutzt werden.

Weitere Details finden sie in der Dokumentation die im Download enthalten ist.

English Version

The Definition of Done (DoD) Control supports teams tracking check lists on work items. If all options on a single work item are checked, a field of this work item can be updated automatically. So you can automatically update the state if all options of the DoD lists are checked. And for sure you can use this control also for all other scenarios where you want to have multiple checkbox lists.

In the new version we have added some additional features. The most importants are described here:

  1. Support for TFS 2012
  2. Support for TFS Web Access
  3. Separate items on the list depending on work item field values to e.g. support different DoDs for teams or for using it with Kanban where you typically have different DoDs for the states of your work item.

Please find additional details on the documentation contained in the downloadable ZIP file.

Please Download the DoD control here (http://sdrv.ms/1mv3CoR)

Thursday, February 21, 2013 12:17:40 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1] -
Kanban | Scrum | TFS 2012
# Wednesday, February 20, 2013

portrait-9b9b5462ecd4bb9e[1]

Auf den ALM Days 2012 hatte ich zusammen mit Holger Schwichtenberg die Gelegenheit Sam Guckenheimer, Product Owner Visual Studio bei Microsoft zu TFS und Visual Studio zu interviewen. Das komplette Interview ist verfügbar auf heise.de.

http://www.heise.de/developer/artikel/Sam-Guckenheimer-ueber-die-Entwicklung-von-Team-Foundation-Server-und-Visual-Studio-1805711.html

Wednesday, February 20, 2013 11:17:18 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

# Monday, February 04, 2013

Ich hatte gerade bei einem Report das Problem, dass ich in einer MDX-Query auf meinem OLAP Cube einfach nach dem aktuellen Tag filtern wollte. Das Problem dabei ist, dass das Datum als Hierarchie abgelegt ist und deshalb nicht einfach mit einem DateTime gearbeitet werden kann, sondern man brauch einen Ausdruck wie [Date].[Date].&[2013-02-04T00:00:00]. Die Now-Funktion liefert aber einen DateTime. Das Problem lässt sich aber recht einfach lösen.

1.) Im Query Designer zieht man die Date-Dimension in den Filterbereich und aktiviert die Option “Parameter”
image

2.) Dadurch wird ein Parameter vom Typ Text angelegt. Dieser heißt üblicherweise DateDate. Diesem gibt man nun einen Default-Wert. Dort wird nun der entsprechende Ausdruck als String zusammengebaut:

="[Date].[Date].&[" & Format(Now(), "yyyy-MM-dd")  & "T00:00:00]"

Der Trick war bei mir hinten noch die Uhrzeit mit T00:00:00 anzugeben. Sonst sucht die Abfrage einen Eintrag passend zur Uhrzeit, wenn man das aber weglässt, wird der Eintrag auch nicht gefunden.

Monday, February 04, 2013 3:05:41 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SQL Server Reporting Services
# Monday, January 14, 2013

Im SharePoint hatte ich das Problem, dass ich eine HTML-Datei, die ich in einer Document Library im SharePoint 2010 abgelegt hatte, nicht direkt im Browser anzeigen konnte, sondern diese nur speichern konnte. Glücklicherweise gibt es dafür eine Einstellung.

  1. Die Central Administration aufrufen und im Bereich “Application Management” “Web Applications” aufrufen.
    image
  2. Die entsprechende Web Application selektieren und dann auf “General Settings” klicken
    image
  3. Die Option “Browser File Handling” auf “Permissive” umstellen.
    image

Nun können die Dateien direkt geöffnet werden.

Gefunden hier:
http://paritala-sasi.blogspot.de/2009/12/opening-html-files-in-sharepoint-2010.html

Monday, January 14, 2013 11:06:58 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SharePoint
# Wednesday, October 31, 2012

Heute hat Microsoft den TFS in der Cloud released!. Die gute Nachricht für alle die sich keinen eigenen TFS installieren wollen: Bis 5 User ist der Service kostenlos und MSDN Subscriber bekommen den Service unlimitiert kostenlos als Teil der Subscription. Das sind echt gute Neuigkeiten.

Weitere Details unter http://blogs.msdn.com/b/somasegar/archive/2012/10/31/team-foundation-service-is-released.aspx

Wednesday, October 31, 2012 8:25:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
TFS 2012

Eigentlich ist es ganz einfach, per WebDAV auf den SharePoint zuzugreifen, zumindest wenn man den entsprechenden Posts im Web glaubt:

  1. Auf dem SharePoint Server (bzw. auf allen SharePoint Web Servern) die Desktop Experience im Servermanager aktivieren.
  2. Auf dem Client prüfen üb der Dienst WebClient läuft.
  3. Nun kann man per UNC-Pfad auf seine SharePoint Bibliotheken zugreifen. Aus http://mySharePoint/sites/defaultcollection/Documents wird dann einfach \\mySharePoint\sites\defaultcollection\Documents

Aber was tun, wenn das immer noch nicht klappt? Nach vielem Suchen habe ich von einem Kollegen den entscheidenden Tipp bekommen. WebDAV scheint nur zu funktionieren, wenn eine Root-Site angelegt ist. Wenn also unter http://mySharePoint nichts kommt, geht auch WebDAV nicht. Dann einfach hergehen und in der SharePoint Central Administration diese Root-Site anlegen, und schon klappts auch mit dem WebDAV.

Die Root-Site legt man über Create Site Collection an

image

Wednesday, October 31, 2012 7:59:47 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SharePoint
# Monday, October 29, 2012

Freundlicherweise stellt Microsoft eine Virtuelle Maschine bereit mit der man all die tollen features des TFS 2012 und VS 2012 ausprobieren kann. Sogar mit Schritt-für-Schritt Anleitungen um alles nachzuspielen. D.h. man kommt ohne großen Installationsaufwand an eine Spiel-Umgebung inkl. Daten. Der einzige Wermutstropfen dabei ist, dass es sich dabei um ein Hyper-V Image handelt. Wer also noch nicht auf Windows 8 umgestiegen ist (dort gibt’s jetzt Hyper-V endlich auch auf dem Client) oder einen Win2008 Server gerade zur hand hat, der steht erst mal vor einem Problem. Gerade bei Trainings habe ich häufig die Situation, dass die Teilnehmer auf ihren Windows 7 Notebooks das Image ausführen möchten. Glücklicherweise gibts dafür eine recht simple Lösung – der Einsatz von Virtual Box.

Im folgenden Becshreibe ich, wie man das Brian Keller Image auf der Virtual Box einrichten kann:

1.) Virtual Box herunterladen von https://www.virtualbox.org/ und installieren

 

2.) Virtuelle Umgebung für TFS 2012 und VS 2012 herunterladen von http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx und entpacken.

 

3.) Nun wollen wir die VM hinzufügen. Dazu erst mal auf “Neu” klicken
clip_image001

 

4.) Dann die Parameter für die neue VM eingeben

clip_image002

 

5.) Nun definieren wir noch den Speicher der VM. Hier gilt natürlich, je mehr, desto besser. Aber 2GB sollten es mindestens sein, ab 4GB kann man auch einigermaßen sinnvoll damit arbeiten.

clip_image003

6.) Wir geben zunächst mal keine Festplatte an. Das liegt daran, dass standardmäßig eine SATA Platte angebunden wird. Diese ist aber nicht mit unserem Hyper-V Image kompatibel. Wir binden die Platten später über einen DIE-Port an.

clip_image004

 

7.) Nach dem Erzeugen können wir nun die VM ändern. Unter Massenspeicher fügen wir dem DIE-Controller nun eine vorhandene Festplatte hinzu und wählen dazu die VHD des Brian Keller Images aus, das wir zuvor heruntergeladen und entpackt haben. Der Screen sollte nun so aussehen:

clip_image006

8.) Soll die VM auch Netzwerkzugang haben, dann sollte für den Netzwerkadapter eine Netzwerkbrücke konfiguriert werden

clip_image008

9.) Nun können wir die VM starten und damit arbeiten.

Monday, October 29, 2012 4:53:52 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | TFS 2012 | VS 2012
# Friday, October 26, 2012

Da ich meine virtualisierte TFS Demo-Umgebung mit einem Active Directory betreibe, laufe ich häufig auf das Problem, dass nach dem zurücksetzen auf einen Snapshot der Rechner sich nicht mehr an der Domäne anmelden kann. Der Grund dafür liegt darin, dass das Computer-Konto in der Domäne mit einem Kennwort geschützt ist, das sich automatisch ändert und zwar prüft der Client beim Neustart und danach in regelmäßigen Intervallen, ob das Kennwort ein gewisses Alter bereits überschritten hat und wenn ja, wird ein neues zwischen dem AD und dem Client vereinbart. Mit diesem Mechanismus ist es kein Problem, wenn der Rechner längere Zeit ausgeschaltet bleibt, da erst beim Hochfahren des Clients sich das Kennwort ändert, aber mit Snapshots ist das Problematisch und zwar immer dann, wenn der Snapshot vor der letzten Kennwortänderung erstellt wurde. in dem Snapshot hat ja dann der Client wieder das alte Kennwort, der AD-Controller aber bereits das neue und dann hilft nur, den Client neu in die Domäne einzufügen.

Man kann aber den Zeitraum konfigurieren nachdem das Kennwort abläuft und man kann den Mechanismus sogar ganz abschalten. Dazu gibt es ein paar Registry-Einträge:

Key = HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters

Value = MaximumPasswordAge REG_DWORD

Default = 7

Range = 1 to 1,000,000 (in days)

 

und

 

Key = HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters
Value = DisablePasswordChange REG_DWORD 1
Default = 0

http://blogs.msdn.com/b/john_daskalakis/archive/2010/02/01/9956266.aspx

Friday, October 26, 2012 9:43:13 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Thursday, October 25, 2012

Viele Leute beklagen sich bei mir, dass ihnen die neue UI von VS 2012 nicht gefällt und es gibt einige Stimmen die sogar sagen, dass sie sich durch die neue UI sogar in ihrer Arbeit beeinträchtigt fühlen. Das war auch auf Visual Studio User Voice einer der Top Requests. Auch wenn ich persönlich im neuen Design nach einiger Eingewöhnung inzwischen einige Vorteile sehe, gibt es nun für alle die noch nicht umsteigen wollen, das neue Visual Studio auf das alte Design zu patchen.

Wie Peter Bucher gebloggt hat, gibt es nun den Color Theme Editor mit dem man die beiden Standard-Themes Light und Dark um weitere Farben erweitern kann. Blue entspricht dabei weitgehend dem Desigbn von VS 2010

Nun bleibt noch das Problem mit den Icons. Auch da gibt es eine Lösung mit dem Visual Studio Icon Patcher von CodePlex. Dieser kann die Icons für die Elemente im Solution Explorer aus VS 2010 extrahieren und dann in VS 2012 importieren.

   ->

Für die Menü-Icons habe ich momentan noch keine Lösung gefunden.

Update:
Danke an MagicAndre hier noch eine Lösung, wie man auch die Menü-Icons (zumindest teilweise) austauschen kann:

Screenshot

http://visualstudiogallery.msdn.microsoft.com/a36021f0-770a-4258-854e-724e9d12b8a6

Thursday, October 25, 2012 8:29:50 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -
VS 2012
# Tuesday, October 23, 2012

image

Am 1. Oktober fand die Visual Studio 2012 Evolution in Neuss statt. Die verschiedenen Vorträge wurden aufgezeichnet und die Videos stehen nun zur Vefügung unter http://www.microsoft.com/germany/msdn/events/vs-evolution-2012/default.aspx

Tuesday, October 23, 2012 8:58:07 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Friday, October 19, 2012

Ich hatte heute die Herausforderung, dass ich in einer “Goto URL” Action einige Parameter mit angeben musste die URL encoded werden müssen. Eine kurze Suche fürte zu dieser Seite:

http://capstonebi.blogspot.de/2010/04/url-encoding-in-reporting-services.html

Dort ist beschrieben, wie ich die System.Web Assembly in meinem report referenziere und so auf die HttpUtility.URLEncode Methode daraus zugreifen kann. Wirklich sehr schick.

Friday, October 19, 2012 10:44:10 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
SQL Server Reporting Services | Tipps und Tricks

Planning and Tracking Projects

Auf MSDN gibt es eine Übersichtsseite wo man zu den wichtesten Themen im Kontekt von Projektplanung Hinweise erhält wie diese mit dem TFS 2012 umgesetzt werden können.

http://msdn.microsoft.com/en-us/library/dd286619.aspx

Friday, October 19, 2012 10:39:44 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012
# Monday, September 24, 2012

Wem das Umschalten zwischen den verschiedenen bereichen im Team Explorer 2012 zu umständlich ist, der sollte sich die folgenden Tastatur Shortcuts merken. Damit kann man jede Seite direkt anspringen, auch wenn der Team Explorer gerade gar nicht geöffnet ist.

Shortcut Team Explorer Page
Ctrl+' Search
Ctrl+0,H Home
Ctrl+0,P Pending Changes
Ctrl+0,M My Work
Ctrl+0,W Work Items
Ctrl+0,B Build
Ctrl+0,R Reports
Ctrl+0,D Documents
Ctrl+0,S Settings
Ctrl+0,A Web Access – team home page
F5 Refresh
Ctrl+Up Arrow Move focus to the previous visible section header
Ctrl+Down Arrow Move focus to the next visible section header
Alt+Left Navigate backward
Alt+Right Navigate forward
Alt+Home Focus the navigation control
Alt+0 Focus the page top level content
Alt+[1-9] Focus the visible section [1-9] level content
Alt+Up Focus the previous visible section content
Alt+Down Focus the next visible section content
Monday, September 24, 2012 10:08:59 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012 | VS 2012
# Wednesday, August 15, 2012
Wednesday, August 15, 2012 7:56:19 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012 | VS 2012

Vom 27. bis 30. November finden die ALM Days in München statt, für alle TFS Anwender eigentlich eine Pflichtveranstaltung, da hier versammelt ist, wass im Visual Studio ALM Umfeld Rang und Namen hat. Allein die beiden Key-Note Speaker Brain Harry und Sam Guckenheimer sind Grund genug, diese Veranstaltung nicht zu versäumen.

Im Rahmen der ALM Days werden mein Kollege Thomas Trotzki und ich mit diversen Vorträgen und Workshops vertreten sein. artiso wird auf den ALM Days auch als Austeller vertreten sein. Ich würde mich freuen, den einen oder anderen Leser meines Blogs auf den ALM Days zu treffen. Jeder der mich dort anspricht und sich als Leser meines Blogs “outet” bekommt von mir einen Satz Planning-Poker Karten :-)

Hier schon mal ein Ausblick auf unsere Ganztages-Workshops:

ALM & TFS für C++ Programmierer

Referent:Thomas Trotzki, artiso AG

Datum und Uhrzeit: 30. November 2012, 9:00 - 17:00 Uhr

Anspruch: TFS-Einsteiger

Abstract:  Im C++ Umfeld werden bislang bis auf Version Control nur vereinzelt weitere Bausteine des ALM verwendet, obwohl es hierfür aus technischer Sicht keine Gründe gibt. Dieser Workshop richtet sich daher an alle C++ Entwickler, die momentan noch auf die Vorzüge der Integration der unterschiedlichen ALM Aspekte in Team Foundation Server verzichten. Anhand eines überschaubaren Beispiels wird die Arbeit mit Visual Studio 2012 und Team Foundation Server 2012 von der Planung über die Implementierung und die Integration von automatisierten Tests in den zentralen Build Prozess bis hin zum Management von Bugs veranschaulicht. Freuen Sie sich auf einen Tag voller Anregungen und Goodies, und das immer aus der Sicht des Entwicklers.

Es gilt: Hands-On, bringen Sie ruhig Ihr Laptop mit!

 

TFS 2012 für Scrum-Teams

Referent:Thomas Schissler (MVP für Visual Studio ALM), artiso AG

Datum und Uhrzeit: 27. November 2012, 9:00 - 17:00 Uhr

Anspruch: Grundkenntnisse über Scrum sollten vorhanden sein

Abstract: Der TFS 2012 bringt viele lang vermisste Features für agile Teams und noch einiges mehr. Backlog Management, Task Board, Team-Strukturen, Code Reviews und Feedback Tool sind nur ein Auszug aus den Neuerungen, mit denen der neue TFS aufwarten kann.

In diesem Workshop werden die Teilnehmer am eigenen PC einen kompletten Scrum-Zyklus durchspielen und dabei diese Features nicht nur kennen lernen, sondern es wird auch ausreichend Zeit sein, um über Einsatzszenarien, Alternativen und mögliche Defizite zu diskutieren.

Hilfreich ist, wenn die Teilnehmer bereits mit den Grundkonzepten von Scrum vertraut sind, da auf diese im Workshop nicht gezielt eingegangen wird.

 

Test-Strategien für agile Teams

Referent: Thomas Schissler (MVP für Visual Studio ALM), artiso AG

Datum und Uhrzeit: 30. November 2012, 9:00 - 17:00 Uhr

Anspruch: Einsteiger

Abstract: Klassische Test-Strategien sind darauf ausgelegt, dass zwischen Entwicklung und Auslieferung eine intensive Test-Phase erfolgt. Für agile Teams, die auf sehr kurze Auslieferungsintervalle setzen, sind diese Strategien unbrauchbar.

Der Workshop zeigt auf, wie sich eine effiziente Test-Strategie für agile Software-Projekte von klassischen Ansätzen unterscheidet, welche neue Methoden und Techniken agile Teams idealerweise benutzen und welche Rolle dabei der Test-Automatisierung zukommt.

Darüber hinaus werden aber auch sog. weiche Faktoren wie Team-Organisation und Mindset betrachtet.

Und natürlich gibt es jede Menge Hands On, um die vorgestellten Tools wie Unit-Testing, UI-Testing, Microsoft Test Manager, Performance- und Load Tests, Test Reporting etc. auch gleich kennen zu lernen und praktisch anwendbares Wissen mitzunehmen.

Wednesday, August 15, 2012 8:49:01 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Tuesday, August 14, 2012

Verteilte Versionsverwaltungssysteme finden immer mehr Anhänger und es gibt bereits einige Teams die TFS und GIT einsetzen für all diese gibt es nun Git-tf, eine Erweiterung mit der nun das TFS-Repository in ein lokales GIT-Repository heruntergeladen werden kann. Der Unterschied zu den neuen “local Workspaces” die mit TFS 2012 kommen ist, dass wir damit auch im Offline-Betrieb eine Versionshistorie haben.

Brian Harry hat mehr Informationen auf seinem Blog http://blogs.msdn.com/b/bharry/archive/2012/08/13/announcing-git-integration-with-tfs.aspx und Matt Mitrik stellt das Tool in diesem Video vor:

Tuesday, August 14, 2012 12:52:35 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012

Mit dem letzten Update auf dem TFSPreview hat Microsoft nun eine erste Unterstützung für Kanban eingebaut.

image

Damit lassen sich nun nicht nur Tasks sondern auch Requirements (z.B. PBIs oder User Stories) in einem Board visualisieren und interaktiv verschieben. Die einzelnen Spalten haben ein WIP Limit das definiert, wieviele Elemente diese Spalte maximal haben sollte. Für einen kompletten Kanban Support fehlt da noch einiges, aber es ist ein erster Schritt und zeigt, welche Bedeutung Micrsoft Kanban zuweist.

Ein kurzes Video mit Gregg Boer, dem zuständigen PM für das Kanban Board erläutert noch ein paar weitere Details.

Tuesday, August 14, 2012 12:32:23 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Kanban
# Monday, August 13, 2012

Nachdem ich beim deutschen Launch Event zu Visual Studio 2012 und .Net 4.5 mit dabei sein darf, hier ein paar Informationen zu dieser Veranstaltung von Christian Binders Blog:

 

VS_Launch_Grafik

Visual Studio 2012 und das .NET Framework 4.5 ist fertig und wir laden Euch am 1. Oktober in Düsseldorf zu unserem offiziellen Launch Event ein. Es gibt eine Menge Neuerungen, die wir Euch zeigen wollen und natürlich haben wir Top Sprecher aus der .NET Community mit dabei.

Die Keynote wird Brandon Bray zum Thema “ .NET from Past to Future” halten. Brandon ist Director .NET Core Platform und arbeitet am Campus in Redmond. Ich freue mich Brandon für dieses Event gewonnen zu haben, denn Ihr wollt Doch aus erster Hand erfahren, wo die Reise hingeht.
Auch möchten wir, dass der Launch die Möglichkeit zum Austausch und Networking in der .NET Community bietet.

Das Event wird kostenfrei sein und ihr könnt Euch ab dem 14.8 auf der Visual Studio Webseite anmelden.

Hier schon mal ein Blick auf die Inhalte:image

 

Würde mich freuen den einen oder anderen Leser meines Blogs dort zu treffen Smile

Monday, August 13, 2012 3:28:02 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012 | Vorträge | VS 2012

Mit Visual Studio 2012 und Team Foundation Server stellt Microsoft die nächste Version seiner ALM-Plattform vor. Dabei wurden insbesondere häufig vermisste Funktionen für agile Teams nachgerüstet, aber auch auf die Produktivität der Entwickler wurde großen Wert gelegt. Christian und Thomas nehmen sich einen ganzen Tag Zeit, die vielen großen und kleineren Verbesserungen vorzustellen wie z.B. Code Reviews, Storyboarding, Feedback Client, Exploratives Testing, lokale Workspaces, Backlog Management, Taskboard, IntelliTrace in Production und neue Features in der IDE um nur einige zu nennen. Informieren sie sich, welche Funktionen Visual Studio 2012 für sie beinhaltet und profitieren sie von der Gelegenheit, ausgewiesenen TFS Experten ausführlich Fragen stellen zu können. Neben der Vorstellung der neuen Funktionalität wollen wir uns an diesem Tag auch Zeit nehmen, auf konkrete Szenarien einzugehen und zu zeigen, wie diese mit Hilfe der neuen Features effizienter und besser abgebildet werden können.

 

Christian Binder Christian Binder
arbeitet als ALM Architect in der Developer Platform & Strategy Group bei Microsoft Deutschland. Er arbeitet seit 1999 bei Microsoft u.a. als Escalation Engineer, dann Platform Strategy Manager und kann so auf umfangreiche Erfahrungen im Bereich Application Development zurückgreifen. Auch konnte er einige Erfahrungen im Product Development von Microsoft in Redmond sammeln, was ihn 2005 zum Thema Application Lifcycle Management gebracht hat.
Thomas Schissler

Thomas Schissler
entwickelt seit 1996 Software, seit dem Jahr 2001 ausschließlich mit .NET. Er arbeitet als Coach und Berater in der Nähe von Ulm. Er ist MVP für Visual Studio ALM und Professional Scrum Trainer. Seine Schwerpunkte sind Team Foundation Server, Entwicklungsprozesse, insbesondere SCRUM und Softwarearchitektur. Als Sprecher ist er auf verschiedenen Konferenzen und bei Usergroups unterwegs. Selbst leitet er die .Net Developer Group Ulm (www.dotnet-ulm.de) und die EMEA-Sektion der Visual Studio ALM User Group (www.vsalmug.com).

 

 

Weitere Informationen und Anmeldung zur Veranstaltung unter www.dotnet-ulm.de.


Monday, August 13, 2012 11:03:59 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2012 | Usergroup | VS 2012

Wie ich hier beschrieben habe, können Parameter in Reports einfach per URL-Parameter übergeben werden. Dabei tritt allerdings ein Problem auf, wenn Clients mit unterschiedlichen Regional Settings eingesetzt werden und wenn länderspezifische Datenformate wie z.B. Datumswerte eingesetzt werden. In meinem konkreten Beispiel war das Problem, dass ein Datum übergeben werden sollte, aber auf einigen Clients der Report ein ungültiges Format monierte. Diese Clients hatten en-US als Ländereinstellung. Das Datum nun anzupassen hätte wenig sinn gemacht, da dann die anderen Cleients das Problem hätten. Glücklicherweise gibt es da eine ganz simple Lösung. Man fügt einfach noch einen URL-Parameter ein, über den man angibt in welcher ländereinstellung die Parameter angegeben werden.

Mit dem Parameter rs:ParameterLanguage=de-DE war das Problem bei mir gelöst.

http://msdn.microsoft.com/en-us/library/ms155064.aspx

Monday, August 13, 2012 10:56:08 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Wednesday, June 13, 2012

Scrumit

Nächste Woche, am 19.06.2012 findet der zweite SCRUMit bei der .Net Developer Group Ulm statt. Gegen einen Unkostenbeitrag von nur 20,—€ bekommt man geballte Informationen rund um das Thema agile Software-Entwicklung in Form von Vorträgen und auch durch einen Fish-Bowl in dem die Teilnehmer aktiv miteinander diskutieren. Also ab besten gleich das detaillierte Programm unter www.dotnet-ulm.de anschauen und sich dann gleich anmelden.

Wednesday, June 13, 2012 11:42:52 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Sunday, June 10, 2012

Das Thema C++ scheint tatsächlich doch (wieder) auch bei Microsoft eine große Aufmerksamkeit zu erhalten. Jedenfalls bietet mein Kollege Thomas Trotzki nun eine zweite Runde der erfolgreichen Roadshow C++ Day mit neuen Inhalten und Themen in Zusammenarbeit mit Microsoft an. Also, wer mit C++ entwickelt sollte sich diese kostenlkose Info-Veranstaltung nicht engehen lassen.

 

cpp2

Nach einem sehr erfolgreichen ersten C++Day dieses Jahr und einer sehr gut besuchten ADC C++ möchten wir weiter kontinuierlich Themen für C++ Entwickler anbieten. Daher laden wir zu einem weiteren kostenfreien C++ Day 2012 mit dem folgenden Schwerpunkten ein:

“Windows 8 für C++ Entwickler”, um die neuen sehr guten Möglichkeiten für C++ Entwickler mit Windows 8 zu beleuchten. “ALM für C++ Entwickler”, für alle C++ Entwickler, die Ihre Entwicklungs Infrastruktur optimieren möchten.

Teilnahme: Kostenlos

Wann? Wo?

14.06.2012 14:00 - 19:00 Berlin: DETAILS u. ANMELDUNG
18.06.2012 14:00 - 19:00 München: DETAILS u. ANMELDUNG
25.06.2012 14:00 - 19:00 Köln: DETAILS u. ANMELDUNG
26.06.2012 14:00 - 19:00 Bad Homburg: DETAILS u. ANMELDUNG
03.07.2012 14:00 - 19:00 Ulm/Blaustein: DETAILS u. ANMELDUNG

Folgende Themen erwarten Sie:

14:00 - 15:15 | Windows 8 Metro Style Apps mit C++ und XAML

Unter Windows 8 erhält nun auch der C++ Programmierer die Möglichkeit optisch modernste Benutzerschnittstellen mit XAML zu „deklarieren“ und auf die Windows Runtime (WinRT) zurückzugreifen. Somit steht für Windows 8 Metro Style Apps erstmals ein neues UI Framework zur Verfügung. Dieser Vortrag vermittelt Ihnen die wesentlichen Grundlagen zu Windows 8 Metro Style Apps mit dem dazugehörigen Interaktionsmodell und zeigt, wie Sie mit Visual C++ und XAML eigene Metro Apps erstellen können. Das Konzept des App Stores rundet den Vortrag ab.

15:15 – 15:30 Pause

15:30 - 16:45 | WinRT für C++ Entwickler

Die Windows Runtime (WinRT) ist die neue Library für Metro Style Apps. Mit native C++ lassen sich Komponenten und Treiber für WinRT und damit für Metro Style Apps erstellen. Hierfür hat Microsoft die C++ Syntax wie bereits für C++ /CLI erweitert, es steht nun C++ /CX zur Verfügung. Erfahren Sie in diesem Vortrag, wie Sie mit Visual C++ WinRT Komponenten erstellen und in Metro Apps verwenden können. Ein besonderer Fokus wird dabei auch auf die C++ /CX Spracherweiterungen gesetzt. Eine Abgrenzung von C++ /CX zu C++ /CLI und C# rundet diesen Vortrag ab.

16:45 – 17:15 Pause

17:15 - 18:30 | ALM in C++ Projekten

Im C++ Umfeld werden bislang häufig bis auf Version Control nur vereinzelt weitere Bausteine des ALM verwendet, obwohl es hierfür aus technischer Sicht keine Gründe gibt. Dieser Vortrag richtet sich daher an alle Entwickler, die bislang auf die Vorzüge der Integration der unterschiedlichen ALM Aspekte in Team Foundation Server verzichtet haben. Anhand eines überschaubaren Beispiels wird die Arbeit mit Visual Studio 11 und Team Foundation Server 11 von der Definition eines Requirements, über die Implementierung und die Integration von automatisierten Tests in den zentralen Build Prozess bis hin zum Management von Bugs veranschaulicht. Abschließend gibt der Vortag einen kompakten Ausblick auf die für C++ Entwickler relevanten Neuerungen mit TFS 11.

18:30 - 19:00 Q&A

Sunday, June 10, 2012 7:02:19 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Tuesday, June 05, 2012

SCRUMit Summit 2012

Scrumit

Nach der tollen Resonanz der Veranstaltung im vorigen Jahr gibt es nun eine Fortsetzung der Reihe. Wir laden Sie herzlich ein zum SCRUMit Summit 2012!
Nutzen Sie diese Möglichkeit des Austausches zwischen Experten und Gleichgesinnten über Best Practices und Erfahrungen mit agiler Software-Entwicklung. Wie können wir die Potentiale des agilen Projektmanagements noch effizienter nutzen? Wie können die Herausforderungen in der täglichen Anwendung von Scrum besser bewältigt werden? Welche nützlichen Tipps und Tools gibt es zu dieser Thematik? Antworten auf diese und weitere Fragen, Erfolgsrezepte und Praxistipps präsentieren hochkarätige Speaker auf dem SCRUMit Summit 2012.

Veranstaltungsdaten

Datum: 19.06.2012
Uhrzeit: 9:00 – 17:00 Uhr
Ort: 89134 Blaustein, Oberer Wiesenweg 25
Kosten:     20,-- € zzgl. MwSt. (Pauschale für Snacks, Tagungsgetränke und Mittagessen)

 

Vorträge und Referenten

Produktiver mit Scrum

Häufig verkaufen Berater Scrum als „Silberkugel“ und versprechen erhebliche Produktivitätszuwächse bei einer Scrum-Einführung. Bis zu Faktor 52 wird propagiert. Schade ist nur, dass Scrum an sich nicht besonders viel zur Produktivität beiträgt. Wie kommt es aber dann zu den hohen Zuwachsraten? Woher kommen die Produktivitätsschübe? Dieser Vortrag zeigt auf, was Scrum hinsichtlich der Produktivität beeinflusst und wie es zu Produktivitätsgewinnen kommt. Typische Beispiele aus der Praxis illustrieren das Gesagte realitätsnah.

Dominik Dominik Maximini
ist ein sehr erfahrener ScrumMaster und Coach, der Teams hilft, die Werte von Scrum zu leben. Seine Vision ist, die Grundwerte von Scrum - wie Offenheit und Ehrlichkeit - in Unternehmen hineinzutragen. Seine besonderen Stärken liegen dabei in ökonomischem Denken, Effizienz und guten analytischen Fähigkeiten. Er legt großen Wert darauf, dass nicht nur die Theorie sondern auch Praxiserfahrungen vermittelt werden.

"I have had the opportunity to work with Dominik. He is skilled in Scrum, and more important - applying it to the challenges of software development. I hope others have the same opportunity." Ken Schwaber, Erfinder von Scrum und Gründer der Scrum.org

Scrum-Teams mit Visual Studio ALM 11

Visual Studio ALM 11 bringt einige Neuerungen für SCRUM Teams. Neue Werkzeuge und Dashboards unterstützen Teams vom Backlog über die Sprint Planung bis zum täglichen Standup. Konzeptionell können nun auch größere Projekte Master und Team Backlogs verwenden und nutzen. Leichtgewichtige Anforderungen mit dem Powerpoint StoryBoard Assistant ermöglichen eine effiziente Kommunikation der User Stories zwischen Product Owner und dem Development Team. Im Kontext der Qualitätssicherung wurde ein effizientes Exploratives Testing als komplementäre Teststrategie eingeführt. Ein integriertes Feedback Tool, gibt nun dem Team eine einfache Möglichkeit, strukturiert Feedback einzuholen und schließt somit den Kreis zwischen Anforderung und Implementierung.

Christian Christian Binder
arbeitet als Technologieberater in der Developer Platform & Strategy Group bei Microsoft Deutschland. Aus sieben Microsoft-Jahren im E-Biz-Support als Escalation Engineer kann er auf umfangreiche Erfahrungen im Bereich Enterprise-Applikationen zurückgreifen. Darüber hinaus konnte er während dieser Zeit interessante Erfahrungen bei der Commerce-Server–Produktgruppe in der Microsoft Corporation in Redmond/USA sammeln, was ihn unter anderem zu den Themen Lifecycle-Management und den neuesten .NET-Trends geführt hat.

Scrum vs. Kanban

Kanban, ein Lean-Prozess, hält nun auch mehr und mehr Einzug in der Software-Entwicklung und wird teilweise bereits als Agile 2.0 angepriesen. Und in der Tat gibt es Teams, die mit SCRUM gescheitert sind und nun erfolgreich Kanban einsetzen. Bedeutet das nun, dass SCRUM nicht mehr sinnvoll ist? Der Vortrag stellt zunächst die Grundlagen von Kanban und ein paar Best Practices vor und widmet sich dann der Frage, wie sich Scrum und Kanban unterscheiden, wo die jeweiligen Stärken und Schwächen liegen, in welchen Szenarien welcher Ansatz besser geeignet ist und wie sich beide kombinieren lassen.

Thomas Thomas Schissler
entwickelt seit 1996 Software, seit dem Jahr 2001 ausschließlich mit .NET. Er arbeitet als Coach und Berater in der Nähe von Ulm. Er ist MVP für Visual Studio ALM und Professional Scrum Trainer. Seine Schwerpunkte sind Team Foundation Server, Entwicklungsprozesse, insbesondere SCRUM und Softwarearchitektur. Als Sprecher ist er auf verschiedenen Konferenzen und bei Usergroups unterwegs. Selbst leitet er die .Net Developer Group Ulm (www.dotnet-ulm.de) und die EMEA-Sektion der Visual Studio ALM User Group (www.vsalmug.com).

Agile Test-Strategien

Klassische Test-Strategien sind darauf ausgelegt, dass zwischen Entwicklung und Auslieferung eine intensive Test-Phase erfolgt. Für agile Teams, die auf sehr kurze Auslieferungsintervalle setzen, sind diese Strategien unbrauchbar. Der Vortrag zeigt deshalb auf, wie sich eine effiziente Test-Strategie für agile Software-Projekte von klassischen Ansätzen unterscheidet, welche neuen Methoden und Techniken agile Teams idealerweise benutzen und welche Rolle dabei der Test-Automatisierung zukommt. Darüber hinaus werden aber auch sog. weiche Faktoren wie Team-Organisation und Mindset betrachtet.

Stephen Stephen Flaig
ist seit 2007 Softwareentwickler bei der artiso solutions GmbH. Er arbeitet hier in einem SCRUM Team an der Entwicklung von kundenspezifischen Anwendungen in .Net. Als Qualitäts-Coach beschäftigt er sich mit aktuellen Praktiken und Tools für die Qualitätssicherung und unterstützt die artiso-Teams bei deren Einführung und Anwendung.

 

Scrum für alles und jeden?

Welche Voraussetzungen sollen Scrum-Teams erfüllen?
Welche Voraussetzungen muss das Umfeld bieten?
Und welche Voraussetzungen müssen die Themen mitbringen?
Sind Alternativen oder Ergänzungen zum bekannten Scrum-Prozess erforderlich? Den Antworten auf diese spannenden Fragen nähern wir uns gemeinsam durch Interaktion mit dem Publikum.

Rolf Rolf Beck
gründete zusammen mit Kollegen 1985 die Dr. Wolf & Beck GmbH, die er in 2002 an die Carl Zeiss IMT veräußerte. Seit 2007 ist er Geschäftsführer der Carl Zeiss OIM GmbH, einer 100%igen Tochter der Carl Zeiss AG. Dort stimmte er 2008 der Einführung von SCRUM als SW-Entwicklungs-Prozess-Modell zu und errang mit seiner Mannschaft im Jahre 2009 den Innovationspreis der Carl Zeiss AG im Bereich „Innovative Business Model“. Aktuell sind bei der OIM vier SW-Entwicklungsteams an 3 Standorten (u.a. Indien) aktiv, drei davon arbeiten nach SCRUM. „Meine Erfahrungen als Kleinunternehmer und als Konzernmanager nutzen mir, sowohl die Basis als auch das Management besser verstehen zu können.“

Anmeldung

Für die Planung und Organisation der Veranstaltung ist eine Anmeldung über unser Online-Formular erforderlich. Anmeldeschluss ist Dienstag, der 12.06.2012.
Tuesday, June 05, 2012 7:39:19 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -

# Sunday, June 03, 2012

Nach dem Upgrade der TFS 11 Beta auf TFS2012 RC war bei mir das Product Backlog im Web Access nicht mehr verfügbar. Das liegt daran, dass dieses Feature erst mit der Visual Studio Premium Edition verfügbar ist und die Lizenz erst freigeschaltet werden muss.

image

Das kann man einfach im Administrations-Bereich vornehmen.

image

  1. Im Navigationsbereich ganz oben auf “Control Panel” klicken
  2. Den Tab Web Access auswählen
  3. Die Option Full auf der linken Seite selektieren
  4. Auf “Set as default web access” klicken wenn alle Benutzer über eine entsprechende Lizenz verfügen, ansonsten die entsprechenden benutzer über den Add-Button hinzufügen

Nun steht das Product Backlog zur Verfügung.

image

Sunday, June 03, 2012 8:56:06 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Wednesday, May 16, 2012

Der TFs bietet ein relationales Warehouse und einen OLAP-Cube um auf Daten zuzugreifen, z.B. für Reports. Leider gibt es keine Möglichkeit, PlainText-Felder im Warehouse abzulegen. Es gibt aberhin und wieder die Situation, dass man diese Felder ausgeben möchte. Dazu gibt es verschiedene Möglichkeiten. Die sauberste ist, wenn man die Felder über die TFS API ausliest. Einen etwa schnelleren Weg zeige ich hier auf, auch wenn der nicht ganz sauber ist. Dieser Weg geht direkt auf die operational Datenbank des TFS und stellt damit ein von Microsoft nicht supportetes Szenario dar. D.h. Microsoft kann die Datenbankstruktur jederzeit ohne Vorankündigung ändern was dazu führen kann, dass der Ansatz so nicht mehr funktioniert.

Mit folgender Abfrage auf die Datenbank der entsprechenden Team Project Collection kann man beispielsweise das Description-Feld für alle Work Items abfragen. Die Abfrage ist für den TFS 2010 konzipiert.

SELECT
     dbo.WorkItemsLatest.ID
    ,dbo.WorkItemsLatest.Rev
    ,dbo.WorkItemsLatest.[Work Item Type]
    ,dbo.WorkItemsLatest.Title
    ,dbo.WorkItemsLatest.State
    ,LongTexts.Words    
FROM
dbo.WorkItemsLatest 
    LEFT JOIN
(SELECT
     lt.ID
    ,lt.Rev
    ,lt.Words
FROM 
(SELECT t1.* FROM 
dbo.WorkItemLongTexts t1
LEFT OUTER JOIN dbo.WorkItemLongTexts t2
ON t1.ID = t2.ID AND t1.Rev < t2.Rev
WHERE t2.id is NULL) lt
    INNER JOIN
dbo.Fields 
    ON lt.FldID = Fields.FldID AND Fields.ReferenceName = 'System.Description') LongTexts
    ON dbo.WorkItemsLatest.ID = LongTexts.ID 
Wednesday, May 16, 2012 9:57:03 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Team System Server | VS 2010
# Wednesday, March 28, 2012

Nachdem Unit-Tests in C# und VB.Net inzwischen eine gewisse Verbreitung gefunden habe, werde in letzter Zeit häufiger darauf angesprochen, wie denn C++ Entwickler in Visual Studio Unit-Tests nutzen können. Mein Kollege Thomas Trotzki hat mir dazu mal ein paar Infos zusammengestellt.

Nach dem Unit Tests mit C++ in Visual Studio erstellt werden können aber eben nicht für alle Konstellationen und deshalb möchte ich hier erst mal einen Überblick geben.

  Unit Test
Unmanaged C++
Unit Test
Managed C++ /clr:safe
C# / VB.Net
Unmanaged C++

Dev 11

mit Wrapper

mit Wrapper

Managed C++ /clr

-

VS 2010 / Dev11

VS 2010 / Dev11

Managed C++ /clr:pure

-

VS 2010 / Dev11

VS 2010 / Dev11

Managed C++ /clr:safe

-

VS 2010 / Dev11

VS 2010 / Dev11


Wie man aus der Tabelle ersehen kann, ist es heute (Visual Studio 2010) bereits problemlos möglich, für Managed C++ Unit-Test zu schreiben. Die Experience ist dabei ähnlich zur Experience von C# / VB.Net, nicht zuletzt weil Managed C++ Code auch direkt mit .NET basisierten Unit Tests getestet werden kann. Unmanaged C++ Code hingegen muss in Visual Studio 2010 noch über einen Wrapper getestet werden, da Unit Tests mit der Option /clr:safe erstellt werden müssen, diese aber die direkte Nutzung von Unmanaged Code nicht erlaubt. Dieser kann aber einfach über einen mit der Option /clr erstellten Wrapper angesprochen werden, der dann wiederum im Unit Test eingebunden werden kann.

Hinsichtlich Unit Testing von Unmanged C++ Code gibt es mit der nächsten Version von Visual Studio (Dev11) eine wichtige Neuerung. Dort ist es möglich, auch Unit-Tests in Unmanaged C++ zu schreiben und so Unmanaged C++ Code direkt zu testen.

Weitere Infos finden sich auch noch unter http://msdn.microsoft.com/en-us/library/ms243171.aspx.

Weitere Unit Tests Produkte / Frameworks

Auf Wikipedia wird eine Liste übe verfügbare Unit-Test-Werkzeuge für dieverse Programmiersprachen geführt. Informationen zu C++ gibt’s unter http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B 

Build Integration

TFS Build nutzt MSTest um Unit-Tests auszuführen. Somit lassen sich die Testarten die wir in Visual Studio unterstützt bekommen (z.B. Managed C++ Unit Tests) direkt im Build ausführen.

Mit Dev 11 überarbeitet Microsoft die Unit-Test-Schnittstelle ihrer Build-Werkzeuge. Es wird eine Schnittstelle für die Anbindung anderer Test-Werkzeuge angeboten. Über diese wird eine Anbindung von xUnit und nUnit mit Dev 11 angeboten, somit lässt sich bestehender Test-Code auf dieser Basis auch in Visual Studio und innerhalb der TFS Build Infrastrukur nutzen.

Wednesday, March 28, 2012 10:54:05 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Testing | VS 2010
# Wednesday, March 21, 2012

image

Zusammen mit meinen MVP-Kollegen Sven Hubert und Neno Loje sowie Christian Binder, Daniel Meixner, Patric Boscolo und Uwe Baumann von der Microsoft bin ich am 24.04, 25.04, 26.04 und 10.05 in Deutschland unterwegs um die nächste Version von Visual Studio und TFS vorzustellen.

Agenda

Beginn

Ende

Inhalt

Sprecher

14:00

14:10

Begrüßung

Uwe Baumann, Christian Binder

14:10

15:00

Visual Studio 11: Die neue IDE

Daniel Meixner, Patric Boscolo

15:00

15:15

Pause

 

15:15

16:00

Mehr Produktivität mit Team Foundation Server und Visual Studio 11

Thomas Schissler, Sven Hubert

16:30

17:00

Pause

 

17:00

18:15

Agile Teams mit Visual Studio ALM 11

Neno Loje, Christian Binder

18:15

18:30

Pause

 

18:30

19:00

Ask The Expert

Alle

 

Weitere Informationen und die Anmeldung finden sich hier: http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx

Visual Studio 11 Beta Roadshow Trailer from MSDN Coding Class (Microsoft) on Vimeo.

Wednesday, March 21, 2012 11:30:50 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2] -
Team System Server | Vorträge
# Thursday, March 01, 2012

Um ein Team Projekt in Microsoft gehosteter TFS Lösung zu löchen, gibt es leider keine Funktion in der UI. Es gibt allerdings einen Commandline-Aufruf, der das erlaubt:

tfsdeleteproject /collection:<TeamProjectCollectionURL> <TeamProjectName>

also z.B.

tfsdeleteproject /collection:https://tfsonline.tfspreview.com/DefaultCollection Demo

Thursday, March 01, 2012 1:08:01 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Wednesday, February 29, 2012

Dass die Beta 1 von Visual Studio 11 und Team Foundation Server 11 ab heute veröffentlicht sind, wurde ja bereits an anderern Stellen ausreichend erwähnt. Ich möchte mit diesem Post auf den Ranger “Visual Studio 11 Wave” hinweisen. Die Visual Studio ALM Rangers sind eine Gruppe Freiwilliger die sich aus Mitarbeitern von Microsoft, MVPs und anderen zusammensetzen und die sich zum Ziel gesetzt haben mit Hilfe von Dokumentation, Best Practices, Hands on Labs und Tools die Visual Studio ALM Tools von Microsoft noch produktiver zu machen.

Die Rangers haben zeitgleich mit der neuen Beta einen ganzen Satz von Projekten zu Visual Studio 11 veröffentlicht. Ich selbst habe beim Kanban Projekt und beim Lab Management Projekt mitgewirkt, wer dazu also Fragen hat, kann sich gerne direkt an mich wenden.

Wednesday, February 29, 2012 5:39:45 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

# Wednesday, February 01, 2012

Das Build System des TFS bietet die Möglichkeit einfach neue Parameter für den Build-Workflow zu definieren.

image 

In diesem Beispiel habe ich ein neues String-Argument mit dem Namen “ServerPath” hinzugefügt. Dieses Argument können nun in der Build Definition eingestellt werden.

image

Etwas unschön ist noch, dass wir den Pfad als Text eingeben müssen, schöner wäre hier, wenn wir den Pfad aus der Versionsverwaltung auswählen können. Man kann für die Attribute einen Editor angeben und glücklicherweise gibt es für die Auswahl einer Datei oder eines Pfades aus der Versionsverwaltung bereits einen entsprechenden Editor. Den wollen wir nun einbinden. Dazu müssen wir die Metadaten konfigurieren.

image

image

Der Parameter Name muss hier genau dem Argument-Name entsprechen. Und nun kommt der entscheidende Punkt, wir geben im Feld Editor “Microsoft.TeamFoundation.Build.Controls.ServerFileBrowserEditor, Microsoft.TeamFoundation.Build.Controls” ein. Damit wird nun neben dem Eingabefeld in der Build-Definition ein Button angezeigt mit dem sich der entsprechende Editor öffnen lässt.

image

Wednesday, February 01, 2012 10:58:10 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2010
# Tuesday, January 31, 2012

Thomas Trotzki, ein Kollege von mir, führt im Auftrag von Microsoft die C++ Days durch. Es gibt noch vereinzelt Plätze. Wer also mit C++ arbeitet dem sei diese Veranstaltungsreihe wärmstens empfolen.

C++ Day 2012

C++ geht mit der Zeit – gehen Sie mit! Wir zeigen Ihnen die Neuerungen und Trends in der Microsoft C++-Welt, von neuen Sprachfeatures über effektive Parallelisierung bis hin zu professionellem Software Engineering durch Application Lifecycle Management. Termine gibt es in Berlin, Bad Homburg, Karlsruhe oder Köln. Die Teilnahme ist natürlich kostenlos, aber die Plätze sind begrenzt.

Zugegeben: In den letzten Jahren waren die Neuerungen rund um die „managed“ .Net-Programmierung mit einschlägigen Sprachen wie C# im Fokus der Aufmerksamkeit. So ist .Net zu einer der produktivsten Entwicklungsplattformen gewachsen.

Doch C++ ist zurück im Rampenlicht: Auch im 21. Jahrhundert wird C++ als Programmiersprache nicht weg zu denken sein. In C++ können Sie stets selbst zwischen Performance und Abstraktion wählen. Kein unnötiger Overhead, bei Bedarf volle Kontrolle. Und genau das wird C++ auch in der Zukunft seinen Platz unter den Programmiersprachen sichern – der Trend immer komplexere Anwendungen auf immer kleinere Hardware zu bringen unterstützt dies nachhaltig.

Seit Visual Studio 6.0 hat sich auch in der Microsoft C++-Welt viel getan –also höchste Zeit für ein Wissens-Update.

Wo? Wann?

2.2.2012 14:00- 18:00 Berlin: ANMELDUNG
7.2.2012 14:00- 18:00 Bad Homburg: ANMELDUNG
13.2.2012 14:00- 18:00 Karlsruhe: ANMELDUNG
5.3.2012 14:00- 18:00 Köln: ANMELDUNG
Teilnahme: Kostenlos

Der C++ Day 2012 wird freundlicherweise unterstützt von artiso.

Folgende Themen erwarten Sie:
C++ 11: Modernes C++ im 21. Jahrhundert

C++ bleibt aktuell – neue Sprachfeatures machen den nativen Klassiker fit für neue Herausforderungen. Dieser Vortrag gibt Ihnen einen Überblick über die wesentlichsten Neuerungen in C++ 11 – wie beispielsweise Smartpointer mit Reference-Counting (shared_ptr), Lambda-Expressions, neue Container-Klassen, Iteratoren und Sprachkonstrukte wie for_each sowie RValue References.

Parallel-Power in Visual Studio 11: Konzepte und Tools

Effektive parallele Programmierung erhöht die Performance in vielen Fällen drastisch, braucht aber das richtige Know-How und spezialisierte Tools. Denn bei stetig steigender Anzahl an Cores und CPUs wird es immer wichtiger, das Anwendungsmodell in Richtung Skalierbarkeit hinsichtlich Multiprocessing auszulegen. Auch das Debugging bietet einige Herausforderungen. Verschaffen Sie sich einen Überblick über die neuen Konzepte rund um Parallelisierung in Windows API, Concurrency Runtime und Visual Studio.

Application Lifecycle Management für C++: Die nächste Generation

Application Lifecycle Management ist mittlerweile auch in der nativen Entwicklung Pflicht: Mit Team Foundation Server haben Projektteams jeder Größe ein zentrales Portal für Zusammenarbeit, Versionskontrolle, Work Item Tracking, Build-Management, Prozessunterstützung und Fortschrittsreports . Dies ermöglicht den Mitgliedern von Teams, besser und effizienter zusammenzuarbeiten. Der Haken bisher: Die wichtigsten Features wurden auch für C++ unterstützt, aber bestimmte interessante Features waren der .NET Welt vorbehalten. Die gute Nachricht: Visual Studio 11 zieht hier nun nach – sehen Sie, welche Neuerungen sie erwarten.

Der Referent

imageimage

Thomas Trotzki ist ALM Consultant bei der artiso AG nahe Ulm und Microsoft-C++-Profi der ersten Stunde.

Mit Microsoft C++ und den MFC beschäftigt er sich intensiv seit den ersten Beta-Versionen zu Microsoft C/C++ 7.0, also bereits vor der Geburtsstunde von Visual C++ und Visual Studio.

Technologisch ist er neben C++ und den MFC auch mit COM/DCOM und der gesamten „Managed Welt“ vertraut und hat umfangreiche Expertise im Application Lifecycle Management. Zurzeit betreut er Kunden bei der Einführung von Microsoft Team Foundation Server und berät bei der Etablierung eines Application Lifecycle Management in deren Entwicklungsabteilungen.

Tuesday, January 31, 2012 2:24:51 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Vorträge

Der TFS bzw. der MTM unterstützen leider keine Versionierung von Test Cases. Wenn man nun für unterschiedliche Versionen einer Software Test Cases verwalten möchte, muss man die Test Cases kopieren. Wie damit die Versionierung von Test Cases abgebildet werden kann, habe ich hier beschrieben.

Um das Kopieren größerer Mengen von Test Cases zu vereinfachen, gibt es nun das Test Case Copy Tool von Anna Russo.

http://www.improvingsoftwarequality.com/2012/01/new-version-of-bulk-copy-test-cases.html

Tuesday, January 31, 2012 10:17:17 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Testing | TFS 2010 | Tools | VS 2010
# Monday, November 28, 2011

Ich hatte im IE das Problem, dass sich das Download-Fenster nicht mehr öffnen ließ. Sowohl aus der Download-Leiste am unteren Fensterrand als auch über “View Downloads” ist einfach nichts passiert.

Das Problem ließ sich aber ganz einfach lösen (wenn man weiß wie’s geht clip_image001). Man muss nur die Download-History löschen.

clip_image002

Monday, November 28, 2011 9:22:02 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tipps und Tricks
# Thursday, November 10, 2011

Der TFS bietet die schöne Funktion, Benachrichtigungen per Mail zu versenden. Dafür gibt es eine einfache Einstellung in der Team Foundation Server Administration Console unter dem Punkt „Email Alert Settings“.

clip_image002 

Leider kommt es hier manchmal zu dem Problem, dass die Kommunikation zwischen dem TFS und dem SMTP-Server nicht auf Anhieb klappt und der TFS bietet da leider keine vernünftigen Analyse-Möglichkeiten. Um die Kommunikation zu testen kann man sich behelfen indem man einen Telnet-Client benutzt. Dieser ist auf dem Windows 2008 Server nicht mehr standardmäßig vorhanden, also muss man den erst mal installieren. Dazu einfach im Server-Manager unter Features den Telnet-Client hinzufügen.

 

clip_image004

 

Dann gibt man in der Kommandozeile folgenden Befehl ein:

 

telnet mymailserver 25

 

Damit öffnet sich nun eine Telnet session und der SMTM Server gibt eine entsprechende Meldung aus. Darunter kann man nun Kommandos eingeben. Folgende Abfolge muss man dabei nacheinander eingeben und zwar ohne sich zu vertippen, da eine Korrektur nicht funktioniert. Blau dargestellt sind die jeweiligen Antworten des Systems.

 

helo

250 VS2010.Mobile.Demo Hello [192.168.77.66]

mail from:tfs@artiso.com

250 2.1.0 tfs@artiso.com....Sender OK

rcpt to:tschissler@artiso.com

250 2.1.5 tschissler@artiso.com

data

354 Start mail input; end with <CRLF>.<CRLF>

Subject: TestMail

Das ist eine Test-Mail

 

Abgeschlossen wird die Eingabe durch Drücken von Enter, einem Punkt (.) und dann nochmals Enter.

 

clip_image006

Wenn so eine E-Mail zugestellt wird und man die hier verwendeten Serveradresse und Absender nun auch im TFS einträgt, sollte die Kommunikation auch dort funktionieren. Andernfalls sollte der Telnet eine Fehlermeldung ausgeben. Hilfreich ist, wenn man auf dem TFS mit demselben Account angemeldet ist mit dem auch der TFS läuft da einige SMTP-Server auch den angemeldeten User prüfen.

Thursday, November 10, 2011 10:30:04 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2010
# Wednesday, November 09, 2011

Eine häufige Frage ist, wie ich mit dem TFS und Microsoft Test Manager (MTM) die Versionierung von Test Cases bewerkstellige. Ziel dabei ist, dass ich verschiedene Releases meiner Software mit den dazu passenden Test Cases testen möchte, also z.B. für die aktuelle Entwicklung nutze ich einen neueren Test Cases da sich die Funktion inzwischen verändert hat aber wenn ich einen Hotfix für eine frühere Version testen möchte, benötige ich dafür natürlich den passenden Test Cases zu diesem Release.

Die aktuelle Lösung sieht im MTM so aus, dass man einen Test-Plan je Version einrichtet. In diesem Test-Plan habe ich dann die Test-Cases für die aktuelle Version referenziert. Für die nächste Version legt man einen neuen Test-Plan an und kopiert die Test-Suites.

image

Durch dieses Kopieren wird ein neuer Test-Plan angelegt der dann allerdings auf die selben Test Cases verweist wie die der Plan für die erste Version. Das ist ja genau die Ausgangssituation die man in den meisten Fällen haben möchte denn die meisten Test Cases sind ja in der neuen Version gleich wie in der Vorgänger-Version und diese werden ggf. durch neue Test Cases (z.B. 4a) ergänzt. Wenn sich ein Test Case nun ändert, dann darf dieser im neuen Test-Plan nicht angepasst werden, sonst würde ja damit auch der Test-Plan der Vorgängerversion geändert werden. Statt dessen muss der Test Case kopiert und die Kopie (2b) dem neuen Test Plan zugeordnet werden. Die Kopie kann nun geändert werden.

image

Wer eine größere Menge von Test Cases kopieren muss kann dafür übrigens auch ein Tool verwenden das Anna Russo veröffentlicht hat:

http://improvingsoftwarequality.blogspot.com/2011/11/bulk-copy-test-cases-tool-for-microsoft.html

Wednesday, November 09, 2011 2:23:52 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | Testing | TFS 2010 | VS 2010
# Tuesday, November 01, 2011

Will man auf einen TFS über eine Internet-Verbindung zugreifen, dann bieten sich zwei Wege an: Entweder per VPN oder per SSL. Der Weg über SSL ist eigentlich der einfachere, Nachteil dabei ist allerdings, dass man ein Zertifikat von einer offiziellen Registrierungsstelle kaufen muss. Aber es geht auch ohne.

Dazu muss man zunächst ein Tool aus dem IIS 6 Ressource-Kit herunterladen. Das Tool gibt es auch einzeln hier zum Download.

Damit können wir nun ein SSL-Zertifikat generieren.

selfssl /N:CN=my.domain.com /K:2048 /V:730 /P:443 /S:3 /t

Der Parameter /V gibt die Gültigkeitsdauer in Tagen an, der Parameter /P den Port auf dem SSL laufen soll und /S die ID der Web Site des TFS. Letztere bekommt man einfach heraus indem man die Advanced Settings der Web Site aufruft.

image

Da der TFS im Normalfall ja nicht direkt mit dem Internet verbunden ist, muss der Port noch entsprechend auf der Firewall auf den jeweiligen Server auf dem der TFS läuft weitergeleitet werden. Diese Einstellung hängt natürlich von der jewweils eingesetzten Firewall ab.

Nun können wir eigentlich den Server bereits über den Web Access erreichen, z.B. https://my.domain.com/tfs/web . Achtung hier wird beim Einsatz von SSL kein Port mit angegeben sofern der Standard-Port verwendet wird. Im Browser bekommt man zwar eine Meldung, dass das Zertifikat nicht gültig ist, aber diese kann man entsprechend übergehen.

image

Das Problem ist, dass Visual Studio sich so nicht verbinden mag. Gibt man im Registrierungsdialog für neue Server die URL ein und stellt das Protokoll auf https dann erhält man folgenden Fehler:

---------------------------
Microsoft Visual Studio
---------------------------
Microsoft Visual Studio

TF31002: Unable to connect to this Team Foundation Server: my.domain.com.

Team Foundation Server Url: https://my.domain.com/tfs

Possible reasons for failure include:

- The name, port number, or protocol for the Team Foundation Server is incorrect.

- The Team Foundation Server is offline.

- The password has expired or is incorrect.

Technical information (for administrator):

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
---------------------------
OK   Help  
---------------------------

 

Als Lösung müssen wir auf den Clients das Zertifikat installieren. Dazu muss man das Zertifikat auf dem Server zunächst exportieren. Im IIS Manager dazu einfach auf dem Server die Option Server Certificates doppelt klicken.

image

Dann kann das Zertifikat über die Option Export in eine Datei exportiert werden indem das Ziel und ein Passwort angegeben werden. Diese Datei kopieren wir nun auf den Client und klicken diese dort doppelt an. Es öffnet sich der Certificate Import Wizard. Hier können wir für die ersten beiden Seiten zunächst Weiter klicken. Dann geben wir das Kennwort ein dass wir beim Export angegeben haben. Auf der nächsten Seite geben wir an, dass wir das Zertifikat in einen spezifischen Store importieren wollen, nämlich in den “Trusted Root Certification Authorities”

image

Nun können wir uns auch mit Visual Studio ohne Probleme auf unseren Server verbinden.

Tuesday, November 01, 2011 1:56:11 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
TFS 2010 | VS 2010
# Thursday, October 20, 2011

Die SSRS bieten ein nettes Feature womit sich eine Text Box und andere Controls als Link nutzen lassen. Dazu einfach bei der Textbox unter Action die Option “Go to URL” auswählen.

SNAGHTML1fd585c9

Meine Herausforderung war, dass ich wollte, dass der Link die Zielseite in einem neuen Fenster öffnet, also das selbe wie bei einem <a href=”…” target=”_blank”>. Bei den SSRS muss man allerdings hier zu einem kleinen JavaScript greifen. Der Expression für die URL lautet dann beispielsweise:

="javascript:void(window.open(""http://MyTFS:8080/tfs/web/UI/Pages/WorkItems/WorkItemEdit.aspx?id=" & Fields!System_Id.Value & "&pguid=63302ade-299c-4949-a7ea-351ddd310a32""))"

Thursday, October 20, 2011 9:42:26 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Wednesday, October 19, 2011

Beim Deployment einer neuen Environment kommt folgende Fehlermeldung:

image

TF259115: Team Foundation Server could not find any suitable host to deploy the virtual machine: HPC Template.
Contact your administrator to fix the issues on the hosts below. (Hosts are listed in brackets)
1. Memory requirement of the virtual machine(s) exceeds the available host resources. The placement policy for this host group is set to be conservative and hence virtual machines that are in stopped state are also accounted as consuming host resources. Your administrator can change this policy by running the TfsLabConfig tool. (SarHyperV04)

Der Grund für die Meldung liegt darin, dass das Lab Management zunächst davon ausgeht, dass auf dem Hyper-V Host ausreichend Ressourcen (RAM) verfügbar sein müssen um alle Environments gleichzeitig zu starten um hier auf Nummer sicher zu gehen. Das ist allerdings für die Praxis eher ungeeignet. Hier möchte man auf einem Host mehrere, teilweise sogar viele Environments anlegen von denen dann aber immer nur einzelne laufen.

Glücklicherweise kann man das Verhalten aber konfigurieren. Dazu geht man einfach auf den TFS App-Tier und gibt dort folgenden Befehl ein:

tfsconfig lab /settings /CollectionName:<Collection> /hostGroup /edit /name:<Host Group Name> /labenvironmentplacementpolicy:aggressive

Dabei ist zu beachten, dass für den CollectionName auch wirklich nur der Name und nicht wie an anderen Stellen üblich die URI angegeben wird.

Weitere Infos finden sich hier: http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx

Wednesday, October 19, 2011 3:58:03 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | Team System Server | Testing | VS 2010

Im Team Build lässt sich die Statische Code-Analyse (FxCop) recht einfach aktivieren. 

image

Leider geht es mit StyleCop nicht ganz so einfach. Eine Möglichkeit ist, in den Projektdateien die StyleCop-Analyse einzutragen und dann auf dem Build-Rechner MSBuild die StyleCop-Analyse auszuführen (siehe http://stylecop.codeplex.com/wikipage?title=Setting%20Up%20StyleCop%20MSBuild%20Integration&referringTitle=Documentation)

Alternativ kann man sich auch einfach eine Build Activity bauen die die StyleCop Analyse ausführt. Eine solche Activity habe ich am Ende dieses Posts zum Download bereitgestellt. Um diese zu nutzen entpackt man einfach die DLLs. Diese werden dann in der Versionsverwaltung abgelegt. Diesen Pfad muss man anschließend auf dem Build-Controller registrieren.

image

SNAGHTML161d9502

SNAGHTML161e4efd

Nun können wir im Visual Studio ein Projekt anlegen. Hier referenzieren wir die DLLs aus der ZIP-Datei und kopieren unseren Build-Workflow hinein. Nun können wir im Workflow ein neues Argument vom Typ StyleCopSettings anlegen.

image

Dann brauchen wir noch eine Variable

image

Nun können wir den Workflow erweitern.

image

  <If Condition="[Not String.IsNullOrEmpty(StyleCopSettings.StyleCopSettingsFile) And StyleCopSettings.PerformStyleCopAnalysis]" DisplayName="If StyleCop Settings not empty run StyleCop">
    <If.Then>
      <Sequence>
        <sap:WorkflowViewStateService.ViewState>
          <scg:Dictionary x:TypeArguments="x:String, x:Object">
            <x:Boolean x:Key="IsExpanded">True</x:Boolean>
          </scg:Dictionary>
        </sap:WorkflowViewStateService.ViewState>
        <mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" mtbwt:BuildTrackingParticipant.Importance="Low" 
Input="[StyleCopSettings.StyleCopSettingsFile]" Result="[StyleCopLocalSettingsFile]" Workspace="[Workspace]" />         <absa:StyleCopVerifier AnalysisResults="{x:Null}" ViolationCount="{x:Null}" SettingsFile="[StyleCopLocalSettingsFile]" SourcesDir="[SourcesDirectory]" />       </Sequence>     </If.Then>   </If>

Wenn wir nun auf Basis dieses Workflows eine Build Definition anlegen, können wir die StyleCop Settings dort einstellen und unser Build ob unsere StyleCop Rules auch alle eingehalten werden.

image

Wednesday, October 19, 2011 1:39:28 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Tuesday, October 04, 2011

Ich verwende gerne Excel um mein Product Backlog im TFS zu sortieren. Dazu rufe ich die Work Items des PBL einfach aus Excel ab, sortiere diese und verwende dann die Excel Autonummerierungs-Funktion um den Stack Rank neu zu nummerieren. Das funktioniert sehr gut. Einziger Punkt der immer etwas nervt ist das Ausschneiden und Einfügen der Zeilen im Excel um diese zu verschieben. Hier gibt es allerdings eine elegante Lösung die allerdings ein wenig Fingerspitzengefühl erfordert und die nicht gerade intuitiv ist.

Zuerst markiert man die Zeile(n) die man verschieben möchte

SNAGHTML1498cb94

Dann fährt man mit der Maus auf die obere Kante der Markierung

SNAGHTML149808f1

Nun kann man mit gedrückter rechter Maustaste die Zeile an eine andere Position schieben. Danach öffnet sich ein Kontext-Menü in dem man dann verschiedene Optionen zur Auswahl hat. “Move here” bedeutet das das Ziel überschrieben wird. Für den oben beschriebenen Fall brauchen wir also “Schift Down and Move” damit die verschobene Zeile eingefügt wird.

SNAGHTML149c0e4e

Alternativ kann man auch mit der linken Maustaste verschieben und dann im Verschieben die Shift-Taste drücken. Die Einfügezeile passt sich dann entsprechend an um anzuzeigen das die Zeile eingefügt wird und nicht der Inhalt überschrieben wird (ohne gedrückter Shift-Taste)

SNAGHTML149e8448

Tuesday, October 04, 2011 7:32:32 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Excel | Team System Server | TFS 2010 | Tipps und Tricks
# Friday, September 30, 2011

clip_image002

Für unseren SCRUMit-Event bei der .net Developer Group Ulm ist nun die Agenda finalisiert. Wer also Interesse am Thema Scrum hat, sollte unbedingt mal auf unserer Seite vorbeischauen und sich über den Event informieren. Für schlappe 20,—€ bekommt man hochwertige Informationen von hochkarätigen Sprechern.

Veranstaltungsdaten:

Datum:

13. Oktober 2011, 9.00 – 17.00 Uhr

Ort:

89134 Blaustein, Oberer Wiesenweg 25

 

 

 

Agenda:

Uhrzeit

Thema:

Referent:

9:00 Uhr

Begrüßung

Thomas Schissler

Group-Leiter

9:15 Uhr

Scrum in a nutshell – Kurzeinführung in Scrum

Thomas Schissler

10:15 Uhr

Pause

 

10:30 Uhr

Building the new wave of Agile Tools using Scrum

Christian Binder

Technologieberater, Microsoft Deutschland GmbH

11:30 Uhr

Pause

 

11:45 Uhr

Gewachsene Architektur – kann das funktionieren?

Matthias Rink
Softwarearchitekt, artiso

Thomas Schissler

12: 45 Uhr

Pause

 

13:45 Uhr

Scrum im Unternehmenssystem

Uta Knapp

Unternehmensberaterin und Scrum-Trainerin, Scrum-Events

14:45 Uhr

Pause

 

15:00 Uhr

Scrum für Manager

Rolf Beck

Geschäftsführer, Carl Zeiss OIM GmbH

16:00 Uhr

Pause

 

16:30 Uhr

Fishbowl – Scrum Defects und deren Behandlung

Community

Ab 17:30 Uhr

Zeit für Networking

 

Hier noch die Links auf unserer Seite:

 

Agenda

Abstracts & Informationen zu den Referenten

Anmeldung zur Veranstaltung

Friday, September 30, 2011 11:44:36 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Friday, September 16, 2011

Wir hatten heute die Anforderung dass wir im Lab eine Software installieren mussten die über eine Lizenz freigeschaltet wird. Diese Lizenz is an die MAC-Adresse der Netzwerkkarte gebunden. Ziel war es nun, dass wir mit der selben Lizenz die Software auf mehreren Lab Environments betreiben können. Dabei ging es nicht darum die Lizenzprüfung auszuhebeln sondern mit der selben Konfiguration auf mehreren Labs zu testen. Was nicht funktioniert, ist dass man im Netz mehrere Netzwerkkarten mit der selben MAC Adresse hat. Aber für die virtuellen Maschinen gibt es da eine einfache Lösung. Man fügt einfach eine virtuelle Netzwerkkarte hinzu die nicht mit dem Netz verbunden ist.

Dazu müssen wir in der VM einen weiteren Netwerkadapter hinzufügen den wir einfach auf “Not connected” stellen und für den wir dann eine MAC-Adresse angeben können.

image

Friday, September 16, 2011 5:31:43 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | Team System Server | TFS 2010

Heute hatte ich das Problem bei einem Kunden dass neu angelegte Areas nicht sofort auf den Work Items sichtbar waren. Was zuverlässig geholfen hat, war eine Recycle des Application Pools. Das ist aber natürlich auch keine Lösung. Im Web habe ich einige Threads zu diesem Problem gefunden, aber keine wirkliche Lösung. Deshalb möchte ich hier kurz beschreiben, welche Analysemöglichkeiten es hier gibt.

Zunächsteinmal habe ich folgende Zusammenhänge herausgefunden:

Wenn man in einem Client (Visual Studio, Excel, Project, Web Access etc.) eine Iteration anlegt, wird diese in der DB der Project Collection unter der Tabelle tbl_Nodes eingetragen. Dann wird eine Stored Procedure aufgerufen die eine Verarbeitung antriggert. Diese Verarbeitung wird vom Visual Studio Team Foundation Background Job Agent ausgeführt. Dieser schreibt dann einen neuen Eintrag in die Tabelle TreeNodes. Von dort werden die Items für die Work Items gelesen.

Damit ergeben sich folgende Schritte die ich empfehlen kann um das Problem zu untersuchen:

  1. Prüfen ob der Visual Studio Team Foundation Background Job Agent Dienst läuft und ob dieser mit dem Account ausgeführt wird mit dem auch der TFS installiert wurde.
  2. Prüfen ob die neuen Areas sowohl in tbl_Nodes als auch in TreeNodes eingetragen werden
  3. Für den Visual Studio Team Foundation Background Job Agent kann ein Tracing aktiviert werden. In diesem sollte ein entsprechender Eintrag für die Verarbeitung der Area stehen. Man kann einfach nach dem Namen der neuen Area suchen. Das Tracing aktiviert man in der Datei "C:\Program Files\Microsoft Team Foundation Server 2010\Application Tier\TFSJobAgent\TfsJobAgent.exe.config"
   1:  ...
   2:    <system.diagnostics>
   3:      <trace autoflush="false" indentsize="4">
   4:        <!--To enable tracing to file, simply uncomment listeners section and set trace switch(es) below.
   5:            Directory specified for TextWriterTraceListener output must exist, and job agent service account must have write permissions. -->
   6:        <!--<listeners>
   7:          <add name="myListener" 
   8:            type="System.Diagnostics.TextWriterTraceListener" 
   9:            initializeData="C:\Replace_Me_With_A_Directory_The_Service_Account_Can_Write_To\jobagent.log" />
  10:          <remove name="Default" />
  11:        </listeners>-->
  12:      </trace>
  13:      <switches>
  14:        <!--  Trace Switches
  15:              Each of the trace switches should be set to a value between 0 and 4, inclusive.
  16:                0: No trace output
  17:                1-4: Increasing levels of trace output; see Systems.Diagnostics.TraceLevel-->
  18:        <add name="API" value="0" />
  19:        <add name="Authentication" value="0" />
  20:        <add name="Authorization" value="0" />
  21:        <add name="Database" value="0" />
  22:        <add name="General" value="0" />
  23:        <add name="traceLevel" value="0" />
  24:      </switches> 
  25:     </system.diagnostics>
  26:  ...

Die Zeilen 6-11 müssen einkommentiert und für das Log-File ein gültiger Pfad angegeben werden. Dann kann man die Trace-Levels auf einen Wert zwischen 1 und 4 für die einzelnen bereiche setzen. Ich hatte einfach mall alles auf 4 gesetzt. Natürlich nicht vergessen das nach der Fehleranalyse wieder zurückzusetzen.

Damit sollte sich der Fehler identifizieren und beheben lassen. Viel Erfolg!

Friday, September 16, 2011 4:12:45 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Tuesday, September 13, 2011

Erstellen einer simplen Custom Checkin Policy

In diesem Beispiel wollen wir eine Custom Checkin Policy erstellen die prüft, ob beim Checkin ein Kommentar min einer bestimmten Mindestlänge angegeben wurde. Es gibt ja bereits mit den Powertools eine Policy die prüft, ob überhaupt ein Kommentar angegeben wurde, aber wir wollen auch zu einem gewissen Maße prüfen, ob der Kommentar auch sinnvoll ist indem wir eine Mindestlänge erwarten. Zur Erstellung dieser Policy gehen wir als folgendermaßen vor:

 

1.)      Wir erstellen ein neues ClassLibrary Projekt in Visual Studio

2.)      Wir fügen eine Referenz zur Microsoft.Teafoundation.VersionControl.Client.dll hinzu. Diese findet man unter ReferenceAssemblies im VS DIE Ordner, also z.B. C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.VersionControl.Client.dll

3.)      Wir leiten unsere Klasse von PolicyBase ab und lassen Stubs generieren. Der Zwischenstand sieht dann so aus:
clip_image002[4]

4.)      Wir setzen nun die Properties mit entsprechenden Werten, z.B.

public override string Description

        {

            get

            {

                return "Will check if the checkin comment is at least 10 letters long.";   

            }

        }

 

        public override bool Edit(IPolicyEditArgs policyEditArgs)

        {

            return true;

        }

 

        public override PolicyFailure[] Evaluate()

        {

            throw new NotImplementedException();

        }

 

        public override string Type

        {

            get

            {

                return "Changeset Comments Length Policy";

            }

        }

 

        public override string TypeDescription

        {

            get

            {

                return "This policy will require users to provide checkin comments of a minimum length.";

            }

        }

Wichtig sind hier vor allem Type und Type Description da diese bei der Auswahl der Policy angezeigt werden.

5.)      Nun wollen wir die Evaluate-Methode implementieren. Diese wird vor dem Checkin ausgeführt und liefert mögliche Verletzungen der Policy zurück. Nur wenn keine Verletzungen gemeldet werden, wird der Checkin ausgeführt. Da wir hier den Checkin Comment prüfen wollen, brauchen wir Zugriff auf das Changeset. Dazu brauchen wir zuerst ein Feld das den Checkin enthält:

 

private IPendingCheckin currentPendingCheckin;

 

6.)      Nun überschreiben wir die Initialize-Methode und setzen hier unser currentPendingCheckin:

 

public override void Initialize(IPendingCheckin pendingCheckin)

{

    base.Initialize(pendingCheckin);

 

    currentPendingCheckin = pendingCheckin;

}

                                                                                                                        

7.)      Anschließend implementieren wir unsere Validierungslogik in der Evaluate-Methode:

public override PolicyFailure[] Evaluate()

{

    var failures = new List<PolicyFailure>();

    if (currentPendingCheckin.PendingChanges.Comment.Length < 10)

    {

        failures.Add(new PolicyFailure("Checkin Comment is too short, at least 10 letters are required", this));

    }

    return failures.ToArray();

}

 

8.)      Dann folgt noch ein wichtiger Schritt, wir müssen die Klasse serialisierbar machen

[Serializable]

public class CheckinCommentLengthPolicy : PolicyBase

 

9.)      Nun kompilieren wir die Solution und kopieren die DLL in einen lokalen Ordner. Anschließend tragen wir in der Registry unter „HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin Policies“ einen neuen String Value ein dem wir den Pfad zu unserer Assembly übergeben. Der angegebene Pfad in der Registry ist dabei für x64 Systeme angegeben. Bei c86 Systemen lautet der passende Pfad „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin Policies“.

clip_image004[4]

 

10.)   Nun starten wir Visual Studio neu und aktivieren die neue Checkin Policy. Dazu klicken wir im Team-Explorer mit der rechten Maustaste auf das Team-Projekt dann unter Team Project Settings / Source Control und dort wechseln wir dann auf den Reiter „Check-in Policy“. Über den Button Add können wir unsere Policy auswählen und hinzufügen.

clip_image006[4]

 

11.)   Nun können wir einen Eincheckvorgang vornehmen und wir werden sehen, wenn wir einen leere checkin Comment angeben oder einen zu kurzen, erhalten wir eine Meldung.


 

clip_image008[4]

 

Konfigurierbarkeit der Policy hinzufügen

Nun wollen wir die Anzahl der Mindestzeichen noch konfigurierbar machen. Dazu erweitern wir unsere Policy.

 

1.)   Zunächst fügen wir einen Winforms-Dialog hinzu der für die Eingabe des Wertes dient.
clip_image010[4]

2.)   Im Code definieren wir ein public field über das wir die Anzahl übergeben bzw. auslesen können.

public partial class CheckinCommentLengthConfigDialog : Form

{

    public int MinimumCommentLength;

 

    public CheckinCommentLengthConfigDialog()

    {

        InitializeComponent();

    }

 

    private void btnOK_Click(object sender, EventArgs e)

    {

        MinimumCommentLength = (int)this.numericUpDown1.Value;

    }

 

    private void CheckinCommentLengthConfigDialog_Load(object sender, EventArgs e)

    {

        this.numericUpDown1.Value = MinimumCommentLength;

    }

}

3.)   Im Code unserer Policy fügen wir ein private field hinzu in dem wir den Wert speichern können und verwenden diesen in unserer Evaluate Methode. Zusätzlich geben wir im Property CanEdit den Wert true zurück. Und wir implementieren die Edit-Methode so, dass hier unser Formular aufgerufen wird:

public override bool Edit(IPolicyEditArgs policyEditArgs)

{

    using (CheckinCommentLengthConfigDialog dialog = new CheckinCommentLengthConfigDialog())

    {

        dialog.MinimumCommentLength = minimumCommentLength;

        if (dialog.ShowDialog() == DialogResult.OK)

        {

            minimumCommentLength = dialog.MinimumCommentLength;

            return true;

        }

        return false;

    }

}

 

public override bool CanEdit

{

    get

    {

        return true;

    }

}

4.)   Nach dem Kompilieren können wir dann die DLL an den Ort kopieren den wir in der Registry eingetragen haben (bei mir c:\temp). Damit diese Date überschrieben werden kann, müssen wir Visual Studio beenden. Nun können wir für unsere Policy den Edit-Dialog aufrufen:

clip_image012[4]

 

Verbessertes Deployment der Policy

Nun wollen wir das Deployment unserer Policy nov vereinfachen. Aktuell wäre es so, dass auf jedem Rechner auf dem die Policy geprüft werden soll die DLL kopiert und der entsprechende Registry-Eintrag vorgenommen werden muss. Das ist natürlich nicht besonders elegant. Wir müssen die Policy zwar auf jedem Rechner installieren, da sonst die Policy immer als verletzt gilt, aber die Installation können wir durch den Einsatz von VSIX deutlich einfacher machen.

 

1.)   Zunächst müssen wir das Visual Studio SDK herunterladen und installieren. Der Download für die SP1-Version befindet sich unter http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307C23-F0FF-4EF2-A0A4-DCA54DDB1E21

2.)   Dann fügen wir ein neues Projekt zu unserer Solution hinzu und wählen die Vorlage VSIX Project

clip_image014[4]

 

3.)   Im Manifest des VSIX Projektes tragen wir nun die entsprechenden Werte ein und fügen unser Policy-Projekt als MEF Component im Bereich Content hinzu.

clip_image016[4]

 

4.)   Damit unser Eintrag in der Registry noch hinzugefügt wird, fügen wir noch eine Text-Datei mit dem Namen „Policies.pkgdef“ hinzu und schreiben dort folgenden Inhalt rein:

[$RootKey$\TeamFoundation\SourceControl\Checkin Policies]

"artisoCheckinPolicies"="$PackageFolder$\artisoCheckinPolicies.dll"

 

5.)   Wichtig ist noch, dass wir bei der pkgdef-Datei in den Eigenschaften „Include in VSIX“ auf True stellen.

clip_image018[4]

 

6.)   Nun kompilieren wir unsere Solution. Wenn alles fehlerfrei erstellt wird, bereinigen wir zunächst unsere manuellen Einstellungen, d.h. wir entfernen zunächst die Policy auf unserem Team-Projekt. Anschließen löschen wir die DLL und die Registry-Einträge die wir im ersten Teil angelegt haben. Dazu müssen wir zuvor Visual Studio wieder beenden. Nach dem Entfernen sollte die Policy in der Liste der verfügbaren Checkin Policies nicht mehr erscheinen. Aus dem Output unseres Setup-Projektes können wir nun die vsix-Datei starten und die Policy installieren.

clip_image020[4]

 

7.)   Danach sollte sich die Policy genauso aktivieren lassen wie zuvor.

Tuesday, September 13, 2011 12:30:13 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Team System Server | TFS 2010 | TFS API | VS 2010
# Friday, September 09, 2011

image

Auf der diesjährigen NRW Conf in Wuppertal hatte ich am ersten Konferenztag einen ganztägigen Workshop zum Thema SCRUM und am zweiten Tag einen Vortrag zum Thema Agile Projektplanung mit Scrum und User Stories. Die Veranstaltung war wieder einmal super organisiert und sowohl der Workshop als auch der Vortrag waren sehr gut besucht.

Die Folien zum Vortrag können hier heruntergeladen werden:

Friday, September 09, 2011 5:53:58 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

scrumit_g

Die .Net Developer-Group Ulm bietet am 13.10. die Möglichkeit sich 1 Tag lang rund um das Thema SCRUM zu informieren. Hochkarätige Sprecher werden ihre Erfahrung und ihr Wissen zu Scrum weitergeben. Die Themen sind dabei breit gefächert. Vom Einsteigervortrag über tiefgreifende Aspekte von Scrum für diejenigen die Scrum bereits nutzen bis hin zu Erfahrungsberichten decken wir ein breites Spektrum ab. Da ist für jeden etwas bdabei, egal ob Entwickler, Scrum-Master, Product Owner oder Entscheider, egal ob sie planen SCRUM einzuführen, sich nur mal informieren wollen oder SCRUM bereits einsetzen.

Für eine Verpflegungspauschale von nur 20,—€ bekommen sie geballte Informationen aus Expertenhand und können sich mit vielen Gleichgesinnten austauschen. Also nicht zögern, sondern am besten gleich anmelden, die Plätze sind limitiert.

Anmeldung unter: http://www.dotnet-ulm.de/Anmeldung.aspx

Weitere Informationen und die Agenda in Kürze.

Friday, September 09, 2011 5:23:24 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Scrum | Usergroup
# Tuesday, August 30, 2011

Zwei Felder auf den Workitems im Team Foundation Server sind Area und Iteration. Das besondere an diesen Feldern ist, dass sie hierarchische Inhalte abbilden. Als Standard-Wert haben diese Felder den jeweiligen Root-Knoten der gleich heißt wie das zugehörige Teamprojekt.

image

Um zu verhindern, dass Workitems nicht einer spezifischen Area oder Iteration zugeordnet sind und damit von entsprechenden Queries nicht mehr erfasst werden, wäre es ideal, wenn man erzwingen könnte, dass eine spezifische Area oder Iteration ausgewählt sein muss.

Leider schlagen die naheliegenden Lösungsansätze fehl. Wenn man auf dem IterationPath oder der IterationID eine REQUIRED-Rule definiert, dann greift diese nicht, da die Iteration ja nicht leer ist. Wenn man versucht mit deiner PROHIBITETED-Rule den Rootknoten zum ungültigen Wert zu erklären, dann funktioniert das leider auch nicht. Dieser Versuch wird quitiert mit der Meldung

---------------------------
Error
---------------------------
Error importing work item type definition:

TF26062: Rule '<REQUIRED />' is not supported for the field 'System.IterationPath'.
---------------------------
OK  
---------------------------

 

Deshalb müssen wir hier ein wenig in die Trickkiste greifen. Dazu legen wir zunächst ein neues String-Feld an

      <FIELD refname="artiso.Iteration" name="Iteration" type="String">
        <WHEN field="System.IterationPath" value="Training">
          <COPY from="value" value="Empty" />
        </WHEN>
        <WHENNOT field="System.IterationPath" value="Training">
          <COPY from="value" value="Valid" />
        </WHENNOT>
        <PROHIBITEDVALUES>
          <LISTITEM value="Empty" />
        </PROHIBITEDVALUES>
      </FIELD>

Wenn das Feld IterationPath den Inhalt “Training” (Root-Knoten) hat, dann wird in dieses Feld “Empty” geschrieben, ansonsten “Valid”. Zusätzlich wird “Empty” als unzulässiger Wert definiert. Dieses Feld fügen wir nicht in’s Layout ein, sondern lassen es unsichtbar. Dadurch haben wir eine Validierung ob im Iterations-Feld ein andeer Wert als der Root-Wert eingetragen ist. Einzige unschönheit dabei ist, dass die Meldung nicht eindeutig zu dem Feld zugeordnet ist. Aber der gleiche Ansatz funktioniert für auch für Areas.

image

image

Tuesday, August 30, 2011 1:06:45 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Team System Server | Tipps und Tricks | VS 2010
# Friday, August 26, 2011

Das Lab Management des Team Foundation Servers eignet sich besonders gut um darin Coded UI Tests automatisiert im Rahmen eines Builds auszuführen. Der Build setzt die VM dabei auf einen Snapshot zurück, deployed die Applikation dann in die VM und führt dann die CUIT aus. Wie das Ganze funktioniert habe ich in einem Webcast beschrieben (http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032476976).

Dabei kann allerdings nun ein Problem auftreten. Der Test meldet bei der Ausführung:

“Automation engine is unable to playback the test because it is not able to interact with the desktop.  This could happen if the computer running the test is locked or it’s remote session window is minimized.”

Das Problem besteht darin, dass der CUIT eine interaktive Desktop Session benötigt um darin ausgeführt werden zu können. Als ich mich mit dem Environment Viewer auf die Environment verbunden habe, konnte ich feststellen, dass die VM beim Anmeldebildschirm stand. Das hatte ich nicht erwartet das die VM mit einem Autologon versehen war und ich den Snapshot auch im angemeldeten Zustand erstellt habe. ich hätte also erwartet, dass die VM nach einem Restore des Snapshots auch wieder angemeldet ist und der Test problemlos laufen kann.

Um die Ursache des Problems zu erläutern müssen wir etwas tiefer einsteigen. Der Environmen Viewer hat 2 Betriebs-Modi. Einmal Host-based und einmal Guest-based. Der aktuelle Modus wird rechts unten im Environment Viewr angezeigt

image

Host-based ist dabei die Verbindungsart bei der der Environment Viewer über den Hyper-V Host auf die VM zugreift. Dieser Modus erlaubt es auch mit der VM zu interagieren wenn diese noch gar nicht komplett hochgefahren ist, z.B. um aus dem Boot-Menü einen Eintrag zu wählen.

Guest-based ist eine normale RDP (Remote Desktop Protocol) Verbindung. Dafür muss die VM bereits hochgefahren sein. Guest-based Verbindungen sind etwas performanter und erlauben auch zusätzliche Features wie z.B. den Austausch von daten über die Zwischenablage.

Host-based wird dann verwendet wenn:

1.) Der client der den Environment Viewer ausführt als Betriebssystem mindestens Windows XP SP3, Windows Visua SP1, Windows 7 oder Windows Server 2008 ausführt und
2.) Der Benutzer der den Environment Viewer ausführt auch der Ownder der Environment ist

image

Weitere Informationen zu den verschiedenen Connection Types finden sich unter http://msdn.microsoft.com/en-us/library/ee518907.aspx.

Zurück zu dem obenen beschriebenen Problem. Der Build funktioniert nur dann, wenn der Snapshot auf den der Build zurücksetzt im Host-based Modus erstellt wurde. Andernfalls bekommt man auch in der Build Definition bei der Auswahl des Snapshots einen entsprechenden Hinweis.

image

Zu beachten ist allerdings, dass dieser Hinweis nur an dieser Stelle kommt, d.h. wenn man den Wizard des Lab BuildProcessTemplates anzeigt oder bei der Ausführung bekommt man keinen Hinweis mehr. Problem bei mir war, dass ich den Snapshot initial im Host-based Modus erstellt hatte und damit den Build angelegt habe. Anschließend habe ich den Snapshot aber gelöscht und neu angelegt und nun war ich im Guest-based Modus.

Problem-Lösung:

Wie lösen wir nun also dieses Problem? Es gibt zwei Möglichkeiten:

1.) Wir erstellen die Snapshots immer im Host-based Modus. Dazu müssen wir im Environment Viewer mit dem Benutzer angemeldet sein der auch der Owner der Environment ist. Wie man den Owner einer Environment ändert ist hier beschrieben: http://blogs.msdn.com/b/lab_management/archive/2010/11/08/enabling-host-based-connection-for-virtual-environments.aspx

2.) Wir verwenden einen Snapshot der im nicht gebooteten Zustand der VM erstellt wird. Der Build startet die VM dann automatisch und die VM nutzt einen Autologon um sich anzumelden. Damit kann der CUIT nun auch ausgeführt werden.

Friday, August 26, 2011 12:28:13 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | Team System Server | Testing | TFS 2010 | VS 2010
# Tuesday, August 09, 2011

Ich bin vor kurzem auf ein unangenehmes Verhalten der TFS Work Item Queries gestossen. Als Operator für textfelder bietet der TFS hier “Contains” an. Damit kann man nach Teiltexten suchen, also z.B. findet eine Suche nach “Admin” Treffer mit “Admin”, “Administrator”, Administration” etc.

image

Das funktioniert aber leider nur mit String-Feldern und nicht mit Plaintext. Bei Plaintext funktioniert nur die Suche nach ganzen Wörtern. Das ist auch beim Einsatz des Plugins Search Work Item for TFS 2010 der Fall, da diese Erweiterung im Hintergrund Queries verwendet und man nicht deutlich erkennt, dass man nur eine Teilmenge erhalten hat, da die Suche zwar in String-Feldern Teiltextegefunden hat aber nicht in den Plaintext-Feldern.

image

Das Problem dabei ist, dass der TFS hier die Full Text Search Engine des SQL-Servers verwendet der dieses Verhalten besitzt. Als Workaround, der allerdings nicht besonders schön ist, kann man sich behelfen indem man die Full Text Search Engine vom SQL-Server deinstalliert. Alss Fallback sucht der TFS dann direkt auf den DB Tabellen und kann dann auch auf Plaintext Teiltexte finden. Natürlich wirkt sich das negativ auf die Performance der Suche aus, aber in einigen Fällen ist dieser Nachteil akzeptabel. Die Full Text Seach Engine kann man übrigens entfernen indem man das SQL Server Setup erneut aufruf und dann auf Remove klickt. Keine Angst, das deinstalliert nicht den gesamten SQL-Server, sondern man kann in einer Liste die zu deinstallierenden Features auswählen.

Tuesday, August 09, 2011 7:57:22 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -

# Tuesday, July 19, 2011

image

Auf den ALM Days 2011 am 23.11 werde ich einen Workshop anbieten zum Thema “Scrum mit TFS”. Dabei werde ich zeigen, wie man mit dem TFS Scrumm effizient umsetz, welche Tricks es gibt um bestimmte Szenarien abzubilden und wie Visual Studio 2010 und TFS dabei helfen können Herausforderungen bei agiler Entwicklung zu lösen.

Abstract: Agilität ist in und wer agil sagt, meint fast immer Scrum. Die Konzepte die hinter Agilität stehen versprechen nicht nur effizientere Projekte sondern auch motiviertere Teams mit mehr Spass am Entwickeln. Wer mit Scrum arbeitet steht vor der Wahl, entweder ein Teamboard einzurichten auf dem Artefakte mit Zetteln verwaltet werden oder auf ein Tool zu setzen um die Artefakte elektronisch abzubilden. Der Workshop zeigt, wie sie mit dem TFS Scrum effizient abbilden und dabei die eine oder andere Hürde überwinden. Dabei wird nicht nur auf den Planungsprozess eingegangen sondern es wird auch aufgezeigt, wie Visual Studio 2010 und der TFS verschiedene Herausforderungen im Bereich der agilen Entwicklung wie z.B.agiles Testing lösen. Kurzum, dieser Workshop ist für jeden ein Muss der mit dem TFS arbeitet und agiler werden möchte oder der Scrum einsetzt und sich eine passende Toolunterstützung wünscht.

Weitere Infos unter http://www.teamconf.de/workshops/articles/ganztagesworkshop-1-mein-tfs-kann-scrum-wie-der-tfs-effizient-mit-scrum-genutzt-werden-kann.html

Tuesday, July 19, 2011 4:52:27 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Wednesday, June 22, 2011

Es gibt häufiger die Situation, dass man die Url des Team Project Portals eines TeamProjects per API ermitteln möchte um beispielsweise im zugehörigen Portal Dokumente zu generieren oder abzulegen etc. Hier kann man natürlich versuchen sich die Url aus Server-URL, Project Collection Name und Project Name zusammenzubauen, also http://<servername>/sites/<ProjectCollection>/<TeamProject>. Problem ist, dass die Url frei konfiguriert werden kann und von diesem Default-Wert abweichen kann.

Mein Szenario ist, dass ich ausgehend von einem Work Item die Url des Projekt Portals ermitteln möchte um für das Work Item ein entsprechendes Dokument anzulegen. Das Projekt zum Work Item lässt sich einfach ermitteln mit myWorkItem.Project aber auf dem Projekt sucht man vergeblich nach einer Eigenschaft für das Portal. Der Zugriff darauf istt leider ein wenig komplizierter. Die einzige Möglichkeit die Prortal Url zu ermitteln geht über den TFS Catalog. Der Code sieht dann so aus:

  1. private static string GetProjectPortalUrl(WorkItem wi)
  2. {
  3.     // Get the CatalogeNode representing the ProjectCollection the work item is assigned to
  4.     CatalogNode projectCollectionNode = wi.Store.TeamProjectCollection.CatalogNode;
  5.  
  6.     // Getting the CatalogNode represeting the TeamProject by querying for the project name
  7.     CatalogNode projectNode = projectCollectionNode.QueryChildren(
  8.            new Guid[] { CatalogResourceTypes.TeamProject },
  9.            new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("ProjectName", wi.Project.Name) },
  10.            true,
  11.            CatalogQueryOptions.None)[0];
  12.  
  13.     // Querying for the ProjectPortal
  14.     ReadOnlyCollection<CatalogNode> PortalNodes = projectNode.QueryChildren(
  15.            new Guid[] { CatalogResourceTypes.ProjectPortal },
  16.            true,
  17.            CatalogQueryOptions.None);
  18.  
  19.     // If the ProjectPortal is set, return the Url, otherwise return an empty string
  20.     if (PortalNodes.Count > 0)
  21.     {
  22.         return PortalNodes[0].Resource.Properties["FullyQualifiedUrl"];
  23.     }
  24.     return "";
  25. }

Wir ermitteln zunächst den CatalogNode für die Project Collection unseres Work Items. Davon ausgehend ermitteln wir dann den Knoten für das Projekt mit Hilfe des Projektnamens den wir von dem Work Item lesen. Vom Projekt aus können wir nun den Project Portal Knoten ermitteln der die Url beinhaltet.

Wednesday, June 22, 2011 10:52:04 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | TFS API
# Wednesday, June 08, 2011

image

Von artiso gibt es jetzt auch Planning Poker® Karten. Planning Poker® ist eine sehr gute Möglichkeit, im Team Komplexitätsschätzungen für Anforderungen vorzunehmen. Dies ist insbesondere bei agilen Methoden eine sehr gute Vorgehensweise. Am Beispiel von Scrum möchte ich kurz erläutern, wie so eine Planning Poker Runde abläuft:

Der PO trifft sich mit dem Team für ein Estimation. Der PO stellt dem Team eine User Story vor und das Team stell so lange Fragen bis es schätzfähig ist.Dann zieht jeder Teilnehmner eine Karte, hält diese aber zunächst verdeckt um die anderen Teilnehmer bei ihrer Schätzung nicht zu beeinflussen. Alle decken ihre Schätzung gleichzeitig auf. Der Teilnehmer mit der höchsten und mit der niedrigsten Schätzung begründen nun ihre Schätzung. Dabei werden Argumente ausgetauscht warum die Komplexität so hoch bzw. so niedrig ist. Die anderen Teilnehmer können sich natürlich an der Diskussion beteiligen. Unter den neuen Diskussionsaspekten findet dann eine neue Schätzrunde statt. Hat das Team eine Näherung erziehlt, dann wir die häufigste Nennung als Wert für die Schätzung übernommen.

Eine häufige Diskussion ist, ob nur das Team schätzt oder der PO auch eine Schätzung abgibt. Ich bevorzuge es, wenn der PO mitschätzt. Da wir mit Story Points relative Komplexitäten schätzen, sond Bedenken meist unbegründet, dass der PO die Schätzung “drücken” möchte. Aber bei Abweichungen der Abschätzung von PO und Team werden oftmals durch die Diskussion Missverständnisse oder unterschiedliches Verständnis der Anforderung aufgedeckt.

Der Vorteil von Planning Poker® liegt nun nicht nur darin, genauere Schätzungen zu erhalten, sondern man vermeidet die Situation dass bei solchen Schätzrunden wenige aktiv die Schätzung beeinflussen und die anderen passiv dabei sitzen und nur die Vorschläge abnicken.

Die Karten von artiso besitzen noch eine Besonderheit. Hier gibt es zwei Skalen. Mit den Werten auf den weißen Flächen mit der Reihung ?,0,½,1,2,3,5,8,13,20,40,100,∞ werden Story Points geschätzt. Die andere Seite mit den Werten ?,½,1,2,3,4,6,8,10,12,16,20,25 kann dazu genutzt werden, Aufwände in Stunden nach dem selben Vorgehen zu schätzen.

Unter den Lesern meines Blogs verlose ich 5 Sets zu je 8 Decks. Einfach Mail an tschissler (at) artiso.com schicken, die ersten 5 Einsedungen erhalten die Karten umgehend per Post zugeschickt.

Wednesday, June 08, 2011 10:59:43 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -

# Monday, May 09, 2011

image

Auf der dotnet Cologne war ich dieses Jahr mit 2 Vorträgen vertreten, einmal mit dem TFS 2010 Quickstart wo ich innerhalb des Vortrags in einer Stunde live einen TFS installiert, die Versionsverwaltung und den Build eingerichtet, Requirements und Test Cases angelegt, Testfälle spezifiziert und ausgeführt, Bugs angelegt und die Traceability demonstriert. Im zweiten Vortrag habe ich verschiedene Best Practices zu SCRUM vorgestellt und die Umsetzung mit TFS vorgestellt. Es war wieder eine tolle Konferenz, vielen Dank an das Orga-Team.

Wer sich nochmals die Folien anschauen mag, hier sind die Links zum Download. Wenn es nachträglich noch Fragen gibt, dann könnt ihreuch gerne per Mail an mich wenden.

Monday, May 09, 2011 12:49:42 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Scrum | TFS 2010 | Vorträge
# Tuesday, April 19, 2011

Reporting Services cachen Reports um eine höhere Ausführungsgeschwindigkeit zu erreichen. Es gibt allerdings einige Szenarien wo dadurch nicht die gewünschten aktuellsten Daten im Report angezeigt werden, vor allem beim Entwickeln von neuen Reports. Deshalb kann es in diesen Fällen sinnvoll sein das Caching abzuschalten. Dazu geht man auf http://<SSRS Server>/reportserver, wechselt zu dem entsprechenden Report und ruft aus dem Dropdonw-Menü dn Punkt Verwalten auf (bei SQL Server 2008 R2, im SQL Server 2008 geht das über den Reiter “Eigenschaften”)

image

Im Bereich “Verarbeitungsoptionen” (Ausführung bei SQL Server 2008) kann dann die Option “Keine temporären Kopien dieses Berichts zwischenspeichern” ausgewählt werden.

image

Tuesday, April 19, 2011 4:12:33 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
SQL
# Tuesday, March 15, 2011

Es gibt verschiedene Situationen in denen man nachträglich Reports oder SharePoint Dokumente nachträglich für ein bestehendes Team Project einrichten möchte, z.B. nach einer Migration von einer älteren TFS Version oder wenn das Projekt ohne Reports oder SharePoint Portal angelegt wurde. Dafür gibt es bei den Team Foundation Server Power Tools die Befehle

  • tfpt addprojectportal   Add or move portal for an existing team project
  • tfpt addprojectreports  Add or overwrite reports for an existing team project

Mit dieser Methode hatte ich aber bereits mehrfach Probleme und die Einstellungen sind auch nicht so feingranular möglich. Deshalb möchte ich hier eine andere Methode beschreiben. Hierzu legt man zunächst eine XML-Datei an. Für die SharePoint-Dokumente sieht die XML-Datei folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="ProjectCreationSettingsFileSchema.xsd">
<TFSName>http://vs2010:8080/tfs/sandbox</TFSName>
<LogFolder>c:\Temp\</LogFolder>
<ProjectName>VS2010_Demos</ProjectName>
<AddFeaturesToExistingProject>true</AddFeaturesToExistingProject>
<ProjectSiteEnabled>true</ProjectSiteEnabled>
<ProjectSiteWebApplication>VS2010</ProjectSiteWebApplication>
<ProjectSitePath>/sites/sandbox/vs2010_demos/</ProjectSitePath>
<ProjectSiteTitle>VS2010 Demos</ProjectSiteTitle>
<ProjectSiteDescription>Demo</ProjectSiteDescription>
<ProcessTemplateName>MSF for Agile Software Development v5.0</ProcessTemplateName>
</Project>
 
Für die Reports hat die Datei folgenden Aufbau:
 
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="ProjectCreationSettingsFileSchema.xsd">
<TFSName>http://vs2010:8080/tfs/sandbox</TFSName>
<LogFolder>c:\temp</LogFolder>
<ProjectName>VS2010_Demos</ProjectName>
<AddFeaturesToExistingProject>true</AddFeaturesToExistingProject>
<ProjectReportsEnabled>true</ProjectReportsEnabled>
<ProjectReportsForceUpload>true</ProjectReportsForceUpload>
<ProjectSiteEnabled>false</ProjectSiteEnabled>
<ProcessTemplateName>MSF for Agile Software Development v5.0</ProcessTemplateName>
</Project>


Die Parameter sollten weitgehend selbsterklärend sein, eine weitere Beschreibung finden sich hier. Diese XML-Dateien können nun ausgeführt werden indem im Command-Window innerhalb von Visual Studio der Befehl

File.BatchNewTeamProject <XML-Datei>

Der Import wird damit angestoßen. Zu beachten ist, dass der Vorgang eine Weile dauern kann. Den Erfolg des Imports kann man in der Log-Datei im angegebenen Ordner überprüfen.

Tuesday, March 15, 2011 2:47:51 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Monday, March 14, 2011

Inzwischen hat es sich sicher herumgesprochen, dass das SP1 für Visual Studio und den TFS verfügbar ist. Allerdings bekomme ich einige Fragen zu Installation, was muss wo installiert werden. Deshalb möchte ich hier auf einen Blog Post von Brian Harry verweisen der die Details beschreibt.

Und dann möchte ich noch auf einen Punkt aufmerksam machen der vielleicht etwas untergegangen ist. Ab sofort steht den Besitzer einer Visual Studio 2010 Ultimate mit MSDN Subscription der Load Test Virtual User Pack für eine unbegrenzte Anzahl virtueller User zur Verfügung. Damit sind nun Load Tests ohne zusätzliche Lizenzkosten möglich. Und Load Tests sind nicht nur für Stress Tests sinnvoll sondern können auch Concurrency-Probleme aufdecken und eignen sich auch sehr gut um Performance-Tests auch für kleinere Anwendungen. Weitere Infos zur Lizenzänderung gibt es hier: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack

Monday, March 14, 2011 10:23:14 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2010
# Tuesday, February 22, 2011

Bei verschiedenen Diagrammtypen, z.B. stacked Areas möchte man das Diagramm am Ende gerade abschneiden und nicht zunächst noch einen 0-Wert anzeigen.

Also statt der Schräge am Ende des Diagramms (zum 23.02 liegen keine Werte vor)

image

hätte man das lieber sauber abgeschnitten um zu signalisieren, dass die letzten gültigen Werte vom 22.02 sind.

image

Dies kann man mit Reporting Services Diagrammen relativ einfach erreichen. Zunächst ist wichtig, dass für die Werte ab 23.02 nicht 0 sondern Null bzw. Nothing (für Expressions) als Ergebnis zurückgegeben wird. Dies kann man im Query Designer kontrollieren

image

Dann muss man in den Properties der Serie noch in den EmptyPoint Einstellungen die Farbe auf “No Color” stellen, d.h. dass leere Datenpunkte nicht gezeichnet werden.

image

Und schon hat man das gewünschte Ergebnis.

Tuesday, February 22, 2011 10:21:32 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | TFS 2010
# Thursday, January 27, 2011

image

Wir freuen uns, dass der MSDN-Bus auch bei uns in Blaustein halt macht. Im Rahmen des nächsten Treffens der .Net Developer Group Ulm finden im MSDN-Bus 2 Vorträge zum Thema “Windows Azure” und “Schreiben von sicherem Code” statt. Die Veranstaltung ist öffentlich und alle Mitgleider der .Net Developer Group Ulm sowie Gäste sind herzlich willkommen.

Thursday, January 27, 2011 11:54:56 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Usergroup
# Monday, January 17, 2011

Allen Clark hat auf der MSDN Code Gallery Schema Files für die TFS Work Item Type Definition veröffentlicht. Damit bekommt man nun IntelliSense Support und Validierung beim Bearbeiten der XML-Dateien. War kann man über den Process Template Editor der TFS Power Tools ohne direkte XML-Bearbeitung die Work Item Type Definitions über einen grafischen Editor anpassen, jedoch gibt es eine ganze Reihe von Situationen wo das Bearbeiten im XML schneller geht oder einfach nicht zu vermeiden ist. Mit den Schema-Files wird dies nun deutlich angenehmer.

Link zur Code Gallery: http://code.msdn.microsoft.com/TFSchemas

Monday, January 17, 2011 9:19:00 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Saturday, January 15, 2011

Das MSF for Agile Template kommt mit einer vorgefertigten Excel-Datei für ein Interations- bzw. Sprint-Backlog. Diese liegt im SharePoint unter Shared Documents\Iteration 1\Iteration Backlog.xlsm.

image

Beim Öffnen der Datei kam es bei mir alledings zu Fehlern:

---------------------------
Microsoft Excel
---------------------------
TF80076: The data in the work item is not valid or you do not have permissions to modify the data. Please correct the problem and retry.
---------------------------
OK  
---------------------------

und

---------------------------
Microsoft Excel
---------------------------
TF208103: The initialization of the workbook to connect to Team Foundation Server was not successful. The workbook will close. You can try to connect again by re-opening the workbook.

If repeated attempts fail to initialize the workbook and you need to work with the data in the workbook, then you should disable the Team Foundation add-in. For new or other workbooks with lists bound to Team Foundation Server, you will need to re-enable the Team Foundation add-in.
---------------------------
OK  
---------------------------


Das Problem liegt darin, dass ich bei mir die Iterationen umbennant habe und das Dokument damit nun nicht mehr zurecht kommt. Es gibt aber einen relativ einfachen Workaround dafür:

  1. Zunächst muss man dafür sorgen, dass es wieder einer Iteration “\Iteration 1” gibt. Diese kann man entweder temporär anlegen oder eine bestehende umbenennen.
  2. Jetzt lässt sich die Datei ohne Fehler öffnen
  3. Dann wechselt man auf das Sheet “Settings”
  4. Hier wählt man im Bereich Area & Iteration eine gültige Iteration aus, z.B. \ oder eine der anderen gültigen Iterationen.
    Achtung: In der Liste werden nur Iterationen erlaubt die in dem Sheet “Iteration Backlog” in der Spalte “Iteration Path” vorkommen. Evtl. muss zuvor die Query “Team Queries\Iteration 1\Iteration Backlog” angepasst und hier die entsprechende Iteration als Filter eingestellt werden. Dann kann mit dem Refresh-Button auf dem team Tab im Excel die Liste aktualisiert werden.
    image
  5. Danach speichert man die Excel-Datei
  6. Nun kann die temporär angelegte Iteration gelöscht werden oder die Iteration wieder umbenannt werden. Das Excel-Dokument lässt sich nun ohne Fehler öffnen.
Saturday, January 15, 2011 3:59:43 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Wednesday, January 05, 2011

Please click here for an updated Version of this control

See english version below.

In Scrum ist eine zentrale Frage, wann ist eine User Story erledigt, also done? Dies wird durch die sog. “Definition of Done” festgelegt die sich das Team selbst gibt. Die Definition of Done beschreibt Aspekte die erfüllt sein müssen, damit eine Story als done gelten kann und somit im Review dem Product Owner präsentiert wird. Dies können beispielsweise Testausführung, Code-Reviews oder anderes sein. Genau festzuhalten, welche Punkte der DoD für eine User Story bereits erfüllt sind, ist Zweck des DoD Work Item Controls für den Team Foundation Server.

image

Am Ende des Posts gibt es einen Downloadlink für das Control. Im Folgenden wird kurz erklärt, wie das Control eingerichtet wird. Zuerst müssen wir ein Feld auf dem User Story Workitem Type anlegen.

<FieldDefinition refname="artiso.UserStory.DefinitionOfDoneState" name="Definition of Done State" type="Integer" />

Danach fügen wir für das Feld ein neues Control ein. Für das Control müssen verschiedene Einstellungen im Bereich CustomControlOptions vorgenommen werden:

  • Zunächst geben wir im Attribut DoneState den Status an, auf den die User Story gesetzt werden soll wenn alle DoD Kriterienj erfüllt sind, also die User Story done ist.
  • Unter ActiveState wird ein Status angegeben auf den die User Story gesetzt wird wenn von den vollständig gesetzten DoD Kriterien wieder eines entfernt wird, also z.B. wenn doch noch Bugs gefunden werden.
  • Unter DoDCriteria werden nun die individuellen Kriterien der DoD angegeben. Jedes Kriterium braucht eine eindeutige ID. Aus den aktivierten Checkboxen wird durch eine 2er Potenz der ID eine Summe gebildet die im Integer-Feld abgelegt werden. Somit mit darauf geachtet werden, dass beim Ändern der ID die Aussage der bestehenden Work Items verändert wird.
<Control FieldName="artiso.UserStory.DefinitionOfDoneState" Type="DefinitionOfDoneControl" Label="Definition of Done:" LabelPosition="Top">
  <CustomControlOptions>
    <DoneState value="Done" />
    <ActiveState value="Implemented" />
    <DoDCriteria>
      <Criterion Text="All acceptance criteria of PO are fulfilled" ID="1" />
      <Criterion Text="Code Reviews are executed without findings" ID="2" />
      <Criterion Text="UI Reviews are executed without findings" ID="3" />
      <Criterion Text="All Test Cases are executed without findings" ID="4" />
      <Criterion Text="Test Cases are reviewed" ID="5" />
      <Criterion Text="No known bugs for this User Story" ID="6" />
      <Criterion Text="All Issues related to the User Story are closed" ID="7" />
    </DoDCriteria>
  </CustomControlOptions>
</Control>

Nun ist die Userstory einsatzbereit und alle im Team haben einen genauen Überblick, was noch zur Fertigstellung einer Story getan werden muss.

Das Control kann hier heruntergeladen werden.

 

English version

One of the big questions in a Scrum project is, when is a User Story “done”? This is defined by a so called “Definition of Done” which is defined by the team itself. The Definition of Done describes aspects which have to be fulfilled to declare a User Story to be done und so can be presented in the Sprint Review to the Product Owner. These aspects can be test execution, code reviews or other points. To track exactly which aspects of the DoD for a specific User Story is already fulfilled is the purpose of this Work Item Control for Team Foundation Server.

image

You’ll find a link to download the control at the end of this post. Here is described how to configure the control. First we have to define a field on the Work Item Type for the User Story to store the data.

<FieldDefinition refname="artiso.UserStory.DefinitionOfDoneState" name="Definition of Done State" type="Integer" />

Then we add for the new field a control to the form. For the control we have to do some settings in the CustomControlOptions:

  • First we provide in the attribute DoneState the status to which the User Story will be set after fulfilling all DoD criterias (the Use Story is done)
  • With ActiveState provide a state to which the User Story will be set after for a done User Story we uncheck one of the DoD criteria e.g. when later bugs are found
  • With DoDCriteria you can provide individual criterias for your DoD. Every criteria needs a unique ID. From the checked checkboxes we create a sum with binary operations which will be stored to the integer field. So you should keep in mind that the meaning of your DoD status will be changed if you change the IDs.

<Control FieldName="artiso.UserStory.DefinitionOfDoneState" Type="DefinitionOfDoneControl" Label="Definition of Done:" LabelPosition="Top">
  <CustomControlOptions>
    <DoneState value="Done" />
    <ActiveState value="Implemented" />
    <DoDCriteria>
      <Criterion Text="All acceptance criteria of PO are fulfilled" ID="1" />
      <Criterion Text="Code Reviews are executed without findings" ID="2" />
      <Criterion Text="UI Reviews are executed without findings" ID="3" />
      <Criterion Text="All Test Cases are executed without findings" ID="4" />
      <Criterion Text="Test Cases are reviewed" ID="5" />
      <Criterion Text="No known bugs for this User Story" ID="6" />
      <Criterion Text="All Issues related to the User Story are closed" ID="7" />
    </DoDCriteria>
  </CustomControlOptions>
</Control>

Now the User Story is ready to use and everyone on the team has a good overview what is left to do to finish a Story.

The control can be downloaded here.

Wednesday, January 05, 2011 12:52:32 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2] -

# Friday, December 17, 2010

Mit dem Microsoft Test Manager 2010 hat Microsoft sog. Rich Information Bugs eingeführt. Damit sind Bugs gemeint die automatisch mit Informationen zur Testausführung angereichert sind um dem Entwickler das reproduzieren und identifizieren von Bugs erleichtert. Dazu gehören beispielsweise Videos, IntelliTrace Logs, Systeminformationen und weitere. Diese extrem hilfreiche Funktion bringt jedoch leider auch ein Problem mit sich. Diese Informationen werden alle als Attachements and die TestCase Work Items gehängt was dazu führt, dass die TFS Datenbank schnell sehr groß werden kann. Bisher hatte der Datenbankadministrator keine effiziente Möglichkeit zur Anlayse und Bereinigung dieser Daten. Diese Lücke wird nun mit dem Test Attachement Cleaner Power Tool geschlossen.

Mit diesem Tool kann der Datenverbrauch in der Datenbank analysiert und in einerDatei ausgegeben werden. Zudem können bestimmte Löschoperationen ausgeführt werden, z.B. Videos die älter sind als ein bestimmtes Datum, Alle IntelliTrace Logs die größer sind als ein bestimmter Wert etc. Dadurch dass das Tool als Kommandozeilentool implementiert ist, können damit auch automatisierte Datenbereinigungen einfach eingestellt werden.

Friday, December 17, 2010 8:44:35 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

# Sunday, November 21, 2010

Mit dem Team Foundation Build ist es einfach, Tests im Rahmen von automatisierten Builds auszuführen. Standardmäßig werden die Tests jedoch auf dem Buildrechner selbst ausgeführt. Das ist in verschiedenen Szenarien jedoch nicht erwünscht, sondern man möchte die Tests in einer Referenzumgebung ausführen die der Zielumgebung, in der die Anwendung ausgeführt werden soll, möglichst nahe kommt. Vor allem für GUI-Tests ist dieses Szenario wichtig.

image

Mit Visual Studio 2010 gibt es dafür LabManagement um virtualisierte Testumgebungen bereitzustellen und über ein vorbereitetes Build Template Tests darin auszuführen. Jedoch lässt sich diese Funktion auch ohne LabManagement erreichen, z.B. wenn ein anderes Virtualisierungssystem als Hyper-V oder rein physikalische Testumgebungen eingesetzt werden sollen. Im Folgenden soll beschrieben werden, wie dieses Szenario einzurichten ist.

Hierzu muss zunächst ein Testcontroller eingerichtet werden. Dieser kann beispielsweise auf dem TFS Server installiert werden. Auf der Testmaschine muss anschließend ein Testagent installiert und auf den Testcontroller registriert werden. Weitere Hinweise zur Installation und Konfiguration von Testcontrollern und –agents finden sie unter http://msdn.microsoft.com/de-de/library/dd648127.aspx. Es sollte beachtet werden, dass der Test Agent als interaktiver Prozess konfiguriert sein muss, wenn UI-Tests auf der Testmaschine ausgeführt werden sollen. Und der Testagent muss auf dem Testcontroller registriert  sein.

image

image

Der Testcontroller darf nicht für ein Teamprojekt registriert sein.

image

Anschließend können wir einen Build für das gewünschte Projekt einrichten. Der Build soll in unserem Szenario auf einem separaten Buildcomputer ausgeführt werden. Um das Deployment des Buildergebnisses auf die Testmaschine zu bewerkstelligen, passen wir das Buildtemplate ein wenig an. Dazu legen wir zunächst 2 neue Arguments an. Anschließend Platzieren wir unterhalb der „If BuildSettings.HasProjectToBuild“ Activity eine If-Condition auf der wir auf das Argument DeployForTest prüfen. Im Then-Zweig fügen wir dann eine CopyDirectory-Activity ein für die wir als Source die Droplocation und als Destination das Argument DeployForTestTarget einstellen. Damit wird unser Buildergebnis in dan Verzeichnis kopiert das wir in unserer Build Definition einstellen können.

2010-11-22_2207

Das BuildTemplate können wir nun unter einem neuen Namen speichern und einchecken. Auf dieser Basis erstellen wir nun mal einen ersten Build. In den Process Einstellungen definieren wir nun, dass das Deployment auf die Testmaschine ausgeführt werden soll und wir geben den UNC-Pfad an wohin die Dateien deployed werden sollen.

image

Nach dem Ausführen des Builds können wir prüfen, ob die Dateien korrekt auf die Testmaschine deployed wurden. Die Tests die wir in unserem Projekt haben werden allerdings immer noch auf unserer Buildmaschine ausgeführt. Um das zu ändern, müssen wir die Testsettings anpassen. Unter Test / Edit Test Settings  wählen wir zunächst Local aus um diese Einstellung anzupassen.

image

Hier müssen wir Remote Execution einstelle und den entsprechenden Build Controller auswählen. Diese Einstellungen können wir dann unter einem neuen Namen abspeichern und einchecken.

Anschließend wählen wir diese Test Settings in unserem Build aus.

image
image

Damit werden unsere Tests die wir in der Solution definiert haben nun auf unserer Testmaschine ausgeführt. Dies können sowohl Unit-Tests als auch Coded UI Tests sein. Als erweitertes Szenario können z.B. im Rahmen des Build Setups erstellt werden die dann über die CopyDirectory Activity auf die Testmaschine kopiert werden. Dann kann mit Hilfe eines Coded UI Tests das Setup ausgeführt und anschließend die Funktionen der Anwendung getestet werden.

Ein wichtiger Punkt ist noch, dass wir aktuell nicht kontrollieren können, auf welchem Testcomputer die Tests ausgeführt werden, wenn wir auf dem Testcontroller mehrere Agents registriert haben. Das wollen wir nun noch ändern. Dazu wählen wir unter Test / Manage Test Controllers unseren Testcontroller und den entsprechenden Agent aus.

image

Über Properties können wir dem Agent nun Attribute zuordnen, z.B. ein MachineName.

image

Nun können wir in unseren Testsettings einstellen auf welchem Agent unsere Tests ausgeführt werden sollen. Dazu fügen wir erst eine Rolle hinzu und wählen aus, dass auf dieser Rolle Tests ausgeführt werden können. Nun Geben wir das zuvor definierte Attribut mit dem selben Wert an.

image

Nun können wir eindeutig steuern, wo die Ausführung der Tests erfolgen soll und wir können beispielsweise mehrere Testcomputer mit verschiedenen Betriebssystemen zur Ausführung der Tests nutzen.

Sunday, November 21, 2010 11:32:09 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | Testing | TFS 2010 | VS 2010
# Thursday, October 21, 2010

Sehr viele Software-Projekte nutzen Datenbanken und damit stellt sich die Frage, wie kann die Datenbank im Build so aufbereiten, dass sie für Tests deployed werden kann. Hierzu gibt es auf MSDN eine sehr gute Artiekelserie die Beschreibt wie mit den Datenbankfunktionen im Visual Studio 2010 Datenbanken verwaltet und im Build für Tests deployed werden kann.

http://msdn.microsoft.com/en-us/library/dd193413.aspx

Speziell die Schritt für Schritt Anleitung zur Anpassung des Build Workflows möchte ich empfehlen.

http://msdn.microsoft.com/en-us/library/ff805001.aspx

Thursday, October 21, 2010 12:27:32 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
TFS 2010 | VS 2010
# Wednesday, October 20, 2010

Der einfachste Weg, um Daten aus dem OLAP Cube im TFS Warehause auszuwerten ist über Excel. Wie dies funktioniert, soll im Folgenden kurz beschrieben werden:

Zunächst müssen dem entsprechenden Benutzer Berechtigungen für den OLAP-Cube eingerichtet werden. Dazu verbindet man sich im Management Studio zu den Analysis Services.

image

Unter dem Cube im Ordner Roles findet sich dann die Rolle TfsWarehouseDataReader

image

Hier kann man nun unter Memberschip die entsprechenden Benutzer eintragen

image

In Excel kann man nun eine Verbindung zum Cube herstellen. Dazu ruft man im Data-Tab die Verbindung zu den Analysis Services auf.

image

Im folgenden Dialog gibt man nun die Verbindungsdaten ein. Soll der Zugriff auf eine bennante Instanz erfolgen, muss diese angegeben werden, z.B. mySQLServer\MyInstance.

image

Dann wählt man entweder den Cube oder eine Perspektive aus

image

Die Verbindung kann man nun speichern. Sie steht dann unter Existing Connections für weitere Anwendungen zur Verfügung.

image

Im nächsten Schritt kann man eine Pivot Table in das bestehende Excel Workbook einfügen.

image

Im rechten Bereich kann man nun Felder in die Bereiche für Filter, Spalten, Zeilen oder Werte ziehen. Die Felder lassen sich dabei nach verschiedenen Kategorien über die oberste Dropdownlist filtern.

image

In einem späteren Post werde ich beschreiben, wie man mit Hilfe der Pivot Tables entsprechende Auswertungen auf dem Cube erstellt.

Wednesday, October 20, 2010 9:47:36 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
SQL | Team System Server | TFS 2010
# Tuesday, October 12, 2010

Beim starten einer Environment im Microsoft Lab Management dauert es meist geraume Zeit, bis die Workflow capabilities bereit zur Ausführung sind.

image

Will man diese Zeit reduzieren, ist ein einfaches Mittel in den VMs das IPv6 Protokoll auf den Netzwerkkarten zu reduzieren. Bei mir hat das die Wartezeit für die Workflow capabilities von 2:44 Min auf 0:40 Min reduziert.

Tuesday, October 12, 2010 9:45:40 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | Testing | TFS 2010 | VS 2010
# Wednesday, October 06, 2010

Beim nächste Treffen der VS ALM User Group hält Ed Blankenship einen Vortrag über die Anpassungen des Builds im TFS2010.

Weitere Infos unter http://www.vsalmug.com

Date: October 7th, 2010
Time: 19:00 CEST (17:00 UTC without summertime)
Add to Calendar: http://tinyurl.com/2wmsfgu
Join meeting:
http://tinyurl.com/2v3u8at

In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow Foundation (WF) instead of MSBuild. In this session, we will explore how to customize the default build process template and how to leverage multiple aspects of the workflow implementation for TFS 2010 Build.

We will cover:
• Explore the basics of Windows Workflow Foundation as it is used in TFS 2010 Build
• Review the high-level parts of the default build process template in TFS 2010 Build
• Adding new functionality to the build process using out of the box workflow activities
• Creating variables and process parameters that can be exposed to the end user
• Thoughts about designing & architecting your build process for reuse
• Building a custom activity for use in the build process template
• Deploying the custom activity to all of the build servers in the build farm

Presenter: Ed Blankenship
Ed is an Application Lifecycle Management (ALM) Consultant with Notion Solutions and a Microsoft Most Valuable Professional (MVP) in Visual Studio ALM & Team Foundation Server.
Ed was voted as the Microsoft MVP of the Year (Visual Studio ALM, TFS) for 2010 by his peers.
His expertise is in Microsoft Visual Studio Team System and Team Foundation Server in which he has been actively using, managing, and implementing for nearly five years since the beginning of those products in 2005. He has been awarded since 2008 as a Microsoft MVP in Visual Studio ALM, Team Foundation Server and Visual Studio Team System.
As an ALM Consultant, he assists organizations with improving their development lifecycle by suggesting improvements to their processes and implementing Application Lifecycle Management tools to assist with that improvement. By using Visual Studio ALM and Team Foundation Server, customers can immediately see value from their improvements.
Ed was previously the Release Engineering Manager at Infragistics where he led a multi-year TFS & Visual Studio Team System implementation to improve the development process lifecycle.
Ed is the lead author of the Wrox Professional Team Foundation Server 2010 book, has been a technical editor for the Wrox Silverlight 1.0, Silverlight 2 Developer's Guide, Silverlight 3 Programmer's Reference, and Silverlight 2 Bible books, author of numerous articles, and has spoken at various user groups, events, radio shows, and conferences.
You can find Ed blogging at
http://www.edsquared.com , tweeting at @EdBlankenship ( http://www.twitter.com/edblankenship ), and more information on his LinkedIn profile page: http://www.linkedin.com/in/edblankenship . His MVP profile is also available at https://mvp.support.microsoft.com/profile/ed.blankenship .

Wednesday, October 06, 2010 10:09:11 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Usergroup
# Friday, October 01, 2010

Um mit dem MS Test Framework eine Code Coverage Analyse auszuführen, muss diese zunächst aktiviert werden. Da es hierbei immer wieder zu Fragen / Problemen kommt, möchte ich den Weg hier einmal ausführlich beschreiben:

Zunächst öffnet man eine vorhandene Test Settings Datei

image

Hier aktiviert man zunächst unter “Data and Diagnostics”´die Code Coverage und öffnet dann die Konfiguration für diesen Data Collector.

image

Hier wählt man nun die Assemblies für die die Coverage Analyse erstellt werden soll

image

Anschließend speichert man die Test Settings unter einem eigenen Namen wie beispielsweise “CodeCoverage” ab. Dies kann man als aktive Test Settings selektieren.

image

Nun kann man Unit-Tests ausführen und anschließend im Test Results Fenster die Code Coverage Results aufrufen.

image

Die Ergebnisse werden nun tabellarisch angezeigt.

image

Zusätzlich kann man dann noch die Coverage im Code anzeigen lassen. Hierzu einfach in der Toolbar den gekennzeichneten Butten klicken.

image

Hier sieht man nun, welche Codebereiche noch nicht durch die Tests abgedeckt sind. Hier sollten also noch ein paar weiter Tests geschrieben werden um die Testabdeckung zu erhöhen. Welche Input-Parameter diese abdecken sollten, zeigt die Coverage Analyse.

Tipp: Sollte die Coverage Anlayse auf dem oben beschriebenen Weg nicht gleich angezeeigt werden, hilft manchmal ein neustart von Visual Studio. Ich hatte schon verschiedendlich Situationen, als die Einstellung nicht sofort übernommen wurde.

Friday, October 01, 2010 11:42:43 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Testing | VS 2010
# Tuesday, September 28, 2010

Microsoft schließt eine Sicherheitslücke im ASP.Net durch ein Out-of-Band-Ipdate. Da der TFS komplett auf ASP.Net basiert, ist au der TFS von dieser Sicherheitslücke betroffen und wer auf der sicheren Seite sein möchte sollte den nun verfügbaren Patch installieren.

Weitere Details und die Download-Links gibt es auf TechNet unter http://blogs.technet.com/b/michaelkranawetter/archive/2010/09/28/update-out-of-band-updates-f-252-r-asp-net-l-252-cke-verf-252-gbar.aspx

Tuesday, September 28, 2010 9:13:19 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010

Wenn das TFS Dashboard zu lange braucht um angezeigt zu werden, dann kann ein Grund dafür das “Recent Builds Webpart” sein. Dieses hat offensichtlich noch einen Bug und liest zu viele Informationen vom TFS. Wird die Anzahl der Builds zu hoch, dann hat das Webpart einen sehr deutlichen Einfluss auf die Performance des Dashboards, insbesondere beim erstmaligen Laden.

Microsoft hat das als Bug identifiziert und verspricht mit dem SP1 Abhilfe zu schaffen. Im Moment hilft leider nur, entweder das WebPart vom Dashboard zu entfernen oder die Build-Historie regelmäßig zu löschen.

Tuesday, September 28, 2010 8:29:56 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010
# Monday, September 27, 2010

Die neueste Version (September) der TFS Power Tools enthalten auch eine neue Backupfunktion mit der nicht nur der TFS sondern auch die Reporting Services und der SharePoint Server gesichert werden können. Aktuell rät Microsoft jedoch vom Einsatz der SharePoint Backup-Funktion ab, da diese gegen das Service Agreement verstößt wie genauere Recherchen zusammen mit dem SharePoint-Team ergeben haben. Aktuell wird mit Hochdruck an einer aktualisierten Version gearbeitet.

Quelle: Brian Harrys Blog Update on backing up TFS with Sharepoint

Monday, September 27, 2010 8:46:13 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Wednesday, September 15, 2010

Web Performance Tests zeichnen die HTTP-Kommunikation zwischen einem Client und einem Webserver auf und können diesen dann wieder abspielen. Somit lässt sich der Server-Code relativ einfach “von Außen” testen und diese Tests eignen sich auch sehr gut um Load-Tests zu generieren.

Manche Web-Anwendungen verwenden die URL um die Session ID zu übermitteln, vor allem wenn keine Cookies zur Verfügung stehen. Dann entsteht allerdings das Problem, dass die aufgezeichneten Requests nicht wieder sauber abgespielt wreden können, da diese dann ja auf eine nicht mehr aktive Session verweisen. Dieses Problem kann man allerdings recht elegant lösen:

Zunächst verwendet man einen Request der ohne Session ID arbeitet um die Applikation zu starten. Dieser liefert normalerweise im Response einen Redirect auf die URL inkl. SessionID zurück.

image

Diesem Request kann nun in der Definition des Web Tests eine Extraction Rule hinzugefügt werden (Rechte Maustaste / Add Extraction Rule). Hier kann mit der Extract Text Rule nun im Response nach einem Text gesucht werden. Dazu wird eine Startsquenz “(S(" und eine Endesequenz “))” angegeben. Der Text dazwischen wird dann extrahiert und in den Parameter “URLSessionID” geschrieben.

image

image

Mit einem Find and Replace auf dem wurzelknoten des Tests  können nun alle URLs im Test automatisch aktualisiert werden.
image

Hier wird einfach die aufgezeichnete Session ID durch den Parameter “{{URLSessionID}}” ersetzt.

image

Der so modifizierte Test kann nun reproduzierbar ausgeführt werden.

Wednesday, September 15, 2010 6:44:54 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Testing | VS 2010
# Sunday, August 08, 2010

Der Team Foundation Server bietet ein extrem flexibles und leistungsfähiges Konzept zur Definition von Work Items. Damit lassen sich viele Szenarien über eine reine Konfiguration abbilden. Um die Mächtigkeit zu demonstrieren, hier ein paar Beispiele. Diese Beispiele nutzen den Process Template Editor der Bestandteil der kostenlosen Team Foundation Server 2010 Power Tools ist.

1.) Nur bestimmte Benutzer sollen ein Workitem eines bestimmten Typs anlegen dürfen

Ein verbreitetes Szenario ist, dass nur ein bestimmter Personenkreis Workitems eines bestimmten Typs (in diesem Beispiel der Typ Bug) anlegen dürfen, andere Benutzer sollen diese aber weiter bearbeiten können. Auch wenn die Umsetzung nicht ganz ideal ist lässt sich diese Funktion mit dem TFS relativ einfach erreichen.

image

Wie im Screenshot zu sehen, ist der Status Active für diesen Benutzer ungültig. Damit kann er das Workitem nicht speichern. Wie gesagt, nicht gerade schön aber wirkungsvoll. Wie erreichen wir nun diese Funktion?

Im Process Template Editor sehen wir im Workflow des Bug-WIT eine Transition von nirgendwo nach Active

image

Diese Transition wird verwendet wenn ein neues Workitem angelegt wird. Auf dieser Transition können wir nun eine Berechtigung einstellen. Dazu geben wir in das Feld “For” eine TFS Gruppe ein die diese Funktion ausführen darf. Alternativ kann bei “Not” eine Gruppe angeben die diese Transition nicht nutzen darf.

image

Dieses Feature kann natürlich auch für Transitions zwischen zwei Status genutzt werden, also z.B. um zu steuern wer den Bug schließen darf.

2.) Ein Feld muss gefüllt sein wenn ein anderes einen bestimmten Wert hat

In der Praxis kommt es häufiger vor, dass iin Abhängigkeit eines Wertes ein anderes Feld ausgefüllt sein muss. In unserem Beispiel nehmen wir mal an, dass auf dem Bug die Repro-Stepsausgefüllt sein müssen wenn der Bug die Priorität 1 hat.

image

Dazu stellen wir auf dem Feld Repro Steps eine WHEN-Regel ein

image

image

Und sagen wenn diese Bedingung erfüllt ist, dann soll das Feld ein Pflichtfeld sein

image

3.) Befüllen einer Auswahlliste in Abhängigkeit eines anderen Feldes

Das dritte Beispiel soll uns die Auswahlliste eines Feldes in Abhängigkeit eines anderen Feldes befüllen. In unserem Beispiel soll das Feld Team in Abhängigkeit der Area befüllt werden.

image

image

Dazu definieren wir für das Feld Team das wir zuvor hinzugefügt haben 2 When-Regeln

image

An dieser Stelle verwenden wir für die Regel nicht das Feld AreaPath da hierarchische Felder in Regeln nicht richtig unterstützt werden. Diese produzieren dann beim Import des WIT den Fehler "TF26204: The account you entered is not recognized". Der Umweg über die AreaID umgeht diese Problem.

Dann stellen wir einfach die AllowedValues für die beiden Fälle ein.

image

Man sieht also, dass der TFS einiges an Flexibiölität zu beieten hat. Es lohnt sich damit mal etwas zu experimentieren. Generell möchte ich aber vor Überregulierung warnen weil dies in der Praxis meist dazu führt, dass die Anwender behindert werden und somit die Akzeptanz des Tools sinkt.

Sunday, August 08, 2010 6:32:18 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010

Tritt beim Konfigurieren eines Labs das in einer Workgroup betrieben wird (keine Domänenintegration der VMs) folgender Fehler auf, dann fehlt ggf. ein Shadow-Account: 

image

 

--------------------------------------------------

Environment message: Type=Warning; Message=TF267042: One or more machines are not ready to run tests. For more information, see the individual machine errors.;

Machine messages:

Machine name: Windows 7 x64 en

Machine message: Type=Error; Message=TF267055: The machine is not ready to run tests because of the following error: Unable to connect to the controller on ---. The agent can connect to the controller but the controller cannot connect to the agent because of following reason: The server has rejected the client credentials.
The logon attempt failed.;

--------------------------------------------------

Damit der Testagent mit dem Testcontroller korrekt zusammenarbeitet, müssen beide mit unterschiedlichen Accounts laufen. Der Testcontroller verwendet dabei typischerweise einen Domänen-Account, der Testagent arbeitet mit einem lokalen Account. Die jeweiligen Accounts müssen als Shadow-Accounts (gleicher Name und Kennwort) lokal bzw. in der Domäne angelegt werden, also für den lokalen Account ein Shadow-Account in der Domäne und für den Domänen-Account ein lokaler Shadow-Account.

 

Beispiel:

 

  Account Shadow-Account
Testagent labmachine\Labuser domain\Labuser
TestController domain\TestController labmachine\TestController

Die oben beschriebene Meldung erhält man, wenn auf der Labmaschine kein lokaler Shadow-Account angelegt wurde. Wenn man das nachholt und dann auf “Repaiur testing capabilities” klickt, dann sollte das Problem behoben sein.

image

Sunday, August 08, 2010 5:06:41 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | TFS 2010 | VS 2010
Archive
<August 2014>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2014
Thomas
Sign In
Statistics
Total Posts: 622
This Year: 13
This Month: 1
This Week: 0
Comments: 356
Themes
All Content © 2014, Thomas
DasBlog theme 'Business' created by Christoph De Baene (delarou)