Schlagwortarchiv für: specflow

.NET Legacy Software: Mit Approval Tests und Specflow fit für die Wartung

Wer kennt das nicht: Eine Software läuft seit Jahren stabil. Nun ändert sich die Rechtslage. Oder Teile der Infrastruktur, mit der sie läuft, werden vom Hersteller nicht mehr unterstützt. Häufig ist die Software jedoch nicht ausreichend mit Tests ausgestattet, um die notwendigen Änderungen durchzuführen. Entwickler stehen dadurch vor dem Problem, dass sie mit jeder vorgenommenen Änderung unvorhersehbare Nebeneffekte auslösen können. Ein Risiko, das kein Entwickler gerne eingeht. 

In diesem Artikel zeigen wir Ihnen drei Möglichkeiten, um Ihre Legacy Software zu warten, wenn diese nicht ausreichend mit Tests ausgestattet ist. Neben den jeweiligen Vor- und Nachteilen gehen wir vor allem auf den Einsatz des Approval Test Frameworks in Kombination mit Specflow ein. 

Wir haben diesen Ansatz gewählt, weil er kosteneffizient ist und die Testfälle ohne Programmierung erstellt werden können.

3 gängige Ansätze für die Qualitätssicherung von Altanwendungen

In der Praxis gibt es im Wesentlichen drei Strategien, mit der Qualität von Legacy Software umzugehen. Nicht alle erfüllen jedoch moderne Standards der Softwareentwicklung:

Testing beschränkt auf manuelle Tests
Es werden keine automatisierten Tests durchgeführt. Das heißt: Alle Tests müssen manuell durchgeführt werden. Das führt in der Regel zu einer höheren Unsicherheit. Beim manuellen Testen sind die Entwickler bzw. Tester stark von dem Know-how über die Anwendung abhängig. Automatisierte Tests kann hingegen jeder laufen lassen. Wenn ein Test fehlschlägt, muss der Entwickler nur die entsprechende Stelle analysieren.

Zusätzlich wird deutlich mehr Zeit benötigt, um manuelle Tests durchzuführen. Gleichzeitig ist die Wahrscheinlichkeit für (weitere) Fehlermeldungen höher. Manuell können selbst die besten Tester mal etwas vergessen. Der automatisierte Test läuft hingegen immer und prüft verlässlich alle definierten Szenarien.

Nachträgliche Ausstattung mit automatisierten Tests
Eine weitere Option ist es, dass Sie die Altanwendung nachträglich mit automatisierten Tests, wie zum Beispiel Unit Tests, oder automatisierten Akzeptanztests ausstatten. Letzteres ist die Standardlösung für neue Anwendungen. Sie wird daher als Erstes angedacht, wenn die Effizienz der Wartung von bestehenden Lösungen erhöht werden soll.

Eine nachträgliche Ausstattung ist in der Regel jedoch sehr teuer. Zudem muss tiefes Know-how über die Zusammenhänge der Domäne (wie die Logik der Anwendung) vorhanden sein. Daher ist diese Option nur mit großem Arbeitsaufwand umsetzbar. In einigen Fällen kann sie aufgrund der Architektur auch gar nicht eingesetzt werden.

Specflow-unterstützte Approval Tests
Mit einer Kombination aus Approval Tests und Specflow kann die Stabilität von Legacy Software nachgewiesen werden. Hierfür werden End-to-End-Tests eingesetzt. Das führt zu deutlich geringeren Kosten als die Nutzung von Unit Testing oder automatisierten Akzeptanztests (wenn man sie im Nachhinein einführt).

Denn mit Specflow-unterstützten Approval Tests lässt sich ein automatisierter Vergleich zwischen dem bestehenden Verhalten und dem Verhalten nach Änderungen umsetzen. So können die Entwickler nach Änderungen überprüfen, ob sich die Software insgesamt noch gleich verhält wie zuvor.

Approval Tests mit Specflow bietet aus unserer Sicht eine schlanke, erweiterbare, und gleichzeitig sichere Möglichkeit, um die Stabilität und Wartbarkeit einer Legacy Anwendung zu erhöhen.

So funktionieren specflow-unterstützte Approval Tests

