Neues rund um's Thema .Net, Team Foundation Server und SCRUM RSS 2.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

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
# 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
# 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
# Friday, September 16, 2011

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
# 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, 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
# 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
# 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
# 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
# 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
# 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
# Saturday, July 31, 2010
# Tuesday, July 20, 2010

Das Processtemplate für Scrum gab’s von Microsoft bereits als Beta, nun wurde die endgültige Version auf der Visual Studio Gallery veröffentlicht.

Folgende Elemente enthält das Template:

  • Work Item Types
    • Sprint
    • Product Backlog Item
    • Bug
    • Task
    • Impediment
    • Test Case
  • Reports
    • Release Burndown
    • Velocity
    • Sprint Burndown
    • Build Success Over Time
    • Build Summary
    • Test Case Readiness
    • Test Plan Progress
  • SharePoint Project Portal

Hier noch Screenshots zum Sprint Burndown und Release Burndown Report.

Download

http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e

Weitere Informationen zum Template
http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx

Tuesday, July 20, 2010 8:17:11 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Tuesday, June 29, 2010

Endlich ist es soweit und Microsoft stellt ein VM Image für Visual Studio 2010 und TFS 2010 in der RTM Version bereit. Auf diesem Image sind nicht nur die Produkte sowie einige weitere benötigten Tools installiert, sondern es befinden sich darauf auch Demo-Daten (Tailspin Toys) und 9 Hands-On-Labs. Die VM ist für Hyper-V, Virtual PC 2007 SP1 verfügbar. Die Trial-Versionen auf der VM laufen bis zum 15. Dezember 2010.

Weitere Infos und Hinweise zum Download finden sich hier: http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx

Tuesday, June 29, 2010 3:39:17 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Saturday, June 26, 2010

Im Team Foundation Server lassen sich die Work Items sehr einfach anpassen, neue Work Item Types lassen sich erzeugen und damit ein individuelles Process Template erzeugen. Das ganze geht sehr einfach und intuitive wenn mann den Process Template Editor aus den Team Foundation Server Power Tools verwendet (http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da)

Wer mal auf den Geschmack gekommen ist, das Process Template im TFS anzupassen, wird durch ausprobieren und rumspielen schnell vor der Frage stehen, wie kann ich nun in einem bestehenden Projekt einen Work Item Type wieder löschen den ich nicht mehr brauche?

Hier hilft das Kommandozeilentool witadmin weiter das sich dirckt über die Visual Studio Eingabeaufforderung ausführen lässt.

witadmin destroywitd /collection:http://<Servername>:8080/tfs/<Team Project Collection> /p:<Team Projekt Name> /n:<Name des Work Item Types>

löscht den angegebenen Work Item Type.

Vorsicht,
mit diesem Kommando werden aber auch alle Work Items gelöscht, die diesen Typ verwenden, diese können ja vom System nach löschen der WITD nicht mehr verwaltet werden.

Wenn man also den WIT bestehender Work Items verändern möchte, dann sollte man diesen umbenennen und anschließend so anpassen dass er den neuen Anforderungen entspricht. Zum Umbenennen eines WIT hilft ebenfalls witadmin

witadmin renamewitd /collection:http://<Servername>:8080/tfs/<Team Project Collection> /p:<Team Projekt Name> /n:<Alter Name des Work Item Types> /new:<Neuer Name des Work Item Types>

Saturday, June 26, 2010 1:11:34 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Tuesday, June 15, 2010

Aaron-Headshot-Sml.jpg

In diesem Monat möchte ich die Leser meines Blogs auch auf das US-Meeting der Visual Studio User Group aufmerksam machen, da dieses Treffen dieses mal zu einer auch für Europa günstiger Zeit stattfindet (Donnerstag 17. Juni 18:00 Uhr).

Das Thema ist Scrum, TFS und Microsoft. Aaron Bjork wird das neue Scrum Template von Microsoft vorstellen das er maßgeblich verantwortlich ist. Also Informationen aus erster Hand die man nicht verpassen sollte. Für Mitglieder gibt es ein Recording des Meetings im Nachgang auch zum Download.

