tag:blogger.com,1999:blog-33593520255645736782024-02-19T15:59:50.037+01:00SoftwaregedankenSoftware wird von Menschen, mit Menschen und für Menschen entwickelt.
<br>
Nicht alle Probleme von Software können im Code gelöst werden.
<br>
Es muss doch irgendwie möglich sein, dass "historisch gewachsen" aus der Software zu verbannen.Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3359352025564573678.post-79004808794357787972013-12-27T12:55:00.000+01:002013-12-27T12:55:33.337+01:00AppFuse - SecurityIm <a href="http://ralfklinger.blogspot.de/2013/12/appfuse-extend-with-eclipse.html">letzten Post</a> wurde bereits eine kleine Projektverwaltung begonnen. Nach dem erfolgreichen Auflisten von Projekten fehlt jetzt noch das Anlegen, Bearbeiten und Löschen. Darüber hinaus soll die Sicherheit einer AppFuse-Anwendung untersucht werden. Wer darf welche Seiten sehen und wie schlägt sich Appfuse bei den <a href="https://www.owasp.org/index.php/Top_10_2013-Top_10">"OWASP Top 10 2013 vulnerabilities"</a>.
<br>
<a href="http://ralfklinger.blogspot.com/2013/12/appfuse-security.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-21328471856513072492013-12-16T10:59:00.000+01:002013-12-16T11:00:51.216+01:00AppFuse - extend with eclipseNachdem in den <a href="http://ralfklinger.blogspot.de/2013/11/appfuse-setup-and-first-start.html">letzten beiden Posts</a> gezeigt wurde, was alles in AppFuse steckt und <a href="http://ralfklinger.blogspot.de/2013/12/appfuse-whats-inside.html">womit das realisiert wurde</a>, geht es in diesem Post um die Erweiterbarkeit von AppFuse. Dazu soll ein neuer Menüpunkt zum Verwalten von Projekten geschaffen werden. Die Erweiterung wird mit Hilfe von Eclipse umgesetzt, weshalb zuerst ein entsprechender Import erfolgen muss.
<br>
<a href="http://ralfklinger.blogspot.com/2013/12/appfuse-extend-with-eclipse.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-42239074141078256312013-12-08T17:50:00.000+01:002013-12-09T12:26:23.927+01:00AppFuse - what's insideIm <a href="http://ralfklinger.blogspot.de/2013/11/appfuse-setup-and-first-start.html">vorigen Post</a> wurde die AppFuse-MultiMode-WebApp aufgesetzt und gestartet. Hier soll es darum gehen, wie diese Anwendung im Detail aussieht und welche Möglichkeiten out-of-the-box geboten werden. Am Ende des Artikels schaue ich mir auch noch an, wie und womit AppFuse umgesetzt wurde. Im nächsten Post folgt dann eine eigene Erweiterung der Applikation.
<br>
<a href="http://ralfklinger.blogspot.com/2013/12/appfuse-whats-inside.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-88593240644999095592013-11-28T17:23:00.000+01:002013-11-28T17:30:09.609+01:00AppFuse: setup and first startNeulich bin ich auf der Suche nach einem <a href="http://de.wikipedia.org/wiki/Single-page_Web_Application">Single-Page-(Web-)Application-Framework</a> auf die empfehlenswerten Präsentationen von <a href="http://raibledesigns.com/rd/page/publications">Matt Raible</a> gestoßen. Dabei entdeckte ich, dass er der Gründer von <a href="http://appfuse.org/display/APF/Home">AppFuse</a> ist. AppFuse stellt sich mir als eine Art Template-Mechanismus zum schnellen Aufsetzen eines kompletten Applikationsstacks dar. Und da gerade ein neues Projekt ansteht, wollte ich mal schauen, ob das alles tatsächlich so einfach geht wie versprochen.
<br>
<a href="http://ralfklinger.blogspot.com/2013/11/appfuse-setup-and-first-start.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-15118005781293676982013-11-21T17:50:00.000+01:002013-11-21T17:50:21.095+01:00Mock Object by ExampleBisher wurde gezeigt, wie nicht relevante Abhängigkeiten mittels <a href="http://ralfklinger.blogspot.de/2013/10/dummy-object-by-example.html">Dummies</a> eliminiert, spezielle Testvorraussetzungen mittels <a href="http://ralfklinger.blogspot.de/2013/11/test-stub-by-example.html">Stubs</a> geschaffen und indirektes Verhalten mittels <a href="http://ralfklinger.blogspot.de/2013/11/test-spy-by-example.html">Spies</a> geprüft werden kann. Allen diesen Test Doubles gemein ist, dass zusätzlicher Implementierungsaufwand notwendig ist. Oftmals müssen erst neue Interfaces geschaffen und davon spezielle Implementierungen abgeleitet werden.
<br>
<br>
Mock-Objekte hingegen werden durch ein Mock-Framework erzeugt. Vorhandene Klassen werden ohne eigenen Implementierungsaufwand durch Mock-Objekte ersetzt. Es muss noch nicht einmal ein zusätzliches Interface geschaffen werden, weil das Mocking auch auf Klassen funktioniert. Lediglich das JAR des gewählten Mock-Frameworks muss in den CLASSPATH eingebunden werden. Weiterhin erlauben Mock-Objekte von Hause aus eine Verhaltensverifikation wie bei Test Spies.
<br>
<a href="http://ralfklinger.blogspot.com/2013/11/mock-object-by-example.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-85376438655339094712013-11-14T17:52:00.000+01:002013-11-14T17:52:52.538+01:00Test Spy by ExampleTest Spies nehmen eine gewisse Sonderrolle bei den Test Doubles ein, weil sie die Tests weder vereinfachen noch spezielle Voraussetzungen schaffen. Ihr Zweck ist es, Verhalten zu testen. Alle bisherigen Tests haben ausschließlich den Zustand nach der Berechnung überprüft, also ob die Rechnungssumme stimmt. Mit einem Test Spy kann indirekt überprüft werden, ob eine Methode wie erwartet aufgerufen wurde (und ggf. wie oft). Ein Beispiel hierfür wäre z.B. die Überprüfung des automatischen Versands einer eMail nach einer Nutzerregistrierung.
<br>
<a href="http://ralfklinger.blogspot.com/2013/11/test-spy-by-example.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-36439566721446270142013-11-06T18:32:00.000+01:002013-11-06T18:32:27.669+01:00Test Stub by ExampleIm Gegensatz zu <a href="http://ralfklinger.blogspot.de/2013/10/dummy-object-by-example.html">Dummy-Objekten</a>, bei denen nicht relevante Abhängigkeiten eliminiert werden, sollen mittels Test Stubs spezielle Testvoraussetzungen geschaffen werden. Dafür wird unser Beispiel um die Anforderung erweitert, dass zur Happy Hour alles nur die Hälfte kosten soll.
<br>
<a href="http://ralfklinger.blogspot.com/2013/11/test-stub-by-example.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-55468170796829304372013-10-31T17:51:00.000+01:002013-10-31T18:00:26.512+01:00Dummy Object by ExampleDas ist der zweite Teil der Serie über Test Doubles. Der erste Teil mit der Einführung von Test Doubles und dem Aufbau des Beispiels findet sich <a href="http://ralfklinger.blogspot.de/2013/10/test-doubles-by-example.html">hier</a>.
<br>
<br>
Dummy-Objekte dienen dazu, für den Unit-Test nicht interessierende, aber zwingend aufzubauende Abhängigkeiten zu vereinfachen. In dem Beispiel soll die Berechnung der Rechnungssumme getestet werden. Dass der Kunde eine Adresse haben muss, ist dabei nicht von Interesse. Deshalb soll ein Dummy-Kunde geschaffen werden, der ohne Adresse auskommt.
<br>
<a href="http://ralfklinger.blogspot.com/2013/10/dummy-object-by-example.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0tag:blogger.com,1999:blog-3359352025564573678.post-36908058274807717832013-10-30T19:36:00.003+01:002013-11-21T17:51:03.872+01:00Test Doubles by ExampleUnit Tests sollen den produktiven Code gegen Fehler absichern. Es entsteht eine Art Sicherheitsnetz, das auch größere Umbauarbeiten am Code (Refactorings) fast gefahrlos erlaubt. Damit aber keine Pseudosicherheit aufgebaut wird, müssen Unit Tests einigen Grundregeln folgen. Diese wurden von Tim Ottinger und Jeff Langr sehr gut als <a href="http://pragprog.com/magazines/2012-01/unit-tests-are-first">FIRST</a>-Kriterien zusammengefasst.<br>
<br>
Test Doubles leisten einen unschätzbaren Wert zur Erreichung der ersten beiden Kriterien FAST und ISOLATED. Die Kritierien REPEATABLE, SELF-VERIFYING und TIMELY sind durch keine Tools erreichbar und müssen durch die Disziplin jedes einzelnen Entwicklers umgesetzt werden.<br>
<br>
<a href="http://ralfklinger.blogspot.com/2013/10/test-doubles-by-example.html#more">Weiterlesen »</a>Anonymoushttp://www.blogger.com/profile/16840621734530808987noreply@blogger.com0