Software Quality Lab Handout
© Software Quality Lab Seite 1 www.software-quality-lab.com
SWQL Präsentationsvorlage V11.0
© Software Quality Lab www.software-quality-lab.com
Schließen der Lücke zwischen Fachtester und Testautomatisierer
Johannes BergsmannBerater, Trainer, Eigentümer
Behaviour Driven Testing
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 2 -
LEISTUNGSPORTFOLIOÜber Software Quality Lab
▪ Management Consulting
▪ Prozesse und Vorgehensmodelle
▪ Teststrategie und -konzeption
▪ Requirements und Ausschreibungen
▪ Architektur und Modellierung
▪ Code Analyse und Metriken
CONSULTING
▪ Requirements und Usability
▪ Architektur und Modellierung
▪ Testen und Automatisieren
▪ Agile Softwareentwicklung
▪ Projektabwicklung und
Vorgehensmodelle
▪ Lehrgänge und Zertifizierungen
ACADEMY
▪ TestCenter
▪ Requirements Engineering
▪ Testmanagement und -spezifikation
▪ Softwareverifikation und -validierung
▪ Testautomatisierung und -reporting
▪ Reviews und Code Analyse
OPERATIONAL SERVICES & TESTCENTER
▪ Tool Evaluation Center
▪ Tool-Einführung und Pilotprojekte
▪ Tool-Schnittstellen und –Einbindung
▪ Managed Services und Lizenzen
▪ Softwareprozessautomatisierung
▪ Test Automation Frameworks
▪ Tool-Studien und Tool-Expertisen
TOOL EXPERTISE
Software Quality Lab Handout
© Software Quality Lab Seite 2 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 3 -
Auszug aus der KundenlisteÜber Software Quality Lab
Dienstleistungen & Handel
Medizin & Pharma
Österreiches
Rotes Kreuz
Finanz & Versicherung
Industrie & EngineeringEnergie & Versorgung
Software & IT
Elektronik & Automation
Mobilität & Kommunikation
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 4 -
InhaltPräsentationsvorlage
▪ Motivation
▪ TDD – Test Driven Development
▪ BDD – Behaviour Driven Development
▪ Beispielumsetzung in Polarion
Software Quality Lab Handout
© Software Quality Lab Seite 3 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 5 -
Test as an early indicator of specification & design
I don't care how good you think your design is. …
If I can't walk in and write a test for an arbitrary method of yours in five minutesit's not as good as you think it is, …
… and whether you know it or not, you're paying a price for it.
Michael Feathers
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 6 -
Test Driven Development (TDD)
Software Quality Lab Handout
© Software Quality Lab Seite 4 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 7 -
▪ VOR Programmierung Tests erstellt
▪ Zu erstellende Software wird durch Testfälle beschrieben (= detaillierte Requirements)
▪ Ziele▪ von Anfang an testbaren und wartbaren Code erstellen
▪ Testabdeckung erhöhen
▪ Auf mehreren Ebenen einsetzbar▪ Testen im Kleinen (Unit Tests ) und
▪ Testen im Großen (Systemtests, Akzeptanztests)
TDD Eigenschaften
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 8 -
Testgetriebene Softwareentwicklung
Programm verbessern3
Funktionsblock
programmieren2
Unit-Test schreiben1
Software Quality Lab Handout
© Software Quality Lab Seite 5 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 9 -
TDD Bewertung
Vorteile
Qualität der Entwicklung wird verbessert
Testabdeckung wird erhöht
Besser Basis für Sprint-Abnahme (Test = REQ)
Effizienz im Sprint wird erhöht
„lebende“ Testspezifikation
Herausforderungen
TDD alleine macht noch keine guten REQs und Code
Manches kann nicht vorab als Test automatisiert werden (Usablity, Systemkontext, Prozessmodellierung, Architektur, etc.)
Sehr hohe Disziplin erforderlich
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 10 -
(eine Variante von TDD)
Behavior Driven Development (BDD)
Software Quality Lab Handout
© Software Quality Lab Seite 6 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 11 -
User-Stories – Funktionale Spezifikation
Als <Benutzerrolle/Systemrolle> will ich <Aufgabe/ Story> [, so dass <Grund für das Ziel / Nutzen>]
✓ Einfach lesbar
✓ Einfach verwaltbar
aber:
▪ Es fehlt das Verhalten!
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 12 -
Behaviour Driven Development (BDD)
▪ 2003 von Dan North als Antwort auf Test-Driven Development(Unit-Tests sind für Fachbereich schlecht lesbar)
▪ erstellt User-Stories und erfasst dazu auch das Verhalten (Behaviour) mit Vor-&Nachbedingungen
▪ Beschreibung erfolgt in „natürlicher Sprache“ (Gherkin):
Nicht-Programmierer schreiben „Code“ vor der eigentlichen Entwicklung
User-Story
Szenario / Verhalten
Vorbedingung
Nachbedingung / Ergebnis
Aktion
„Step“
Software Quality Lab Handout
© Software Quality Lab Seite 7 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 13 -
Behaviour Driven Development (BDD)
Beispiel Cucumber (Tool für BDD)
1: Describe behaviour
in plain text (GHERKIN)
Quelle: http://www.cukes.info/
2: Write a step definition
in Ruby
3: Run and watch it fail
(Class Calculator missing)
4. Write code to make
the step pass
6. Repeat 2-5 until green
like a cuke5. Run again and see
the step pass
7. Repeat 1-6 until the money runs out ;-)
„Steps“ können
parametriert werden
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 14 -
Behaviour Driven Development (BDD)
▪ Automatisierte Regressionstests geben schnelles Feedback „lebende“ Spezifikation und Dokumentation
▪ BDD: interessanter Ansatz, der versucht einebessere Kopplung zwischen den Beteiligten (Fachexperten und Entwickler) zu erreichen.
▪ Probleme:▪ Fachtester arbeiten typischerweise mit anderen Tools (Testmanagement-Tools)
▪ Keine systemunterstützte direkte Kopplung zwischen Testspezifikation und Automatisierungscode
▪ Textbasierte Code-Aufrufe (Steps) – jeder Tippfehler (egal ob beim Tester oder beim Automatisierer) bricht den Zusammenhang und damit die Automatisierung
▪ Keine automatische Rückkopplung
▪ eignet sich ohne Ergänzung primär für entwicklungsnahe Tests (Unit-/Komponenten-Ebene)
Software Quality Lab Handout
© Software Quality Lab Seite 8 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 15 -
„Closing the Gap in BDD“
Beispielumsetzung BDD-Plugin für Polarion
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 16 -
Neues Spezifikationselement
Software Quality Lab Handout
© Software Quality Lab Seite 9 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 17 -
Create a BD Test Case
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 18 -
BD Test Case workitem – design BD Test Case
Software Quality Lab Handout
© Software Quality Lab Seite 10 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 19 -
BD Test Case - Designer
Auswahl von
Given, When,
Then aus
vordefinierten
Listen
Definiertes
Szenario
Parameter für
das Szenario
Definition
neuer Steps
für Given,
When, Then
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 20 -
Execution of the testcases – create a new test run
Software Quality Lab Handout
© Software Quality Lab Seite 11 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 21 -
Add the BD Test Cases to the test run
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 22 -
Start of the test run
Software Quality Lab Handout
© Software Quality Lab Seite 12 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 23 -
Result of the test run
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 24 -
Zusammenfassung
▪ TDD ist ein guter Ansatz um die Qualität in der Entwicklung zu verbessern
▪ TDD erfordert jedoch sehr hohe Disziplin!
▪ BDD ist für die Zusammenarbeit zwischen Fachtester und TA sehr vielversprechend.
▪ Tester-Sicht wird nahtlos gekoppelt mit Testautomatisierung.
Effizienzsteigerung im Test, TA und SWE
Software Quality Lab Handout
© Software Quality Lab Seite 13 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 25 -
Fragen / Diskussion zum ersten Teil?
SWQL Präsentationsvorlage V11.0
© Software Quality Lab www.software-quality-lab.com
Johannes Bergsmann
Berater, Trainer, Eigentümer
Automatische Legacy-Code Absicherung
Software Quality Lab Handout
© Software Quality Lab Seite 14 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 27 -
Inhalt
▪ Motivation
▪ UnitTest-Erstellung Grobkonzept
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 28 -
Motivation
Software Quality Lab Handout
© Software Quality Lab Seite 15 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 29 -
Unit-Test-Code Erstellung (halb)manuell
Entwickler oder Tester
Compiler, Build
Lauffähige SW /
Unit-Tests
CodeUnit-Test
CodeEntwickleroder Tester
Überprüfung
Verifizierung
Entwickler
tw. autom. Erstellung
von Unit-Test-Frames
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 30 -
▪ Unit-Tests decken oft nur einen Bruchteil des Code-Verhaltens ab
▪ Entwickler sind tw. nicht motiviert oder haben zu wenig Zeit, gute Unit-Tests zu schreiben
▪ Es gibt nur einen/wenige Unit-Tests je Funktion, damit im Continuous-Integration Tool „grün“ angezeigt wird und alle zufrieden sind
▪ Unit-Tests werden nicht gewartet und blockieren dann die Entwicklung
Legacy-Code und Unit-Test - Probleme
Software Quality Lab Handout
© Software Quality Lab Seite 16 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 31 -
▪ Tests werden meist basierend auf Interfaces der Methoden oder „zufällig“ generiert und nicht aufgrund der inneren Struktur es fehlen Testfälle, die Semantik wird nicht ausreichend berücksichtigt
▪ Oft Zwischencode, der nicht mit den üblichen Tools weiter verarbeitbar ist
▪ Generierte Unit-Tests oft schwer lesbar
▪ Für spezielle Anwendungen sehr teuer (z.B. Embedded-Test-Tools)
▪ Generierte Abdeckung oft unzureichend (z.B. keine Mehrfachbedingungsüberdeckung)
▪ Keine offenen Schnittstellen übliche Versionsverwaltung und CI-Tools nicht oder nur schwer verwendbar
Schwächen bestehender Frameworks
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 32 -
Unit-Tests Erstellung
Software Quality Lab Handout
© Software Quality Lab Seite 17 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 33 -
Unit Test Erstellung
▪ Welche Unit-Tests werden typischerweise erstellt?▪ Unit-Test, der einmal links geht und
▪ Unit-Test, der einmal rechts geht
100% Code-Abdeckung ist mit 2 Tests erreicht und im CI-System ist alles „grün“
▪ Welche Tests sollten erstellt werden,um dies funktional voll zu testen?▪ Jede (Einzel-)Bedingung muss für sich
getestet werden (4 Normal-Testfälle)
▪ Grenzwerte (oben/unten) der beiden Bedingungen (weitere 4 Testfälle)
▪ Fehlertests außerhalb der Grenzen oben und unten sowie innerhalb der Grenzen mit Fehlerwerten (weitere 6 Testfälle)
mind. 14 Unit-Tests erforderlich für gute funktionale Testabdeckung!
A > 10
& B < 5
T1 T2 T3 T4
A > 10 1 1 0 0
B < 5 1 0 1 0
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 34 -
Unit-Test CodeUnit-Test Code
Test-Code-Generator
▪ 20-30% Entwicklungsaufwand fließt in Unit-Test Erstellung
▪ Ziel: ¾ davon einsparen und Entwicklerproduktivität erhöhen
(Legacy)
CodeEntwickler
Parser
Generator
Zwischen-
Modell
Jeder Code, der
getestet und für gut
befunden wurde
Syntax und
Semantik des
Codes.
lesbar z.B. als
XML-Datei.
fertiger Unit-Test-
Code sichert den
Legacy-Code ab
Code
Änderung
Code
Änderung
Einbindung in
CI-System
ist möglich
Software Quality Lab Handout
© Software Quality Lab Seite 18 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 35 -
Komponenten-SchemaSoftware Quality Lab Code Absicherung
Code-Parser
Code(freigegeben)
(C, C++, C#, Java)
TestCode-Generator
UnitTest-Code
(im Format CUnit, CPPUnit / CppTest, Nunit,
JUnit)
Modell
Syntaxbaum, Semantik, Ein-Ausgabe-
Parameter, Schleifen/Verzweigungen, etc.
CI
(z.B. Jenkins, Gitlab CI, Bamboo, etc.)
Code-VerwaltungTestcode-
Verwaltung
(z.B. GIT, SVN, etc.)
Statische Code-Analyse
(z.B. Lint, Checkstyle, Findbugs, Cppcheck, Splint, etc.)
Quality- & Test-Reports
Entwicklungs-framework,
Compile / Build, Unit-Test Ausführung
Dynamische Analyse
Finden der Soll-Werte
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 36 -
Unit-Test Generierung aus ModellSoftware Quality Lab Code Absicherung
Überprüfung
Verifizierung /
Validierung
Entwickler oder Tester
Unit-Test
CodeGenerator
Compiler, Build
Lauffähige SW /
Unit-Tests
lesbarer fertiger
Unit-Test-Code
Kunde / TesterModellierer
Modell-
Parser
Zwischen-
Modell
(Test-)
Modell
Code
Entwickler
Code-
Parser
B
A
Reine Legacy-Code
Absicherung
TDD/MBT
Ansatz
Syntax und Semantik des
Modells bzw. Codes.
Lesbar z.B. als XML-Datei.
Soll-Werte für die Tests
aus dem Test-Modell
Software Quality Lab Handout
© Software Quality Lab Seite 19 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 37 -
Projektstatus und -planung
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 38 -
Software Quality Lab Code Absicherung
▪ Einfache automatische Absicherung von Legacy-Code
▪ Generieren von Standard-Unittest-Code
▪ Einsparung eines großen Teils der Unit-Test-Codierungs-Aufwände
▪ Offen und gute Schnittstellen für eigene Erweiterungen
▪ Einfache Integration in bestehende Unit-Test Frameworks
▪ Verwendung bestehender Code-Verwaltung und CI-Systeme ist möglich
Vorteile
Software Quality Lab Handout
© Software Quality Lab Seite 20 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 39 -
Zusammenfassung
▪ (Legacy-)Code ist meist zu wenig durch Unit-Tests abgesichert!
▪ Bestehende Tools und Ansätze noch nicht „rund“
▪ Innovations-Projekt zur autom. Test-Code Generierung wird mit TU Wien durchgeführt
▪ Pilotkunden / Partner sind noch willkommen
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 40 -
Fragen / Diskussion
Software Quality Lab Handout
© Software Quality Lab Seite 21 www.software-quality-lab.com
SWQL Präsentationsvorlage 16:9 V1.0
© Software Quality Lab www.software-quality-lab.com - 41 -
Software Quality Lab GmbH
Gewerbepark Urfahr 6A - 4040 Linz
Johannes Bergsmann
+43 676 840072-420
Kontakt für Interessenten
SWQL Präsentationsvorlage V11.0
© Software Quality Lab www.software-quality-lab.com
Academy | Consulting | Operational Services | Tool Expertise
INNOVATION MEETS QUALITY
Software Quality Lab