Zur Umsetzung von Approval Tests mit Specflow werden folgende Schritte durchgeführt: 

  1. Feature Files erstellen: Es werden Feature Files (gherkins) erstellt, die die Eingangsparameter beschreiben und diese mit dem dazugehörigen Methodenaufruf verknüpfen.  
  2. Ergebnisse aufzeichnen: Beim Aufruf der Methode zeichnet das Approval Test Framework die Ergebnisse auf, die die Anwendung für die definierten Eingangsparameter liefert. 
  3. Golden Master erstellen: Die Ergebnisse werden als sogenannter Golden Master gespeichert. 
  4. Weitere Durchläufe: Bei weiteren Durchläufen (nach Umsetzung von Änderungen) dient dieser Master als Vergleichsbasis für den Integritätscheck des Verhaltens. 

Durch dieses Vorgehen ergibt sich eine Reihe von Vorteilen: 

  • Es entsteht kein Programmieraufwand für die Tests. 
  • Die Tests werden stets aktuell gehalten. Denn für jedes korrekt geänderte Verhalten wird der Master überschrieben. 
  • Außerdem können Sie diese Lösung schrittweise aufbauen, da sie für jede technische bzw. inhaltliche Komponente separat implementierbar ist. 
  • Ein weiterer Vorteil gegenüber z. B. Unit Tests ist, dass die Tests das Verhalten aus Usersicht prüfen. Damit ist es möglich, voll integriert zu testen.

Mehr Sicherheit und weniger Aufwand bei der Wartung von Legacy Software

Specflow-unterstützte Approval Tests bieten uns bei TechTalk die nötige Sicherheit, auch Anwendungen im letzten Drittel ihres Lifecycle verlässlich ändern und ausliefern zu können. Der Aufwand ist deutlich geringer als der Aufwand für eine nachträgliche Ausstattung mit Unit Tests. 

Für stark UI-lastige Anwendungen, vor allem wenn viel Logik im UI implementiert ist, empfehlen wir sie nicht. Bis auf diese Ausnahme ist die Methode theoretisch für alle Fälle geeignet. Aus unserer Sicht ist diese Methode vor allem für datengetriebene Verwaltungs-Domänen sinnvoll. 

Im Einzelfall muss jedoch stets die konkrete Architektur der Legacy Software betrachtet werden, um eine Entscheidung über die bestmögliche Methode zu treffen. Denn die gewählte Lösung muss immer zur jeweiligen Software passen.


Haben Sie Fragen?

  • Sie wollen mehr zum Thema specflow-unterstützte Approval Tests wissen?
  • Sie benötigen Unterstützung bei der Wartung Ihrer Legacy Software?

Thomas Korosa steht Ihnen für weitere Fragen über Xing oder Mail zur Verfügung.


Haben Sie eine Legacy Software im Einsatz die modernisiert gehört?

Nutzen Sie unser Angebot der kostenlosen Analyse im Rahmen des TechTalk Relax Application Management Service.

Tricentis übernimmt SpecFlow

Vor 10 Jahren wurde uns klar, dass Unternehmen durch die Digitalisierung immer schneller und kontinuierlicher auf Kundenbedürfnisse reagieren müssen. Wettbewerbsfähig bleibt nur, wer agiler in der Entwicklung von neuen Produkten und Dienstleistungen wird.

Behavior Driven Development (BDD) bietet eine Antwort auf die daraus resultierenden Herausforderungen in der Softwareentwicklung.

Daher haben wir 2009 das Softwareentwicklungswerkzeug “SpecFlow” als Open Source Produkt veröffentlicht, das sich seither zum de-facto Standard im .NET Bereich für BDD entwickelt hat.

SpecFlow wurde über 10 Millionen mal heruntergeladen, und hat aktuell über 30 Tausend aktive Nutzer im Monat. Das sind die beeindruckenden Zahlen nach über 10 Jahren Entwicklung dieser Idee.

Wir freuen uns mit Tricentis einen Partner gefunden zu haben, der das Potential von SpecFlow erkannt hat und es in die nächste Wachstumsphase führen wird.

Tricentis übernimmt SpecFlow sowie das 10-köpfige Team von TechTalk, das daran gearbeitet hat. Wir werden weiterhin eng mit Tricentis und der SpecFlow-Community zusammenarbeiten.

