WIR SIND MAL WIEDER DIE ALLERLETZTEN!

ANGEMESSEN

S
 T
 A
 T
 T

AUFWENDIG

TESTEN KARIN

VOSSEBERG

H O C H S C H U L E B R E M E R H AV E N

ANDREAS

SPILLNER

HOCHSCHULE BREMEN

»JEDER IST VERANTWORTLICH FÜR DAS ERGEBNIS UND DAMIT FÜR D I E Q U A L I TÄT. «

https://www.asqf.de/totgesagte-leben-laengertesten-nach-mit-dem-agilen-manifest/

Agil - Alle machen Alles! GLEICH GUT?

Entwickler »IN AGILEN TEAMS KANN DER ENTWICKLER T E S TA U F G A B E N ÜBERNEHMEN …

Tester

Entwickler

Tester

»IN AGILEN TEAMS KANN DER ENTWICKLER T E S TA U F G A B E N ÜBERNEHMEN …

… UND DER TESTER ENTWICKLUNGSAUFGABEN – JE NACH MAßGABE UND SKILL-ENTWICKLUNG.«

https://www.asqf.de/totgesagte-lebenlaenger-testen-nach-mit-dem-agilen-manifest/

Entwickler

Tester Sicht auf das Testen

✴ einfache Testausführung und 
 -wiederholung ✴ welches Framework ✴ Mocking ✴ …

✴ passende Auswahl und Kombination der Testverfahren ✴ welche Testfälle ✴ Endekriterien ✴ …

➡ die Testfälle richtig ausführen

➡ die richtigen Testfälle ausführen

Entwickler

Tester Sicht auf das Testen

n e hr

ü f s

u a ✴ passende Auswahl g i t h c und Kombination i r e l l ä der Testverfahren

✴ einfache Testausführung und 
 -wiederholung f t s e ✴ welches Framework n T ✴ welche Testfälle e g i t ✴ Mocking ✴ Endekriterien h ic r ✴ … ✴ … ie

d

➡ ➡ die Testfälle richtig ausführen

➡ die richtigen Testfälle ausführen

Entwickler

Tester Testen, womit?

✴ Intuition ✴ Test-Driven Development ✴ Zufallstest ✴ Exploratives Testen ✴ …

✴ ✴ ✴ ✴ ✴ ✴

Äquivalenzklassen Grenzwertanalyse Klassifikationsbaum Entscheidungstabellen Pairwise Testing …

Entwickler

Tester Gegenseitige Sicht

»Using a testing technique, you would seek to exhaustively analyze the specification in question (and possibly the code) and devise tests that exhaustively cover the behavior.« Jeff Langr: Modern C++ Programming with Test-Driven Development. O’Reilly 2013

Entwickler

Tester Gegenseitige Sicht

»Mein Hauptkritikpunkt liegt hier wieder in der Entmündigung von Testern durch vorgegebene Testskripte in Form von sog. strukturierter Testfallanalyse und Testplänen, die letzten Endes nur die Freiheit des erwachsenen Testers einschränken.« Warum wir Deutschen im agilen Testen versagen,
 5. Dezember 2012, Markus Gärtner
 http://www.mgaertne.de/2012/12/warum-wir-deutschenim-agilen-testen-versagen/

Entwickler

Tester Gegenseitige Sicht

Testendekriterium: »Diese drei (TDD-Test)Schritte werden so lange wiederholt, bis die bekannten Fehler bereinigt sind, der Code die gewünschte Funktionalität liefert und dem Entwickler keine sinnvollen weiteren Tests mehr einfallen, welche vielleicht noch scheitern könnten.« https://de.wikipedia.org/wiki/Testgetriebene_Entwicklung#Testgetriebene_Entwicklung_mit_Unit-Tests

Entwickler

Tester Gegenseitige Sicht »Warum hast du mir diesen Bug zugewiesen? – Ich habe dieses Feature nicht entwickelt. 
 Wieso wurde dieser Bug dokumentiert? – Das hätten wir doch anders lösen können. « Die Fehlerdokumentation: Eine Geschichte voller Missverständnisse
 von Marcus Fleischmann — 2016/04/12
 http://www.anecon.com/blog/diefehlerdokumentation-eine-geschichtevoller-missverstaendnisse/

Entwickler

Tester Gegenseitige Sicht »Kannst du dieses Ticket nicht einfach schließen? – Das wird ohnehin nie jemand bearbeiten.
 Ich habe keine Lust mehr mit dir zu arbeiten, du meldest immer so viele Fehler ein.« Die Fehlerdokumentation: Eine Geschichte voller Missverständnisse
 von Marcus Fleischmann — 2016/04/12
 http://www.anecon.com/blog/diefehlerdokumentation-eine-geschichtevoller-missverstaendnisse/

Entwickler

Tester

Wie schätzen Sie die Intensität des Testen ein? 73,8 %
 zu gering 25 %
 genau richtig
 1,2 %
 übertrieben

42,4 %
 zu gering 55,3 %
 genau richtig
 2,3 %
 übertrieben