Das neue “Team Foundation Server Scrum v1.0 Beta” Template kann man sich hier herunterladen: http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e
Nähere Informationen zum Meeting gibt es hier: http://www.vsalmug.com/Meetings/Announcements/June-2010/June-17,-2010--Scrum,-TFS-and-Microsoft.aspx

Tuesday, June 15, 2010 12:10:26 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | Usergroup | VS 2010
# Friday, April 23, 2010

Christian Binder hat einen Deep Zoom zum Thema Testing mit Visual Studio 2010 auf seinem Blog veröffentlicht. Der Deep Zoom erlaubt es aus einer Übersichtsansicht sich tiefer in einzelne Themen hineinzuklicken, bis auf Detaileben. Der Deep Zoom enthält auch Videos die zwar nicht vertont sind aber die einzelnen Teilabläufe anschaulich darstellen. Echn ne coole Sache, also einfach mal selber reinschauen.

Visual Studio 2010 Test Manager Deepzoom

http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx

Friday, April 23, 2010 5:18:41 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Qualitätsmanagement | TFS 2010 | VS 2010

In der TFS Adminconsole oder im TFS Configuration Wizard können die Reporting Services für den TFS konfiguriert werden.

 image

Man gibt hier den Server und ggf. die Instanz der Reporting Services an und klickt auf “Populate URLs”, dann werden die entsprechenden URLs automatisch ausgefüllt – normalerweise zumindest. Ich hatte die Situation, dass der User mit dem ich den TFS installiert habe auf dem Server auf dem die Reporting Services liefen kein Administrator war. Normalerweise ist das der einfachste Weg, den TFS Account auf dem Reporting Server als lokalen Administrator einzutragen, das ist aber nicht in allen Fällen erwünscht. Dann bekommt man die Fehlermeldung

TF255050: A connection cannot be made to the Report Server WMI provider. Verify the following:
1. You have entered the correct name for the server, including the instance name.
2. The Windows Management Instrumentation service is running on vs2010rcdemo.
3. The service is not blocked by Windows Firewall.
4. You have the required permissions to connect.

Details:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

image 

Eine damit verwandte Fehlermeldung ist

TF255186: The following SQL Server Reporting Services Instance could not be found: MSSQLSERVER. The server name is: vs2010rcdemo.

In beiden Fälle fehlen dem User WMI-Berechtigungen auf dem Reporting Server. Im ersten Fall der Remote-Zugriff auf die WMI generell, im zweiten Fall auf den Remote-Zugriff für die Reporting Services in der WMI. Um die gewünschte Operation ausführen zu können muss dem User zunächst Remote-Zugriff auf WMI gegeben werden:

  1. Auf dem Reporting Server dcomcnfg.exe starten
  2. Im linken Bereich Console Root\Component Services\Computers\My Computer öffnen
  3. Aus dem Kontextmenü von “My Computer” den Eintrag “Properties” öffnen
    image
  4. Im Bereich “Launch and Activation Permissions” auf “Edit Limits” klicken
  5. Den Benutzer mit “Add hinzufügen und ihm “Remote Launch” und “Remote Activation” vergeben
    image

Anschließend kann der Remote-Zugriff per WMI auf die Reporting Services konfiguriert werden.

  1. Auf dem Reporting Server wmimgmt.msc starten
  2. Im linken Bereich auf WMI Control (Local) aus dem Kontext-Menü “Properties” auswählen
  3. Auf den Reiter Security wechseln und im Baum Root\Microsoft\SqlServer\ReportServer auswählen
    image
  4. Auf den Button “Security” klicken und den gewünschten benutzer mit “Add” einfügen
  5. Dem Benutzer “Enable Account” und “Remote Enable” als Rechte vergeben
    image
  6. Auf “Advanced” clicken, den Benutzer auswählen und dann auf “Edit” klicken
  7. Bei “Apply to” “This namespace and subnamespaces” wählen
    image