TechTalk bleibt eine eigenständige Beratungs- und Dienstleistungsfirma mit über 80 Mitarbeitern in den Bereichen agile Softwareentwicklung und eGovernment.

SpecFlow+, das kommerzielle Angebot von SpecFlow, und SpecMap, eine Azure DevOps-Erweiterung für User Story Mapping, werden ab sofort kostenlos angeboten.

Lesen Sie die Pressemitteilung von Tricentis (englisch) oder den Bericht auf TrendingTopics.

Rückfragen & Kontakt

Christian Hassa

Managing Partner TechTalk
christian.hassa@techtalk.at
Vernetzen auf LinkedIn

PS: Das nächste Training zu SpecFlow bietet TechTalk im Mai an, die Anmeldung ist seit kurzem möglich.

SpecFlow 3 – unterstützt .NET Core

Für alle die SpecFlow noch nicht kennen: Unser Ziel ist es, die Kommunikationslücke zwischen Domänenexperten und Entwicklern durch verbindliche, lesbare Verhaltensspezifikationen mit der zugrunde liegenden Implementierung zu überbrücken.

SpecFlow ist ein Open Soure Projekt und wird auch von Entwicklern bei TechTalk vorangetrieben. Mit SpecFlow+ bieten wir eine Reihe von Erweiterungen die es ermöglicht SpecFlow am optimalsten zu nützen. Jetzt ist es endlich soweit die öffentliche Preview Version von SpecFlow 3 ist verfügbar:

Support for .NET Core is now available.

Für die Version 3 ist eine Aktualisierung der Visual Studio-Erweiterung für SpecFlow notwendig. Da die Erweiterung normalerweise automatisch aktualisiert wird, sobald eine neue Version veröffentlicht wird, kann diese Änderung alle Benutzer betreffen, und nicht nur die, die auf Version 3 upgraden! Die neue Erweiterung ist nicht mit allen alten Versionen kompatibel. Bitte lesen Sie die folgenden Informationen im Detail. Sie können die automatische Aktualisierung der Erweiterung auch deaktivieren, falls nötig.

Die größte Neuerung von diesem Release ist die Unterstützung für .NET Core! Wenn Sie die neue Version ausprobieren möchten, lesen Sie bitte die folgenden Informationen sorgfältig durch. Bevor Sie die öffentliche Vorschau verwenden können, sind einige Schritte erforderlich.

Devs bei TechTalk: Andreas Willich im Interview

In unserer Interview Serie “Get to know TechTalk” stellen wir TechTalk Mitarbeiter vor. Diesmal interviewen wir unseren langjährigen Senior Developer Andreas Willich. Er gibt uns einen Einblick wie Developer bei TechTalk arbeiten, sich organisieren und an welchen Projekten er gerade arbeitet.

Senior Developer Andreas Willich im Interview.

Was fasziniert Dich an der Softwareentwicklung?

Am Anfang war es die Möglichkeit ohne Werkzeuge und Materialien Dinge zu bauen. Wie basteln halt. Mittlerweile hat sich das geändert. Jetzt ist es mehr die Möglichkeit, Probleme mit Software zu lösen und Menschen das Leben dadurch zu erleichtern.

Mit welchen Methoden löst du Herausforderungen im Entwicklungsprozess und mit welchen Methoden arbeitest du bei TechTalk?

Bei der Umsetzung von Projekten arbeiten wir generell mit einem agilen Vorgehen. Ob das jetzt Scrum oder Kanban ist entscheidet das Projektteam selbst. Zusätzlich setzen wir Methoden wie Impact Mapping, Story Mapping und Spezification by Example ein, um mit dem Kunden die Anforderungen auszuarbeiten.

Beim Programmieren am Projekt versuche ich so viel und oft wie möglich TDD (Test Driven Development) einzusetzen. Ich wechsle also das Schreiben von automatisierten Tests und Implementierung immer ab bis alle Anforderungen umgesetzt sind.

Hast du ein Herzensprojekt bzw. ein Projekt, welches für dich persönlich ein großer Meilenstein war? 

