Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Sunday, November 09, 2008
Neues rund um's Thema .Net
 
 Sunday, November 09, 2008

Mit ein wenig Verspätung wurden die TFS Power Tools October 2008 nun released. Dafür wurden aber noch ein paar wichtige Bugs gefixed. Damit stehen nun die größten Power-Tools zur verfügung, die jemals veröffentlicht wurden. Über die Features habe ich bereits hier gebloggt.

ich denke damit werden ein paar wichtige Lücken geschlossen und durch die Explorer Integration wird TFS für weitere Szenarien interessant.

Download details: Team Foundation Power Tools

Sunday, November 09, 2008 7:33:36 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, October 31, 2008

Der artiso Workitem Manager ist ein Tool mit dem sich Workitems hierarchisch organisieren lassen. Diese hierarchische Organisation bietet verschiedene Vorteile. Neben einer besseren Strukturierung und einer erhöhten Übersichtlichkeit vor allem auch eine visuelle Traceability. Damit ist gemein, dass durch die Hierarchie sichtbar wird welche Tests und Implementierungsaufgaben einem Feature zugeordnet sind. Die ist z.B. sehr hilfreich, wenn sich das Feature ändert zu erkennen, welche Workitems auf mögliche Auswirkungen überprüft werden können. Wie hierarchische Workitems in Projekten hilfreich eingesetzt werden, habe ich zusammen mit Christian Binder in diesem MSDN-Webcast erörtert.

Leider bringt der TFS in der Version 2008 diese Hierarchie nicht von Haus aus mit. Deshalb hat artiso den Workitem Manager entwickelt. Diesen gibt es nun auch als Open-Version. Die Open-Version ist kostenlos und wird auch als Source-Code bereitgestellt. Wie sich der Workitem Manager Open zur Vollversion unterscheidet kann man der unten stehenden Funktionsmatrix entnehmen. Weiter unten gibt's noch eine Screenshot.

Den Donload für das Setup und den Source-Code findet man unter http://www.alm-tools.de. Gerne freue ich mich über euer Feedback zu dem Tool.

image

Friday, October 31, 2008 1:14:31 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |  |   | 
 Wednesday, October 29, 2008

Seit kurzem bin ich stolzer Besitzer einer Microsoft Wireless Notebook Presenter Mouse 8000 (was für ein Name!). Auf meinem Notebook hatte ich aber ständig das Problem dass die Meldung "HDI data has stopped working" kam. Zwar funktionierte das System ohne Probleme aber die Meldung war extrem nervig, vor allem bei Demos und Vorträgen. Nach einigem suchen bin ich dann auf einen Forum-Thread gestossen der genau für dieses Problem eine Lösung beschreibt. Der entscheidende Post hier nochmals kurz zitiert:

I was having the same problem with my bluetooth microsoft wireless notebook presenter mouse 8000. The problem is created by an application in the HP quick launch Buttons. I removed the application from the launch buttons.

go to:

C:\Program Files\Hewlett-Packard\HP Quick Launch Buttons

move the following files to a backup folder on your computer:

HidActn.dll
Hiddata
PushHid.dll

Then restart you computer and you should not have the errors and the other things on your laptop should still be available.

"HID data has stopped working" - bluetooth mouse error - Vista Hardware Devices

Wednesday, October 29, 2008 10:08:31 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Wie ich hier bereits gepostet habe, verschmilzt Microsoft die Visual Studio Team System Development Edition mit der Database Edition, aus meiner Sicht eine wirklich gute Lösung. Um dieses Thema treten aber immer wieder Fragen auf, so dass ich hier mal die wichtigsten gesammelt habe und natürlich auch beantworte.

F: Wie installiere ich die zusätzliche Edition?
A: Auf MSDN steht den Abonenten die jeweils andere Edition nun zusätzlich zum Download zur Verfügung. Diese kann hier heruntergeladen und dann einfach zusätzlich zur bestehenden Installation installiert werden. Die zusätzlichen Funktionen integrieren sich dann in die bestehende Installation. Ein gemeinsames Installationspaket ist momentan nicht geplant. Mit VS2010 werden die beiden Editionen dann als gemeinsames Paket ausgeliefert.