Mit diesen Einstellungen sollte nun das “Populate URLs” in der TFS Administration Console funktionieren.

Friday, April 23, 2010 5:00:05 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | TFS 2010 | VS 2010
# Tuesday, April 13, 2010

Beim Deployment einer Environment auf meinen Host bekam ich den Fehler TF259115:

clip_image002

Speicher war eigentlich genug frei auf meinem Host und so war ich zunächst erstaunt, warum er das nicht deployen wollte. Des Rätsels Lösung liegt darin, dass die Placement Policy standardmäßig auf “Conservative” eingestellt ist. Das bedeutet, dass der Host beim Deployment den Speicherbedarf aller VMs auf dem Host ermittelt, unabhängig davon ob diese gestartet sind oder nicht. Im Betrieb könnten ja dann alle gleichzeitig gestartet werden was dann zu Problemen führt. D.h. im Idealfall hat man immer soviel Ressourcen, dass alle Environments die deployed sind gleichzeitig laufen können, momentan nicht benötigte Environments werden in der Library abgelegt.

Da ich aber auf meinem Demo-Notebook nicht soviel Speicher habe und dabei nie alle Environments gleichzeitig laufen sollen, wollte ich diese Limitierung umgehen. Dies kann man erreichen, indem man die Placement Policy auf Aggresive stellt. Dies erreicht man am besten durch einen TFSConfig-Aufruf:

TfsConfig Lab /hostgroup /CollectionName:labcollection /Edit /Name:"All Hosts"
/LabEnvironmentPlacementPolicy:Aggressive

Logging sent to file C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs\CFG_SET_URL_0413_225508.log
Command: lab
TfsConfig - Team Foundation Server Configuration Tool
Copyright (c) Microsoft Corporation. All rights reserved.
Are you sure you want to update the settings for this host group ? (Yes/No) y
The requested changes were successfully applied.

Die TFSConfig findet befindet sich im Pfad C:\Program Files\Microsoft Team Foundation Server 2010\Tools

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

Tuesday, April 13, 2010 5:12:44 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Lab Management | Team System Server | VS 2010

Visual Studio 2010 Launch

 

Heute wurden Visual Studio 2010 und Team Foundation Server 2010 gelauncht. Microsoft neueste ALM Plattform bietet eine große Anzahl neuer Features, so dass sich ein näherer Blick auf jeden Fall lohnt, unter anderem:

  • Testmanagement und Testausführung
  • automatisierte GUI-Tests
  • Virtualisierte Testumgebungen
  • Erweiterte Tracking-Funktionen für Versionsverwaltung
  • Agile Planungsmethoden
  • Build Workflows auf Basis von WF 4.0
  • Architektur-Features und UML-Diagramme
  • Integrierte SharePoint-Entwicklung
  • uvm

Ich werde in den folgenden Wochen in einzelnen Blogbeiträgen verschiedene Funktionen vorstellen, also vorbeischauen lohnt sich …

Weitere Informationen und den Download Link für Inhaber einer MSDN Subscription finden sich hier:

http://msdn.microsoft.com/de-de/vstudio/2010.aspx

Testversionen können hier heruntergeladen werden:
http://www.microsoft.com/germany/visualstudio/try/download.aspx

Tuesday, April 13, 2010 1:37:24 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
VS 2010
# Monday, March 08, 2010

Team Foundation Server 2010 bietet nun eine verbesserte Integration mit SharePoint. Für die einzelnen Team-Projekte wird die Verbindung zu einer SharePoint Site typischerweise beim Anlegen des Projektes einrichten, alternativ kann man das auch im Nachhinein konfigurieren. Dazu einfach im TeamExplorer auf dem Team Projekt rechte Maustaste und dann unter “Team Project Setting” “Portal Settings” auswählen.

image

Hier wählt man dann unter “Configure URL” eine der konfigurierten Web Applications aus.

