Whitebox testing-phpughh

16
Whitebox Testing Systematische Testmethoden für PHP Entwickler

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/WhiteBoxTestingExamples

Transcript of Whitebox testing-phpughh

Page 1: Whitebox testing-phpughh

Whitebox TestingSystematische Testmethoden für PHP Entwickler

Page 2: Whitebox testing-phpughh

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

Whitebox und Blackbox

Page 4: Whitebox testing-phpughh

Entwicklertests = Whitebox Tests ?

• Code und Interne Strukturen Bekannt

• Testen am Code

Page 5: Whitebox testing-phpughh

Whitebox Testing Tools

PHP Checkstyle

Code Reviews

Page 6: Whitebox testing-phpughh

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

Whitebox Testing Methoden

• Kontrollflussbasiert

• Datenflussbasiert

• Security Orientiert

• Statische Methoden

• Dynamische Methoden

Page 8: Whitebox testing-phpughh

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

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

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

Pfadtest / Pfadüberdeckung

• Abweichend vom Zweigtest wird hier der Test in allen oder vielen möglichen Pfaden durchlaufen.

Page 12: Whitebox testing-phpughh

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

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

Datenfluss Anomalien

• DU Anomalie

• UR Anomalie

• DD Anomalie

Page 15: Whitebox testing-phpughh

Code Review Arten

• Kollegiale Code Reviews

• Peer Review

• Formelles Review

• QA / Security Review

• Technisches Review

Page 16: Whitebox testing-phpughh

Fragen , Diskussion ?

• Kontakt: John Behrens

• Twitter @WebconsultsEU

• Email: [email protected]