K. Vosseberg, A. Spillner, M.Winter: Umfrage 2016 - Softwaretest in Praxis und Forschung, dpunkt.Verlag, 2017

Entwickler

Tester

Entwickler

Tester

Entwickler

Tester

Was hat Einfluss auf das (Unit-)Testen? ✴ »Beschaffenheit« der Schnittstelle ̣ Design by Contract ✴ »Beschaffenheit« des Codes ̣ Clean Code ✴ …

DESIGN BY CONTRACT ✴ Ziel: Reibungsloses Zusammenspiel einzelner Programmteile (Klassen, Methoden, Funktionen)
 ✴ Zu jeder Schnittstelle existiert ein einzuhaltender Vertrag ̣ Vorbedingungen (pre-conditions)
 Zusicherungen, die vom Aufrufer einzuhalten sind ̣ Nachbedingungen (post-conditions)
 Zusicherungen, die der Aufgerufene garantiert, und ̣ Invarianten (invariants)
 Bedingungen, die durch den Aufruf unverändert bleiben

D E S I G N B Y C O N T R A C T TDD LEGT DIE SIGNATUR 
 DER SCHNITTSTELLE FEST ✴ Ziel: Reibungsloses Zusammenspiel einzelner Programmteile (Klassen, Methoden, Funktionen)
 ✴ Zu jeder Schnittstelle existiert ein einzuhaltender Vertrag ̣ Vorbedingungen (pre-conditions)
 Zusicherungen, die vom Aufrufer einzuhalten sind ̣ Nachbedingungen (post-conditions)
 Zusicherungen, die der Aufgerufene garantiert, und ̣ Invarianten (invariants)
 Bedingungen, die durch den Aufruf unverändert bleiben

DESIGN BY CONTRACT ✴ Auswirkungen auf den Test ✴ Durch die festgelegten Zuständigkeiten lässt sich der Testaufwand angemessen gestalten ̣ Beispiel: Wenn als Vorbedingung festgelegt ist, dass nur positive Zahlen übergeben werden, dann kann der Test mit negativen Zahlen, Sonderzeichen usw. entfallen 
 – jedenfalls an dieser Schnittstelle ̣ Der Aufrufer muss sicherstellen, dass nur positive Zahlen weitergegeben werden 
 - dies muss dann beim Aufrufer getestet werden

DESIGN BY CONTRACT

Agile Quality Maturity Model der DB Vertrieb

Andreas Kühl, telexiom AG:
 How to ... Get a Common Understanding for Quality in a Scaled Agile World. Das Agile Quality Maturity Modell der DB Vertrieb, QS_Tag, 2017, 20.10.2017

TA X I F A H R T P R E I S B E R E C H N U N G

BEIS

PIEL

✴ Der Grundpreis beträgt 3,50 € ✴ Der Fahrpreis pro Kilometer 2,10 € ✴ Bei einer Strecke von mehr als 10 Kilometern 
 wird ein Rabatt von 5% gewährt ✴ Bei einer Strecke von mehr als 50 Kilometern 
 wird ein Rabatt von 10% gewährt (nicht zusätzlich zum 5%-Rabatt) ✴ Findet die Fahrt zwischen 22:00 und 6:00 Uhr statt, 
 gibt es einen Nachtzuschlag in Höhe von 20%. ✴ Gepäckstücke kosten unabhängig von der Anzahl 3 € zusätzlich ✴ Eine Fahrt ohne Gepäck tagsüber von beispielsweise genau 
 10 km kostet damit 3,50 € + 10 · 2,10 € = 24,50 € Andreas Spillner, Ulrich Breymann: Lean Testing für C++-Programmierer, dpunkt.verlag, Heidelberg, 2016

DESIGN BY CONTRACT

BEIS int fahrpreis(int grundpreisInCent,
 int preisInCentProKm,
 int streckeInKm,
 bool nachtfahrt,
 bool gepaeckVorhanden) …
 
 ✴ pre-conditions


PIEL

ÄQUIVALENZKLASSEN FÜR DIE EINGABEN

grundpreisInCent > 0 AND grundpreisInCent 0 AND preisInCentProKm 4% => 7%

Min_Int Max_Int

=> Fehlermeldung
 => Fehlermeldung

PA S S E N D E K O M B I N AT I O N V O N T E S T E N T W U R F S V E R FA H R E N ✴ es gibt nicht 
 DAS Testentwurfsverfahren ✴ es ist eine 
 Kombination von 
 Testentwurfsverfahren 
 heranzuziehen ✴ »Beschaffenheit« des 
 Testobjekts führt zu den 
 »passenden« Testentwurfs-
 verfahren Andreas Spillner, Ulrich Breymann: Lean Testing für C++-Programmierer, dpunkt.verlag, Heidelberg, 2016

DESIGN BY CONTRACT & CLEAN CODE & T E S T E N T W U R F S V E R FA H R E N B count < 50 => 0%
 pre-condition: 50 = 0 AND cout 1000 => 7% 0