Bekommt mann beim Bestätigen des Fensters folgen Meldung, dann hat der aktuelle Benutzer nicht ausreichen Berechtigungen auf die Site / SiteCollection:

Server was unable to process request. ---> Failed to activate feature 'TeamFoundationWeb' (ID: 310284e3-35d9-4b5d-99b5-c42147379877) at scope 'http://sarmoss02/sites/TFS2008/BI_KaBIS'.

Diese Berechtigungen müssen im SharePoint eingetragen werden.

Monday, March 08, 2010 8:07:21 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2010
# Tuesday, March 02, 2010

Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools die viele nützliche Funktionen hinzufügen.

Kostenloaser Download: http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b

Tuesday, March 02, 2010 5:34:34 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | Tools | VS 2010
# Thursday, February 04, 2010

Mit TFS 2010 kommen nun endlich hierarchische Workitem Queries und erfreulicherweise lassen diese sich auch im SharePoint Portal schön darstellen.

image

Was mich an der Geschichte nur etwas gestört hat, dass ist, dass die Hierarchie nach dem Laden immer vollständig aufgeklappt ist. Es gibt zwar einen Button “Collapse All” aber den dann immer extra zu drücken um erst mal einen Überblick zu bekommen, ist doch etwas lästig. Zunächst habe ich deshalb versucht die Query entsprechend anzupassen, jedoch gibt es an dieser Stelle leider noch keinen Parameter um das einzustellen. Für das SharePoint-Portal habe ich allerdings eine Lösung gefunden und die geht so:

1.) Ein neues Content Web Part auf der Seite einfügen:

image

2.) Auf dem Content Editor Web Part den Source Editor starten

image

3.) Hier folgendes Script eintragen:

   1: <script language="javascript">
   2: function collapseQuery() 
   3: { 
   4:    _ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00.tryToggle(false, true);
   5: }
   6:  
   7: WPSC.RegisterForEvent("urn:schemas-microsoft-com:dhtml","onload",collapseQuery);
   8: </script>

image

Die ID des Webparts (_ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00) lässt sich relativ einfach im HTML-Source der Seite ermitteln (z.B. IE 8 F12 drücken um in die Developer Tools zu gelangen). Hier kann man dann über Find / Select Element by Click durch Anklicken des WebParts die Stelle im Code einfach finden und die ID zu ermitteln. Zu beachten ist dabei, dass das die ID des Controls etwas anders lautet als das WebPart selbts, so muss am Anfang ein _ stehen und das Control auf _ctl00 enden.

image

Thursday, February 04, 2010 3:41:07 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
VS 2010
# Saturday, November 07, 2009

Mit dem TFS 2010 ist es nun möglich, denn Application-Tier über einen NLB-Cluster zu betreiben. Damit kann man Ausfallsicherheit und Load-Balancing für den App-Tier erreichen. Mit einem SQL-Cluster als Data-Tier skaliert der TFS nun sehr schön, sowohl in Punkte Performance als auch in Bezug auf die Ausfallsicherheit.

image

Nun liegt es natürlich nahe, die Reporting Services ebenfalls über den NLB zu betreiben, was an sich auch kein Problem ist. Man muss nur ein paar Einstellungen vornehmen. So hats bei mir funktioniert:

1.) Das Scale-out Deployment für die Reporting-Services auf beiden Servern aktivieren (setzt SSRS Enterprise voraus)

image

2.) Die Web Service URL auf die IP-Adresse des NLB einstellen

image

3.) In der TFS Admin Console die Reporting Services über den NLB registrieren. Das hat bei mir nur über die IP-Adresse funktioniert, nicht über den Namen. Da muss ich bei Gelegenheit mal danach schauen.

image

4.) In der Datei C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config unter <Service> folgendes Tag einfügen:

<Hostname>sartfsnlb01</Hostname>

5.) In der Web.config unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\ und unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportManager\ im Abschnitt <system.web> folgenden Tag einfügen:

<machineKey validationKey="627BF72BB33AA8D28CA2C3E80920BA4DF0B726F97EEFBB0F4818350D63E6AFA380811F13ED1F086E386284654DB3DAF676707464EEB73EBF79858F477D8E4F5C"
decryptionKey="F40B6E5A02B29A181D2D213B5ED8F50B73CFCFD0CC56E137" validation="SHA1" />

Achtung die Parameterwerte dürfen nuicht umgebrochen werden. Einen eigenen Key kann man sich einfach unter http://aspnetresources.com/tools/keycreator.aspx generieren lassen.

6.) Reporting Srevices neu starten.

7.) Nun werden bei einem Ausfall eines App-Tiers alle Reporting-Anfragen über den anderen App-Tier abgewickelt, der Anwender merkt davon nichts außer dass es beim ersten Zugriff nach dem Ausfall ein wenig länger dauert.

Saturday, November 07, 2009 11:42:05 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2010

Dieses Jahr ist nach längerer Zeit die TechEd, die wichtigste Microsoft-Konferenz in Europa, wieder in Deutschland, genauer gesagt vom 09.Nov – 13. Nov in Berlin. Ich werde dort als ATE (Ask the Experts) zum Thema Visual Studio ALM vertreten sien und darüber hinaus mit Christian Binder und Neno Loje ein Q&A Session zu den Themen TFS, ALM und Visual Studio 2010 zu machen. Die Session wird in Deutsch sein, also wenn ihr Fragen rund um den Themenbereich habt, besucht unsere Q&A-Session. Soviel geballtes Wissen auf einmal gibts nicht so bald wieder :-)

Visual Studio Team Foundation Server Q&A
Mittwoch, 11. November
14:00 – 15:00 Uhr
Community Stage im Zentrum der Ausstellung Halle 4.2

Saturday, November 07, 2009 8:15:43 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Vorträge | VS 2010
# Friday, October 23, 2009

image 

Die .net Developer Group Ulm bietet am 27.10.2009 eine kostenlose Ganztagesveranstaltung rund um Visual Studio 2010 ALM (vormals VSTS 2010). Die Nachfrage für diese Veranstaltung ist so hoch, dass wir uns entschieden haben, die Veranstaltung am 26. November nochmals mit gleichen Sprechern und gleichem Inhalt zu wiederholen. Wer also noch Interesse hat, sollte sich bald möglichst unter http://www.dotnet-ulm.de/vsts2010/ registrieren, wir haben noch ein paar Plätze frei.

Friday, October 23, 2009 3:59:38 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Usergroup | Vorträge | VS 2010
# Tuesday, October 20, 2009

image

Christian zeigt in einem schönenn Blog-Beitrag wie einfach sich der TFS Basic installieren lässt (sogar auf einem Client-Betriebssystem) und wie schnell und einfach damit der Einstieg in die Versionsverwaltung und das Workitem-Tracking gelingt. Da kann nun wirklich jeder diese Features nutzen, auch Solo-Entwickler.

http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx

Tuesday, October 20, 2009 8:41:16 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | VS 2010
# Saturday, October 10, 2009

Mit Team Foundation Server 2010 wird der TFS nun auch für kleinere Teams noch interessanter als bisher. Es gibt eine Reihe von Vorteilen gegenüber der aktuellen Version:

  • Preis
    Es gibt im Moment noch keine abschließenden Informationen über das Pricing, aber voraussichtlich wird der Preis zukünftig wohl kaum noch ein Argument sien, den TFS nicht zu nutzen.
  • Systemanforderungen
    Die Anforderungen an das System sind deutlich geringer als bei TFS 2008. So kann der TFS nun auf einem Domänen-Controller und sogar auf Client-Betriebssystemen installiert werden. Zudem können nun einige Komponenten wie SharePoint und Reporting optional installiert werden.
  • Installation
    Der Installationsvorgang wurde deutlich vereinfacht.

Damit kommt Microsoft dem Slogen “ALM for the masses” einen großen Schritt näher.

