PHP- QA -Tools

2.455 Aufrufe

Veröffentlicht am

Präsentation auf der PHP-Usergroup Hamburg. Differenzierung von QA und QM, Tipps für PHPUnit, Nutzen von Build Skripten, Ant, Diverse Tools.

http://www.meetup.com/phpughh/events/64048332/

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.455
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
286
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Nicht zwangsläufig ist das Entwickler Team für die QA zuständig, > Projektteam Abhängig. Hier macht das Entwickler Team die QA Aufgaben neben der eigentlichen Entwicklung Arbeit. Alternativ können diese QA-Aufgaben an ein spezielles Team abgegeben werden.
  • Weitere Tools auf der letzten Seite.
  • 2: Mocking: Mockery, PHPUnit Mock Object 3: Git, Crucible, Reviewboard (auch Jenkins Plugin) 7: Sismo, Bamboo, Jenkins 8: Bamboo Wallboard, Jenkins Wall Display 13: JsTestDriver JSUnit, QUnit, JSTest (klein und nur das nötigste) 14: Selenium, Symfony2, Controller als Services, watir http://www.slideshare.net/fabpot/unit-and-functional-testing-with-symfony2 15: Live-Test 16: w3af, metasploit, Burp Suite 17: JMeter, Pylot, Apache AB 18: Markup Tests - gegen DTDs, XSDs. XML, HTML, Strukturierte Daten.
  • 2: Mocking: Mockery, PHPUnit Mock Object 3: Git, Crucible, Reviewboard (auch Jenkins Plugin) 7: Sismo, Bamboo, Jenkins 8: Bamboo Wallboard, Jenkins Wall Display 13: JsTestDriver JSUnit, QUnit, JSTest (klein und nur das nötigste) 14: Selenium, Symfony2, Controller als Services, watir http://www.slideshare.net/fabpot/unit-and-functional-testing-with-symfony2 15: Live-Test 16: w3af, metasploit, Burp Suite 17: JMeter, Pylot, Apache AB 18: Markup Tests - gegen DTDs, XSDs. XML, HTML, Strukturierte Daten.
  • PHP- QA -Tools

    1. 1. PHP – QA - Toolsv13.06.2012; Melwin Meyer; Präsentation - PHP-Usergroup Hamburg
    2. 2. HalloKurz etwas über mich:• Melwin Meyer• aufgewachsen in Bochum• lebe in Hamburg• Softwareentwickler mit Schwerpunkt Medieninf.• arbeite bei der mindworks GmbH• war lange Zeit bei Gruner + Jahr im Qualitätsmanagement14. Juni 2012 Seite 2
    3. 3. ÜberblickPräsentationsüberblick• QA vs. QM• Tools• PHP Unit Tipps• Automatisierung• CI-Server Tipps• Projekt Qualitätsroadmap14. Juni 2012 Seite 3
    4. 4. Aufgaben QAAufgaben QA (quality assurance)• Schreiben von Unit Tests• Reinhaltung der Code-Formatierung und Struktur• Schreiben von Dokumentation• Durchführung von Code Reviews• Kontinuierliche Akzeptanztests14. Juni 2012 Seite 4
    5. 5. Aufgaben QMAufgaben QM (quality management)• Definieren und Evaluieren von QA Werkzeugen und Aufgaben• Tracken und Auswerten der Qualität• Aufsetzen und Warten von CI/CD Systemen• Akzeptanztests im Leerlauf14. Juni 2012 Seite 5
    6. 6. Werkzeuge (Auswahl)Von uns genutzte Tools im PHP-Umfeld• Jenkins (CI-Server)• MediaWiki (Doku Space)• Clover (Auswertung von UnitTests • (Coverage und Metriken)• PHP Unit• PHP Depend (PHP MessDetector)• PHP CPD• APIGen• CodeSniffer• Symfony 2 Browser (Frontend Tests)14. Juni 2012 Seite 6
    7. 7. PHP UnitPHP Unit• White-Box-Test• Was wird getestet? • Nur eigener Code • Keine Vendors• Welche Testentwicklungen können angewandt werden? • Test driven • Test last • Und Test during14. Juni 2012 Seite 7
    8. 8. PHP UnitTipps für den EinsatzAusführung• XML-Configuration (Test Setup) • Bootstrap • In- und Excludes von Tests • Konstanten • PHP Environment• --filterAnnotations• @covers • nur auf Klassenebene • in der Konfiguration: forceCoversAnnotation=" true"• @depends14. Juni 2012 Seite 8
    9. 9. PHP UnitTipps für den EinsatzAuch in Unit Tests Vererbung nutzen• extends BaseUnitTestSetup• function setUp()• zentrale Objekte erzeugen• Fixtures ladenTearDown• function tearDown()• Fixtures wieder entfernen14. Juni 2012 Seite 9
    10. 10. PHP UnitTipps für den EinsatzAls nicht fertig implementiert Markieren• $this->markTestIncomplete(Testen auf XYZ);• findet Verwendung bei Test First oder Test DuringAls übersprungen Markieren• $this->markTestSkipped (Datenbank nicht verbunden);• den eigentlichen Unit Test trifft keine Schuld.Test Listener• Start, Ende, Error, Incomplete, Skipped• Registrieren über XML-Config• Z.B. zum Zählen von API Calls14. Juni 2012 Seite 10
    11. 11. PHP UnitTipps für den EinsatzExceptions prüfen• @expectedException• $this->setExpectedException(RunetimeException);• alternativ für mehrere Exceptions ein TryCatch Konstrukt verwenden14. Juni 2012 Seite 11
    12. 12. Automatisierung mit Build SkripteVorteile von Build Skripten• one click Installation• one click Testing• dokumentiert Test und Installationsabläufe• leichte Einbindung in CI-Server• keine langen Konsolen-Kommandos • Es werden keine Tests vergessen • Anstatt "phpunit --configuration=... --d=memory... --coverage-html= ... usw." nur "ant –f unitTest.xml"14. Juni 2012 Seite 12
    13. 13. Automatisierung mit Build SkripteEine Auswahl• In der PHP-Welt ist ANT, PHING, MVN und das klassische Shell Script am weitesten verbreitet.• wir präferieren ANT • Sprachenunabhängig • kann viel nützliches • gut lesbar • einfach zu erlernen • und erweiterbar14. Juni 2012 Seite 13
    14. 14. Automatisierung mit ANTStruktur (Muster)/build.xml/unit-test.xml/ui-test.xml/testing/phpUnit.xml/testing/selenium.xml/testing/phpDepend.xml/testing/codeSniffer.xml/integration/install.xml/integration/database.xml/deployment/deploy.xml• bei kleinen Projekten genügt auch ein einziges Ant Skript14. Juni 2012 Seite 14
    15. 15. Automatisierung mit ANTMögliche Anweisungen• Dateien: Löschen, Erstellen, Rechte ändern• Befehle ausführen• usw…• (Beispiel)14. Juni 2012 Seite 15
    16. 16. CI ServerTipps für den CI-Server• Build Skripte verwenden!• E-Mail-Benachrichtigungen einrichten• Artefakte erreichbar machen • Zum Beispiel um immer die aktuelle API-Referenz zu erhalten• Build Trigger durchdenken • Standard ist bei Commit • Bei API, Last oder Security Tests ist ein Rhythmus sinnvoll • Test Monitoring• Wallboard für die Überwachung und Motivation14. Juni 2012 Seite 16
    17. 17. Qualitätsroadmap1. Arbeiten mit Versionsverwaltungssystem > Svn, Git2. Entwickeln von PHP Unit Tests (lokales Testen) > PHPUnit3. regelmäßiges durchführen von Code Reviews > GitHub, Crucible4. regelmäßiges durchführen von Wetware Tests (Browser oder CLI)5. Schreiben von outsource Dokumentation > MediaWiki, Confluence6. Definieren von Coding Standards7. Einrichten einer CI-Umgebung > Jenkins, Bamboo, Sismo, Xinc8. Quality - Monitoring (CI-Wallboard, E-Mails) > Sonar, Jenkins Wall Display, (Div. Hardware Gadgets)9. kontinuierliches ausführen von Unit Tests14. Juni 2012 Seite 17
    18. 18. Qualitätsroadmap10. kontinuierliches generieren der Code-Dokumentation > ApiGen, DocBlox11. Anbindung von div. weiteren Tools wie PHPMD oder CodeSniffer > PHPMD, PHPCPD, PHPCodeSniffer, PHPLint, LiveTest12. Continius Deployment (Integrations Tests), ist für folgende notwendig. > BuildSkripte13. kontinuierliche JavaScript Tests > JsTestDriver, Jasmine, Sinon, JsUnit14. kontinuierliche Frontend Tests (Functional Tests) > WebDriver, Selenium, Windmill, Watir, sahi, WET15. kontinuierliche Security Tests > w3af, burp, metasploit16. kontinuierliche Last Tests > JMeter, Pylot, Apache AB17. automatische Prüfung von Validität > LiveTest + w3af18. Usability Tests > ClickHeat, SMT, Google Analytics19. ...to infinity and beyond… Buzz Lightyear14. Juni 2012 Seite 18
    19. 19. wwwPHP Unit: https://github.com/sebastianbergmann/phpunitPHP CPD: https://github.com/sebastianbergmann/phpcpdPHP MD: http://phpmd.orgPHP Depend: http://pdepend.orgPHP CodeSniffer: pear.php.net/PHP_CodeSniffer• CodeSniffer SF2 Standard: https://github.com/opensky/Symfony2-coding-standardJenkins: jenkins-ci.orgApigen: apigen.orgANT: ant.apache.org14. Juni 2012 Seite 19
    20. 20. Fragen ? Diskussionsrunde!14. Juni 2012 Seite 20

    ×