<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.aspnetzone.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'Tools' and 'Unit-Tests'</title><link>http://www.aspnetzone.de/search/SearchResults.aspx?o=DateDescending&amp;tag=Tools,Unit-Tests&amp;orTags=0</link><description>Search results matching tags 'Tools' and 'Unit-Tests'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61120.2)</generator><item><title>The Bandt way of TDD</title><link>http://www.aspnetzone.de/blogs/juergengutsch/archive/2010/05/07/the-bandt-way-of-tdd.aspx</link><pubDate>Fri, 07 May 2010 11:44:00 GMT</pubDate><guid isPermaLink="false">ce930855-ae9b-4fa4-8077-06a76071cc6a:217169</guid><dc:creator>Jürgen Gutsch</dc:creator><description>&lt;P&gt;Seit einiger Zeit baue ich nebenher an einem kleinen multi-mandantenfähigen Lizenzserver. Ziel ist es diese Anwendung komplett mit TDD zu schreiben. &lt;/P&gt;
&lt;P&gt;Wie ich sicher bisweilen schon erwähnt hatte, war es bisher für mich sehr schwer, TDD wirklich konsequent einzusetzen. Wenn man Jahrelang auf die herkömmliche Art und Weise programmiert, ist es in einem kleinen privaten Projekt ein enormer Kraftakt, sein Denken so umzustellen, dass man &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Erst penibel die Anforderungen definiert 
&lt;LI&gt;Die Tests definiert 
&lt;LI&gt;Die Tests schreibt 
&lt;LI&gt;und dann implementiert, ohne zu viel Code zu schreiben &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Allerdings hat mir ausgerechnet folgender Blogbeitrag von &lt;A title="Thomas Bandt" href="http://blog.thomasbandt.de/"&gt;Thomas Bandt&lt;/A&gt; den Anstoß gegeben es noch einmal ernsthaft zu versuchen: &lt;A href="http://blog.thomasbandt.de/39/2326/de/blog/tdd-bdd-status-quo.html"&gt;TDD, BDD - Status Quo&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Bandt way of TDD&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Das interessante an diesem Weg ist, dass ich einen Schritt spare: Die Anforderungen sind schon die Definitionen der Tests und das sogar Wort wörtlich. Die Anforderungen werden im Klartext, auf deutsch mit allen Umlauten als Test geschrieben. Das vereinfacht das schreiben der Tests ungemein. &lt;/P&gt;
&lt;P&gt;Der zweite interessante Punkt ist die Kapselung wiederkehrender Aufgaben (erzeugen des SuT und der abhängigen Stubs) in eine Basisklasse. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Es flutscht&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Also hatte ich beschlossen den Lizenzserver (den ich schon länger schreiben wollte) mit dem &lt;STRONG&gt;Bandt way of TDD&lt;/STRONG&gt; zu entwickeln. Interessanterweise habe ich mich bei diesem Projekt bisher noch nicht dabei erwischt, an den Tests vorbei zu implementieren. Und noch schlimmer: Es fängt an Spaß zu machen, wenn man alle Tests die sich inzwischen angesammelt haben, laufen lässt und alles grün ist.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Word to Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Nach dem die Zahl der Tests nun ständig ansteigt, habe ich mir so langsam Gedanken gemacht, wie ich diese dokumentiere. Bisher hatte ich (da es sich um ein rein privates Projekt handelt) die Anforderungen direkt in Tests umgesetzt, und dann nach einer Weile alle Definitionen der Tests in einer HTML-Datei gespeichert.&lt;/P&gt;
&lt;P&gt;Aber die bessere Lösung stammt wieder einmal von Thomas: mit &lt;A href="http://blog.thomasbandt.de/39/2335/de/blog/word-to-code-kleiner-tdd-helper.html"&gt;"Word to Code"&lt;/A&gt; hat Thomas ein kleines Helferlein geschrieben, mit dem sich in Word formulierte Anforderungen, nach den Konventionen des &lt;STRONG&gt;Bandt way of TDD&lt;/STRONG&gt;, in fertige Unit Tests konvertieren lassen.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fazit&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Wer also, wie ich, selber noch Schwierigkeiten hat, TDD wirklich einzusetzen, sollte mal diesen Weg probieren. Sobald man richtig mit den Mocking und Testing Frameworks seiner Wahl vertraut ist, flutscht es wirklich. Den Aufwand den man auf die Herkömmliche Art noch ins Debugging und ins testen von Hand gesteckt hat, steckt man nun mit TDD in die Tests. Die Tests geben einem zusätzlich noch die Sicherheit, dass der eigene Code den Anforderungen entspricht :-)&lt;/P&gt;
&lt;P&gt;Einfach mal ausprobieren :-)&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN:left;PADDING-BOTTOM:4px;MARGIN:0px;PADDING-LEFT:4px;PADDING-RIGHT:4px;PADDING-TOP:4px;" class=wlWriterHeaderFooter&gt;&lt;A href="http://dotnet-kicks.de/kick/?url=http://www.aspnetzone.de/blogs/juergengutsch/archive/2010/05/07/the-bandt-way-of-tdd.aspx"&gt;&lt;IMG border=0 alt="DotNetKicks-DE Image" src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http://www.aspnetzone.de/blogs/juergengutsch/archive/2010/05/07/the-bandt-way-of-tdd.aspx&amp;amp;bgcolor=3169AD&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000"&gt;&lt;/A&gt;&lt;/DIV&gt;</description></item><item><title>Eines f&amp;#252;hrt bekanntlich unweigerlich zum n&amp;#228;chsten</title><link>http://www.aspnetzone.de/blogs/juergengutsch/archive/2009/01/17/eines-f-hrt-bekanntlich-unweigerlich-zu-n-chsten.aspx</link><pubDate>Sat, 17 Jan 2009 12:58:00 GMT</pubDate><guid isPermaLink="false">ce930855-ae9b-4fa4-8077-06a76071cc6a:205910</guid><dc:creator>Jürgen Gutsch</dc:creator><description>&lt;P&gt;Vor einigen Tagen fragte mich &lt;A title="Peter Bucher" href="http://www.aspnetzone.de/blogs/peterbucher/default.aspx"&gt;Peter&lt;/A&gt; ob ich &lt;A title=MbUnit href="http://www.mbunit.com/"&gt;MbUnit&lt;/A&gt; kennen würde, ein – wie er sagte – einfaches und vor allem gut erweiterbares Unit Testing Framework. &lt;/P&gt;
&lt;P&gt;Ich kannte es nicht, also folgte das nächste: Ich Google nach &lt;A title=MBUnit href="http://www.mbunit.com/"&gt;MbUnit&lt;/A&gt; und folge auf der Projektseite dem Link zur neuesten Version (v3) und lande bei &lt;A title=Gallio href="http://www.gallio.org/"&gt;Gallio&lt;/A&gt;. Der Download bei &lt;A title=Gallio href="http://www.gallio.org/"&gt;Gallio&lt;/A&gt; ist ein Bundle, bestehend aus &lt;A title=MBUnit href="http://www.mbunit.com/"&gt;MbUnit&lt;/A&gt; und vielen weiteren Test-Tools.&lt;/P&gt;
&lt;P&gt;Es folgt wieder unweigerlich das nächste: Ich lade mir das gesamte Paket herunter und schaue mir die enthaltenen Beispielprojekte an, bzw. starte einfach mal eines der Unit-Test-Projekte. Das interessante war jetzt, dass selbständig der Internet Explorer auf geht, Google aufruft, “MbUnit” in das Suchfeld eingetragen wird und anschließen mit einem Click auf den Button “Auf gut Glück” zur Projektseite von &lt;A title=MBUnit href="http://www.mbunit.com/"&gt;MbUnit&lt;/A&gt; gesprungen wird.&lt;/P&gt;
&lt;P&gt;Das führte wiederum dazu, dass ich in diesem Testprojekt die &lt;A title=WatiN href="http://watin.sourceforge.net/"&gt;WatiN&lt;/A&gt; Library gefunden habe (WatiN = “Web Application Testing In .Net”). &lt;A title=WatiN href="http://watin.sourceforge.net/"&gt;WatiN&lt;/A&gt; ermöglicht es in einem Unit Test-Projekt, den Internet Explorer anzusteuern und Aktionen direkt auf der zu testenden Seite durchzuführen. Man kann dem Internet Explorer also sagen: “öffne mir folgende Seite, klicke auf folgenden Link und prüfe ob auf der Seite folgender Text zu finden ist”.&lt;/P&gt;
&lt;P&gt;Und es folgte darauf hin unweigerlich dazu, dass ich mir sagte: “Hei Jürgen, das ist ja so cool, das kannst du doch für das &lt;A title=sharpcms href="http://www.sharpcms.de/" target=_blank&gt;sharpcms&lt;/A&gt; gebrauchen. Damit kannst du ja das Backend komplett mit Tests abdecken”. Also nutze ich jetzt jede freie Sekunde (was für mich ja bekanntlich recht schwierig geworden ist. &lt;A title="Lang, lang ist's her..." href="http://www.aspnetzone.de/blogs/juergengutsch/archive/2009/01/16/lang-lang-ist-s-her.aspx"&gt;Siehe hier&lt;/A&gt;) um Tests mit &lt;A title=MBUnit href="http://www.mbunit.com/" target=_blank&gt;MbUnit&lt;/A&gt; und &lt;A title=WatiN href="http://watin.sourceforge.net/"&gt;WatiN&lt;/A&gt; für das &lt;A title=sharpcms href="http://www.sharpcms.de/"&gt;sharpcms&lt;/A&gt; zu schreiben.&lt;/P&gt;
&lt;P&gt;Und wer ist schuld, dass das sharpcms jetzt automatisierte Tests bekommt? &lt;BR&gt;Natürlich der &lt;A title="Peter Bucher" href="http://www.aspnetzone.de/blogs/peterbucher/default.aspx"&gt;Peter&lt;/A&gt; ;-)&lt;/P&gt;
&lt;P&gt;@&lt;A title="Peter Bucher" href="http://www.aspnetzone.de/blogs/peterbucher/default.aspx"&gt;Peter&lt;/A&gt;: Danke nochmal für diesen Hinweis :-)&lt;/P&gt;</description></item></channel></rss>