Weitere Details gibt es auf dem Blog von Brian Harry:
http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx

Saturday, October 10, 2009 12:45:53 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | VS 2010
# Tuesday, July 14, 2009

Beim Installieren eines Team Foundation Server 2010 Beta 1 habe ich einen Fehler TF254038 bekommen. Beim Anlegen einer SharePoint Web Application auf dem TFS hat der Wizard behauptet ich hätte die SharePoint Extensions nicht installiert.

image

Ich habe für den TFS und den SharePoint Server zwei getrennte Maschinen. Das Problem lag letztendlich darin, dass die Firewall auf der SharePoint Maschine den Zugriff auf die SharePoint Central Administration (Port 17012) geblockt hat. Nachdem ich den freigegeben habe, lief die Installation problemlos durch.

Tuesday, July 14, 2009 10:18:47 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | VS 2010
# Saturday, May 23, 2009

Wenn schon mit Pre-Releases arbeiten, dann richtig habe ich mir gedacht und versucht den Team Foundation Server 2010 Beta 1 auf dem Windows 2008 Server R2 RC zu installieren. Nach einer kurzen Recherche im Internet bin ich auf diesen Blog-Post gestoßen. Mit den Informationen dort ist es mir tatsächlich gelungen, den TFS 2010 Beta1 und VSTS 2010 Beta1 auf dem Win2008R2 RC zu installieren. Damit komme ich nun auch auf meiner Demo-Maschine in den Genuss der Desctop-Experience von Win2008R2 :-)

image

Saturday, May 23, 2009 2:27:30 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | VS 2010
# Tuesday, May 19, 2009

image

Unter http://msdn.microsoft.com/en-us/library/dd831853(VS.100).aspx steht inzwischen auch die Dokumentation für das .Net Framework 4 Beta 1 und Visual Studio 2010 Beta 1 zur Verfügung. Für die Beta 1 wird es nur eine Online-Version der Dokumentation geben, eine lokale Installation wird erst mit einer späteren Version verfügbar sein, was sicher bei einer Beta-Dokumentation auch Sinn macht.

Tuesday, May 19, 2009 8:15:59 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
VS 2010
# Monday, May 18, 2009

Nachdem es bisher nur Gerüchte gab, nun ist es offiziell. Visual Studio 2010 Beta 1 wird noch heute für MSDN-User verfügbar sein. Für die Öffentlichkeit gibt es den Download dann ab Mittwoch.

Diesmal aus einer verlässlichen Quelle (Soma Somasegar, Corporate Vice President Microsofts)

Visual Studio 2010 and .NET FX 4 Beta 1 ships!

Update: Ich habe die Bits inzwischen runtergeladen. Da haben die Jungs wirklich noch einiges reingepackt gegenüber den früheren CTPs.

Monday, May 18, 2009 4:50:56 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
VS 2010
# Tuesday, October 28, 2008

Das neueste CTP zu Visual Studio 2010 (Codename Rosario) steht nun zum Download bereit. Das CTP wird als VPC Image bereitgestellt.

Mit Visual Studio 2010 kommen viele neue interessante Features. Vor allem im Bereich Testing und Architektur hat sich hier vieles getan. Ich werde mit diesem CTP beginnen, die einzelnen Funktionen näher zu beleuchten und sicher in nächster Zeit den einen oder andern Blogbeitrag zu diesem Thema schreiben.

Es gibt mit dem CTP verschiedene Aktivierungs-Meldungen. Diese können jedoch meistens einfach ignoriert werden, das Image läuft ganz normal weiter.

Download details: Visual Studio 2010 and .NET Framework 4.0 CTP

Tuesday, October 28, 2008 8:14:49 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1] -
VS 2010
Archive
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
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 2012
Thomas
Sign In
Statistics
Total Posts: 560
This Year: 3
This Month: 1
This Week: 3
Comments: 351
Themes
All Content © 2012, Thomas
DasBlog theme 'Business' created by Christoph De Baene (delarou)