F: Für welche Editionen gilt diese Option?
A: Die Option gilt sowohl für die 2005er als auch für die 2008er Editionen, im Detail also für:
Visual Studio 2005 Team Edition for Software Developers with MSDN Premium Subscription
Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription
Visual Studio Team System 2008 Development Edition with MSDN Premium Subscription
Visual Studio Team System 2008 Database Edition with MSDN Premium Subscription

F: Wie verhält sich das mit Servicepacks?
A: Nach der Installation der zusätzlichen Edition müssen die Servicepacks erneut installiert werden.

Weitere Informationen finden sich auch auf der FAQ-Seite zum Merge.

FAQ - MSDN Subscribers with Visual Studio Team System Development Edition or Database Edition

Wednesday, October 29, 2008 8:47:01 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 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 [0]    | 
 Friday, October 24, 2008

Auf Channel 9 gibt es eine ganze Reihe von Videos zu Visual Studio 2010 (Codename Rosario).

Monday, September 29th:
- Announcing Visual Studio Team System 2010

Architecture Day (Tuesday, September 30th):
- Cameron Skinner: Visual Studio Team System 2010 - Architecture
- "Top-down" design with Visual Studio Team System 2010
- "Bottom-up" Design with Visual Studio Team System 2010 Architect
- ARCast.TV - Peter Provost on what’s coming for Architects in Visual Studio Team System

Business Alignment (Wednesday, October 1st):
- Achieving Business Alignment with Visual Studio Team System 2010
- Agile Planning Templates in Visual Studio Team System 2010
- Enterprise Project Management with Visual Studio Team System 2010
- Requirements Management and Traceability with Visual Studio Team System 2010

Software Quality (Thursday, October 2nd):
- Better Software Quality with Visual Studio Team System 2010
- Manual Testing with Visual Studio Team System 2010
- Historical Debugger and Test Impact Analysis in Visual Studio Team System 2010

Team Foundation Server (Friday, October 3rd):
- Brian Harry: Team Foundation Server 2010
- Branching and Merging Visualization with Team Foundation Server 2010
- Enterprise Team Foundation Server Management with Mario Rodriguez
- Team Foundation Server 2010 Setup and Administration
- An early look at Team Foundation Build 2010 with Jim Lamb
- A first look at Visual Studio Team System Web Access 2010
- Update on Team Foundation Server Migration and Synchronization

Visual Studio Team System 2010 Week on Channel 9! | VisualStudio | Channel 9

Friday, October 24, 2008 6:16:54 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Thursday, October 16, 2008

Christian Binder hat eine sehr Übersichtliche Darstellung über die verschiedenen VSTS-Sessions auf dem Technical Summit in Berlin zusammengestellt. Die Map stellt nicht nur die dort live vorgestellten Sessions zusammen, soondern auch bereits bestehende und in Kürze erscheinende Webcasts zu dem Thema. Die Map zeigt auch, dass wir versucht haben unsere Inhalte auf dem Technical Summit so aufeinander abzustimmen, dass sowohl EInsteiger als auch fortgeschrittene Anwender sich ein möglichst komplettes Bild von VSTS machen kann. Die WebCast sind thematisch entsprechend eingeordnet und können als Vorbereitung bzw. zur Vertiefung zu den Live-Sessions genutzt werden.

Danke Christian, endlich mal eine übersichtliche Darstellung der verschiendenen Inhalte! 

Tech Summit TFS Track

Was bedeutet was?

image

Christian Binder's Weblog : Alle Visual Studio Teamsystem Session auf dem Technical Summit 2008 im Überblick

Thursday, October 16, 2008 7:41:18 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Tuesday, October 14, 2008

