• Save
PHP- QA -Tools
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

PHP- QA -Tools

on

  • 2,327 views

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

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/

Statistics

Views

Total Views
2,327
Views on SlideShare
2,045
Embed Views
282

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 282

http://blog.bigpoint.net 282

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 Presentation Transcript

  • 1. PHP – QA - Toolsv13.06.2012; Melwin Meyer; Präsentation - PHP-Usergroup Hamburg
  • 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. ÜberblickPräsentationsüberblick• QA vs. QM• Tools• PHP Unit Tipps• Automatisierung• CI-Server Tipps• Projekt Qualitätsroadmap14. Juni 2012 Seite 3
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Automatisierung mit ANTMögliche Anweisungen• Dateien: Löschen, Erstellen, Rechte ändern• Befehle ausführen• usw…• (Beispiel)14. Juni 2012 Seite 15
  • 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. 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. 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. 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. Fragen ? Diskussionsrunde!14. Juni 2012 Seite 20