whitebox testing-phpughh
DESCRIPTION
Slides meines vortrages Whitebox Testing für PHP Entwickler bei der PHP Usergroup Hamburg - 8 April 2014 Test Examples Used https://github.com/WebconsultsEU/WhiteBoxTestingExamplesTRANSCRIPT
![Page 1: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/1.jpg)
Whitebox TestingSystematische Testmethoden für PHP Entwickler
![Page 2: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/2.jpg)
John Behrens
• John Behrens
• IT Berater – Entwickler - Trainer
• PHP seit 2000
• Twitter: @WebconsultsEU
• Mail: [email protected]
• Xing, Google+, Linkedin: John Behrens
![Page 3: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/3.jpg)
Whitebox und Blackbox
![Page 4: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/4.jpg)
Entwicklertests = Whitebox Tests ?
• Code und Interne Strukturen Bekannt
• Testen am Code
![Page 5: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/5.jpg)
Whitebox Testing Tools
PHP Checkstyle
Code Reviews
![Page 6: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/6.jpg)
Was bringt mir Whitebox Testing ?
• Systematisches vorgehen beim Debugging
• Bessere Unit Tests, auf Tests Optimierter Code
• Genauer und Systematischer Testen
• Schnelleres finden von Bugs
• Systematisches vorgehen bei Code Reviews
![Page 7: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/7.jpg)
Whitebox Testing Methoden
• Kontrollflussbasiert
• Datenflussbasiert
• Security Orientiert
• Statische Methoden
• Dynamische Methoden
![Page 8: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/8.jpg)
Kontrollflusbasierte Testarten
• Anweisungsüberdeckungstest(Statement Coverage)
• Zweigüberdeckungstest(Branch Coverage)
• Bedingungs / Entscheidungsüberdeckungstest(decision condition coverage)
• Bedingungs / Überdeckungstest(Condition Coverage Test)
• Pfadüberdeckungstest(Path Coverage Test)
![Page 9: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/9.jpg)
Anweisungstest / Anweisungsüberbrückung
• Eine Anweisung ist eine Entscheidung Loop, If, case etc
• Engl. Statement Coverage
• Anweisungsüberdeckung = Anzahl durchlaufene Anweisungen / Gesamtzahl Anweisungen * 100%
![Page 10: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/10.jpg)
Zweigtest / Zweigüberdeckung
• Ein Zweig ist ein Code Teil der bedingt durchlaufen wird
• Innerhalb eines If Statements, Loop, Case
• Zweigüberdeckung = Anzahl durchlaufene Zweige / Gesamtzahl Zweige * 100%
![Page 11: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/11.jpg)
Pfadtest / Pfadüberdeckung
• Abweichend vom Zweigtest wird hier der Test in allen oder vielen möglichen Pfaden durchlaufen.
![Page 12: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/12.jpg)
Zyklomatische Komplexität
• Anzahl der Entscheidungen im Code
• Berechnet sich durch Anzahl der Binärverzweigungen (If Verzweigungen mit 2 Zweigen) + Anzahl der Kontrollflussgraphen
• Anzahl der Ecken und Kanten im Kontrollflussgraphen
![Page 13: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/13.jpg)
Datenflussbasiert
• undeklariert (u): Variable hat weder einen Wert noch einen Speicherplatz.
• deklariert (d): Variable hat keinen definierten Wert, ihr wurde aber schon Speicher zugewiesen.
• initialisiert (i): Zuweisung eines Wertes an eine Variable.
• referenziert (r): Lesen/Verwenden des Variablen-Wertes.
![Page 14: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/14.jpg)
Datenfluss Anomalien
• DU Anomalie
• UR Anomalie
• DD Anomalie
![Page 15: Whitebox testing-phpughh](https://reader035.vdocument.in/reader035/viewer/2022081413/54682bf3af7959a2358b528d/html5/thumbnails/15.jpg)
Code Review Arten
• Kollegiale Code Reviews
• Peer Review
• Formelles Review
• QA / Security Review
• Technisches Review