Microsoft Research hat vor kurzer Zeit PEX zum freien Download veröffentlicht. Hinter diesem unscheinbaren Kürzel verbirgt sich ein Tool das absolut genial und beeindruckend ist und klar mach, warum Microsoft ein research center unterhält. Das Tool verspricht nichts weniger als die automatische Generierung von Unit-Tests und den dazugehörigen Testcases um eine möglichst hohe Code-Abdeckung zu erzielen. Detaillierte Informationen bietet das Whitepaper, wer sich auf die schnelle einen Einblick verschaffen möchte findet einen Überblick im Folgenden (na ja, für einen Überblick ist der Post vielleicht doch ein wenig lang geraden, aber ich konnte mich nicht bremsen vor Begeisterung):

Darf ich vorstellen - PEX

Gegeben sei folgende Methode die getestet werden soll:

   1: public string SimpleTest(int x1, int x2)
   2: {
   3:     if (x1 > x2)
   4:         return "x1 > x2";
   5:     if (x1 < x2)
   6:         return "x1 < x2";           
   7:     else
   8:         return "x1 == x2";
   9: }

Für das versierte Auge eines Entwicklers ist sofort klar, da brauchen wir 3 Testcases um eine vollständige Code-Abdeckung zu erzielen. Mal sehen, was PEX daraus macht. Zunächst mal muss PEX heruntergeladen und installiert sein.  Dann kann man einfach einen "Parameterized Unit Test Stub" erzeugen. Dazu in der Methode rechts klicken und den Befehl aus dem Pex-Menü auswählen.

image

Im folgenden Dialog können Sie verschiedene Parameter angeben. Das wichtigste hier ist das Testprojekt in dem der Stub erzeugt werden soll.

image

Der erzeugte Stub sieht dann so aus:

   1: /// <summary>
   2: /// This class contains parameterized unit tests for Calculation
   3: /// </summary>
   4: [TestClass]
   5: [PexClass(typeof(Calculation))]
   6: public partial class CalculationTest
   7: {
   8:     [PexMethod]
   9:     public string SimpleTest(
  10:         [PexAssumeUnderTest]Calculation target,
  11:         int x1,
  12:         int x2
  13:     )
  14:     {
  15:         string result = target.SimpleTest(x1, x2);
  16:         return result;
  17:         // TODO: add assertions to method CalculationTest.SimpleTest(Calculation, Int32, Int32)
  18:     }
  19:     
  20: }

Bei diesem Stub handelt es such um eine Vorlage für einen parameterisierten Unit-test. Toll, und was lässt sich damit nun machen? Wir können eine "Exploration" starten.

image

Diese Exploration versucht nun Input-Parameter zu finden die zu einer möglichst 100%igen Code-Abdeckung führen. Und hier beginnt nun die Magic von PEX. Ohne unser Zutun findet PEX 3 Kombinationen von Input-Parametern die tatsächlich eine komplette Code-Abdeckung erzielen- WOW! Dazu analysiert PEX wirklich den von uns erstellten Code und kann daraus definieren, mit welchen Input-Parametern die einzelnen noch nicht abgedeckten Zweige erreicht werden können.

image

Und das schönste, PEX baut uns automatisch 3 Unit-Tests die diese Testcases implementieren:

   1: [TestMethod]
   2: [PexGeneratedBy(typeof(CalculationTest))]
   3: public void SimpleTest01()
   4: {
   5:     string s;
   6:     Calculation calculation = new Calculation();
   7:     s = this.SimpleTest(calculation, 1, 2);
   8:     Assert.AreEqual<string>("x1 < x2", s);
   9: }
  10:  
  11: [TestMethod]
  12: [PexGeneratedBy(typeof(CalculationTest))]
  13: public void SimpleTest02()
  14: {
  15:     string s;
  16:     Calculation calculation = new Calculation();
  17:     s = this.SimpleTest(calculation, 1879212556, 1879212556);
  18:     Assert.AreEqual<string>("x1 == x2", s);
  19: }
  20:  
  21: [TestMethod]
  22: [PexGeneratedBy(typeof(CalculationTest))]
  23: public void SimpleTest03()
  24: {
  25:     string s;
  26:     Calculation calculation = new Calculation();
  27:     s = this.SimpleTest(calculation, 256, 254);
  28:     Assert.AreEqual<string>("x1 > x2", s);
  29: }

