Wednesday, October 26, 2011

Android: Der Vortrag in der Java User Group Görlitz

Hallo an alle Android-Interessierten!

in diesem Post möchte ich die Folien und das Eclipse-Android-Projekt vom Java-User-Group-Vortrag zum Download zur Verfügung stellen. Bei dem Projekt handelt es sich um eine ganz primitive Memo-App. Wer noch Fragen hat, ist dazu angehalten diese zu stellen.


Hier die zwei Links:
Weiterhin gibt es noch die gratis Version des Buches "Android - Grundlagen und Programmierung" (Arno Becker und Marcus Pant) unter folgendem Link zum Download:
Beim Durcharbeiten ist bitte zu beachten, dass an einigen Stellen Fehler enthalten sind, bzw. einige Erläuterungen fehlen. Dazu sind auf der Website zum Buch unter der Rubrik Errata Korrekturen und Anmerkungen zu lesen, die dann hilfreich sind, wenn irgendetwas im Buch nicht nachvollziehbar ist.

Viel Spaß

    Thursday, October 6, 2011

    Ein paar Gedanken zum Testen von Regeln


    ​Da man mit Hilfe von Regeln fest einprogrammierte Logik aus einem System in diese stets veränderbaren Regeln hinauszieht, muss diese Logik natürlich auch getestet werden. Es steht also die Frage im Raum, wie ich Regeln Testen kann. Insbesondere die Frage nach der Testumgebung ist interessant.
    Fest steht:
    • Die unmittelbare Ausführungsumgebung der Regeln ist die Rule-Engine (Regelmaschine).
    • Eigentlich ist bei Tests darauf zu achten, dass der Ausgangszustand immer derselbe ist. Für Regeln ist dies jedoch nicht sinnvoll. Denn gerade das Zusammenspiel von Regeln und das Wiedereinführen von Entscheidungen der Rule-Engine bilden das reele Verhalten von Rule-Engines und Regeln ab.
    • Entsprechende Fakten werden je nach Testfall in die Regelmaschine eingefügt. Je nachdem, welche Regel erwartungsgemäß aktiviert werden sollte, muss die Faktenbasis präpariert werden.
    Tests per JUnit ausführen zu lassen, wäre möglich. Es ist die Frage, ob dies sinnvoll ist, da nie klar ist, welche Regeln es geben wird, da diese nach Bedarf bzw. nach Anforderung erstellt wird. Sie werden also während der Laufzeit erstellt, erweitert bzw. modifiziert. Der Ausführungszeitpunkt von Unit-Tests ist hingegen vor der Inbetriebnahme des Systems. Daher sollte es eine Komponente geben, die eine Testumgebung bereitstellt, die man nach Bedarf konfigurieren kann. In dieser müsste man dann zur Betriebszeit die Regeln austesten können. Da bei Aktivierung von Regeln eine Konsequenz ausgeführt wird, die auf das Produktivsystem bzw. Umgebungssysteme Auswirkungen hat, müsste man an dieser Stelle eventuelle Modifikationen ermöglichen, die unerwünschte Auswirkungen für den Test zu unterdrücken.

    Für den Test von Regeln interessiert hauptsächlich, ob eine bestimmte Regel aktiviert wird, weniger, ob eine Konsequenz ausgeführt wird. Wenn eine Regel also zur Aktivierung markiert ist (man sagt, sie ist auf der Agenda), dann ist die Ausführung der Konsequenz gewiss. Da die Logik der Konsequenz entkoppelt ist, kann man davon ausgehen, dass diese auch separat getestet worden ist.
    Lediglich für den Fall, dass in einer Konsequenz Modifikationen an der Faktenbasis vorgenommen werden, sollte man diese Ausführung auch zulassen.
    Heißt also, auch die Aktivierung der Regel muss für den Test konfiguriert werden können.