Das Projekt, das mir am meisten am Herzen liegt, ist mein aktuelles. Ich arbeite mit 2 Kollegen an SpecFlow und SpecFlow+. SpecFlow ist ein Open-Source- Projekt, welches von TechTalk im Jahr 2009 gestartet wurde. Es ist ein BDD- Tool, das hilft aus lesbaren und verständlichen Spezifikationen automatisierte Tests zu erstellen. Seit Anfang 2017 wurde SpecFlow fast 3 Millionen mal heruntergeladen und mit SpecFlow+ haben wir Kunden in der ganzen Welt.

Kannst du uns einen kurzen Einblick in deinen täglichen Arbeitstag geben?

Ich komme zwischen 8:30 und 9:00 ins Büro und checke als erstes meine Mails. Darunter sind meistens Mails von SpecFlow+ Kunden mit Support- Anfragen. Danach schaue ich, ob es neue Issues oder Forum- Beiträge von unseren Usern gibt. Meistens sind welche da und ich beantworte diese.

Danach setze ich meine Arbeit an SpecFlow & SpecFlow+ fort. Kurz vorm Mittagessen haben wir unsere Daily Standups. Dabei bespricht das ganze Team, was es am Vortag gemacht hat, was es als nächstes machen wird und ob es irgendwo gerade blockiert.

Nachdem Mittagessen setze ich meine Arbeit wieder fort bis ca. 17:00.

Was macht deiner Meinung nach einen guten Senior Developer aus?

Ein wichtiger Teil in unserer Arbeit ist das andauernde Lernen von neuen Techniken und Technologien. Einen guten Senior Developer zeichnet meiner Meinung nach aus, dass er sich andauernd fortbildet, um dieses Wissen wiederum an seine KollegInnen weiterzugeben.

Was machst du, wenn du nicht gerade an Projekten arbeitest?

Das Tolle an der TechTalk ist, dass wenn dich etwas interessiert oder man etwas machen möchte, das irgendwie etwas mit der Firma zu tun hat, man die Möglichkeit hat, das zu verfolgen. Ich z.B. engagiere mich in der Community und organisiere unterschiedliche Meetups (.NET Community Austria, F# Meetup Vienna, Vienna BDD Meetup). TechTalk unterstützt mich dabei, dass ich die Organisation während der Arbeit machen kann und es werden auch Räumlichkeiten, Getränke und Essen zur Verfügung gestellt.

 

Welche Lesetipps hast du, Blogs oder Bücher?

Blogs:

Bücher:

C# 7.0 in a Nutshell von Joseph Albahari & Ben Albahari erklärt alle C# Features, sehr gut wenn man eine Detailfrage nachschauen will oder sein C# auffrischen will.

Möchtest auch du Teil der TT Familie werden?

Dann sieh dir hier die aktuellen Jobausschreibungen an:

Neuer Videoblog: TechTalk Stories

tt-stories-logo

Mit diesem Beitrag launchen wir ein neues Contentformat: TechTalk Stories.

TechTalk Stories ist ein zweiminütiger Videoblog und wird in Zukunft einmal monatlich erscheinen.

Inhaltlich ist ein buntes Programm geplant:

  • Videos über Zusammenarbeit im Team
  • Projektmanagement
  • UX
  • Entwicklung & Testing
  • Marketing & HR
  • Ideen und Konzepte
  • Expertenmeinungen
  • Event-Reports
  • Trainingstipps und Speaker Interviews

Zu Wort kommen Mitarbeiter von TechTalk, Speaker unserer Trainings, sowie Kunden und Partner.

Die erste Ausgabe von TechTalk Stories widmet sich SpecFlow. SpecFlow erlaubt einem .NET Entwicklungsteam lesbare Business-Spezifikationen zu definieren, verwalten und automatische Akzeptanztests auszuführen.

Es ist ein von TechTalk initiiertes OpenSource Project, welches auf Gherkin basiert und ist Teil des Cucumber Ökosystems.

Sophie Keiblinger, Test Engineer bei TechTalk, wird anhand eines kurzen Beispiels vorstellen wie Traits in SpecFlow unterschiedlich verwendet werden können und wie dies die Arbeitsweise in ihrem Team beeinflusst hat.

Abonniert werden kann unser Videoblog auf mehreren Wegen: RSS, Twitter, Facebook oder via Developer Newsletter.