Diese Unit-Tests können wir nun starten und sehen, dass diese wie erwartet alle erfolgreich sind.

image

Damit haben wir einen Test automatisiert erstellt, der sicherstellen kann, dass diese Methode ihr Verhalten nach Außen für die aktuell definierten Test-Cases nicht verändert. Damit können ungewollte Änderungen an der Methode erkannt und beseitigt werden. Ob die Methode allerdings ihre Aufgabe korrekt erledigt, kann PEX natürlich nicht testen. Haben wir die Funktionsweise einer Methode allerdings einmal validiert, kann PEX nun sehr einfach dieses Verhalten prüfen. Und natürlich eignet es sich auch sehr gut um mögliche Test-Cases zu definieren. Es müssen in diesem Fall dann nur noch die einzelnen Ergebnisse je Test validiert werden.

Ändern wir die Methode ab, so dass sich ihr Verhalten ändert, dann alarmiert uns der entsprechende Test.

Soweit sogut - Und was geht sonst noch?

Wenn wir nun ein gewünschte Änderung der Funktionalität implementieren, wie kann PEX dann damit umgehen? Zunächst würden wir die vorhandenen Tests durchführen, damit wir sicher sind, dass die aktuelle Funktionalität noch korrekt läuft. Dann erweitern wir unsere Methode:

   1: public string SimpleTest(int x1, int x2)
   2: {
   3:     if (x1 > x2 * 2)
   4:         return "x1 > x2 * 2";
   5:     if (x1 > x2)
   6:         return "x1 > x2";
   7:     if (x1 < x2)
   8:         return "x1 < x2";           
   9:     else
  10:         return "x1 == x2";
  11: }
Zeile 3+4 haben wir neu hinzugefügt. Nun starten wir eine neue Exploration und PEX ermittelt einen weiteren Test-Case um diese Funktion ebenfalls abzudecken.
 

image

Schön - darf's noch ein bisschen mehr sein?

Dieses einfache Sample war ja schon sehr beeindruckend. Die Frage, die sich aber natürlich direkt stellt, ist wie weit geht denn das? Wir wollen nun den Schwierigkeitsgrad für PEX schrittweise steigern. Integer-Werte sind ja noch relativ einfach zu handhaben, aber wie sieht's denn beispielsweise mit Strings aus? Hierzu zunächst wieder eine Methode, die wir testen wollen:

   1: public class StringOperations
   2: {
   3:     public string CheckString(string Input)
   4:     {
   5:         if (Input.StartsWith("abc") && Input.Length > 10)
   6:             return Input + " Starts with 'abc' and length > 10"; 
   7:         if (Input.StartsWith("abc"))
   8:             return Input + " Starts with 'abc'";
   9:         if (Input.StartsWith("ABC"))
  10:             return Input + " Starts with 'ABC'";
  11:         return "Unknown pattern";
  12:     }
  13: }

Stubs erzeugen und Exploration starten. Ob PEX wohl solche Operationen wie "StartsWith" und "Length" versteht?

image

Es findet tatsächlich alle erforderlichen Input-Parameter und sogar noch mehr! PEX stell fest, dass unsere Methode beim Übergeben einer NULL-Referenz eine Exception wirft. Und damit nicht genug, PEX kann uns auch einen Vorschlag machen, wie wir unseren Code verbessern können. Dazu im "Pex Exploration Results" - Fenster unter Views "Show suggestions window" aufrufen.

image

image

Durch einen Doppelklick auf den Eintrag am unteren Rand des Bereichs öffnet sich ein Fenster, das die vorgeschlagene Änderung direkt in unseren Code einfügen kann.

image

   1: public string CheckString(string Input)
   2: {
   3:     // <pex>
   4:     if (Input == (string)null)
   5:         throw new ArgumentNullException("Input");
   6:     // </pex>
   7:     if (Input.StartsWith("abc") && Input.Length > 10)