Neues Jahr, neues Glück? Ich denke neues Jahr, mehr Produktivität. Als DotNet’ler ist man ja schon fast ein wenig verwöhnt wenn man die Anzahl an Aktualisierungen in den bestehenden Produkten anschaut. Schon im ersten Monat des neuen Kalenderjahres startet Microsoft … Weiterlesen
Archiv der Kategorie: Agile Development
Als typischer Coder steht man nicht gerne früh auf. Erst recht nicht an einem Samstagmorgen. Hin und wieder gibt es aber Ausnahmen wie zum Beispiel, wenn der Postbote das langersehnte iPad Mini mitbringt oder Star Wars auf Bluray. In diesem … Weiterlesen
Bei Namics erreichten uns in der naher Vergangenheit immer häufiger Projektausschreibungen die explizit nach agilen Projektansätzen, z.B. Scrum nachfragen. Ich habe in der Vergangenheit schon selber agile Projekte geleitet und habe nun mein Wissen mit einer Scrum Master Ausbildung untermauert. Im Rahmen des … Weiterlesen
Momentan erfreuen sich agile Methoden in der Software-Entwicklung großer Beliebtheit und werden abwechselnd als Sehnsuchtsort oder ultimative Waffe verkauft. Ein aussenstehender Beobachter könnte fast den Eindruck gewinnen, es herrscht Bürgerkrieg und Revolution in der Welt der Software-Entwicklung. Dabei ist alles … Weiterlesen
Je mehr ich mich mit dem Thema Softwarearchitektur auseinandersetze desto mehr treffe ich auf unterschiedliche Ansichten, was denn ein Softwarearchitekt ist und worin seine Aufgaben bestehen. In diesem Blogeintrag möchte ich meine Meinung zum Thema Softwarearchitektur und dem sagenumwobenen Wesen … Weiterlesen
Das altbekannte Problem In einer Software muss ein 3rd Party Service über eine definierte Schnittstelle eingebunden werden. Das Verhalten der Schnittstelle muss vorab getestet und verifiziert werden. Solche Tests sind Behaviour Driven, sprich das Verhalten der Schnittstelle wird vor der Integration in das … Weiterlesen
Stellen sie sich vor der Compiler ihrer Programmiersprache würde nicht nur Typfehler, sondern auch einen Großteil der Verhaltensfehler in der Applikation finden können. Welche Auswirkung würde das wohl auf die Qualität ihrer Software haben? Gerade Praktiken der agilen Softwareentwicklung wie die schnelle, häufige Veröffentlichung oder sogar die kontinuierliche Veröffentlichung (Continuous Delivery) sind ohne ein schnelles und umfassendes Feedback über die Softwarequalität nicht denkbar. Automatische Tests können genau dieses Feedback geben – und dennoch werden sie von sehr wenigen Projekten genutzt.
Leider ist die Erstellung von effektiven automatischen Tests eine Fähigkeit, die bei der Ausbildung von Softwareentwicklern oft zu kurz kommt. Viele naive Ansätze der Testautomatisierung, wie etwa mit Tools, die wenig Aufwand durch Aufnahme und Wiedergabe von UI-Interaktionen versprechen, können schnell dazu führen, dass ein Team von dem Vorhaben frustriert ist und den Wert der automatischen Tests in Frage stellt. Das kann etwa dann der Fall sein, wenn kleine Änderungen an dem User Interface dazu führen, dass eine ganze Reihe an Tests fehlschlagen und Entwickler vor der Frage stehen, ob es sich tatsächlich um eine Regression handelt oder um eine falsche Fehlermeldung.
Im Extremfall führt dieser Missstand dazu, dass Änderungen am User Interface nur widerwillig von den Entwicklern vorgenommen werden. Es ist eine paradoxe Situation, da doch gerade durch die Tests auch bei tiefgreifenden Änderungen mehr Sicherheit und damit eine deutlich erhöhte Flexibilität der Software erreicht werden sollte. Die richtige Herangehensweise an Testautomatisierung ist deshalb der Schlüssel für eine frustfreie und wirtschaftliche automatisierung von Testfällen und Grundlage für rapide und häufige Lieferung von Software.
Einen Webservice im Integrationstest anzusprechen hat vieles mit dem berüchtigten Schuss auf ein bewegtes Ziel gemeinsam: der Webservice ist aus Sicht des Tests schwer berechenbar und flüchtig. Netzwerkprobleme, eine Änderungen an der Datenbasis (z.B. durch vergessene “Aufräumarbeiten” nach einem Test) oder die Änderung der Schnittstelle können zum ungewollten Scheitern der Integrationstests führen. Vor allem wenn sich die Daten des Webservices oft ändern, wie es bei Information Retrieval- oder PIM Systemen der Fall ist, kann der Aufwand der betrieben werden muss um die Tests laufend anzupassen bald die durch eine Automatisierung erhoffte Zeitersparnis übersteigen.
Aber selbst wenn der Webservice recht statisch ist, ist die Zeit für einen HTTP Round-Trip, der vielleicht auch noch eine Datenbankquery anstößt, ein unliebsamer Flaschenhals, der die Testausführung ausbremst. Mit den richtigen Techniken und Tools kann man jedoch auch flüchtige Webservices zähmen und so den Aufwand automatisierter Tests auf ein Minimum beschränken.
Bereits in den späten siebziger Jahren haben Studien festgestellt, dass ein Großteil der Kosten für ein Softwareprojekt in die Wartung und Weiterentwicklung fließen. Viele Unternehmen standen und stehen deshalb vor der schwierigen Situation ihre alten und zunehmend teueren “Legacy” Systeme durch neue zu ersetzen. Wie kommt es eigentlich dazu und weshalb ist die Wartung und Weiterentwicklung von Software eigentlich so teuer?
Auch für Migrationsprojekte ist klassische Projektplanung mit Meilensteinen, Aktivitäten und deren Abhängigkeiten unerlässlich. Man sollte sich jedoch bewusst machen, dass hier ein neues System entwickelt wird, während das Alte noch läuft und Veränderungen unterworfen ist. Da i.d.R. das neue System … Weiterlesen















