Download - Whitebox testing-phpughh
Whitebox TestingSystematische Testmethoden für PHP Entwickler
John Behrens
• John Behrens
• IT Berater – Entwickler - Trainer
• PHP seit 2000
• Twitter: @WebconsultsEU
• Mail: [email protected]
• Xing, Google+, Linkedin: John Behrens
Whitebox und Blackbox
Entwicklertests = Whitebox Tests ?
• Code und Interne Strukturen Bekannt
• Testen am Code
Whitebox Testing Tools
PHP Checkstyle
Code Reviews
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
Whitebox Testing Methoden
• Kontrollflussbasiert
• Datenflussbasiert
• Security Orientiert
• Statische Methoden
• Dynamische Methoden
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)
Anweisungstest / Anweisungsüberbrückung
• Eine Anweisung ist eine Entscheidung Loop, If, case etc
• Engl. Statement Coverage
• Anweisungsüberdeckung = Anzahl durchlaufene Anweisungen / Gesamtzahl Anweisungen * 100%
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%
Pfadtest / Pfadüberdeckung
• Abweichend vom Zweigtest wird hier der Test in allen oder vielen möglichen Pfaden durchlaufen.
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
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.
Datenfluss Anomalien
• DU Anomalie
• UR Anomalie
• DD Anomalie
Code Review Arten
• Kollegiale Code Reviews
• Peer Review
• Formelles Review
• QA / Security Review
• Technisches Review