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