Tests für PHP-Webanwendungen

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Tests für PHP-Webanwendungen - Presentation Transcript

    1. Tests für PHP-Webanwendungen Stefan Priebsch, e-novative GmbH PHP World Kongress 2008, München
    2. Stefan Priebsch ● Diplom-Informatiker (Univ.) aus Wolfratshausen ● Consultant, Trainer, Autor ● „PHP Migrieren“ (Hanser Verlag) ● „PHP 5.3 – Die Neuerungen“ (entwickler.press) ● zahlreiche Fachartikel ● Ich helfe meinen Kunden, PHP erfolgreicher einzusetzen
    3. Wie testet man Webanwendungen?
    4. Verschiedene Tests ● Unit Tests ● System Tests ● Acceptance Tests ● Integration Tests ● Performance Tests ● Load Tests ● Usability Tests ● ... Security nicht vergessen!
    5. Grundprinzip: Berechnungsergebnis mit „korrektem“ Wert vergleichen
    6. Fehler sind nachweisbar
    7. Fehlerfreiheit ist nicht nachweisbar
    8. Goldene Regel 1 Test early, test often.
    9. PHP-Testwerkzeuge ● PHPUnit für Unit-Tests ● Selenium für System-Tests
    10. Unit Tests ● testen eine Klasse oder einen Teil („unit“) der Software ● einfache Testumgebung ● der Entwickler testet selbst ● schnelles Feedback ● Test-Driven Development?
    11. „A fault discovered and corrected in the unit testing phase is more than a hundred times cheaper than if it is done after delivery to the customer.“ -- Barry Boehm
    12. PHPUnit
    13. PHPUnit-Installation ● http://www.phpunit.de ● pear channel-discover pear.phpunit.de ● pear install phpunit/phpunit ● Kommandozeileninterface ● phpunit --help
    14. Unit Test mit PHPUnit require 'PHPUnit/Framework.php'; require dirname(__FILE__).'/../src/aParserClass.php'; class aParserClassTest extends PHPUnit_Framework_TestCase {   public function testShortOption() {     $obj = new aParserClass('­n');     $this­>assertTrue($obj­>hasOption('n'));   }   public function testShortOptionWithArg() {     $obj = new aParserClass('­l the­l­arg');     $this­>assertTrue($obj­>hasOption('l'));     $this­>assertEquals('the­l­arg', $obj­>getOption('l'));   } }
    15. Goldene Regel 2 Wenn Unit Tests eine komplexe Testumgebung benötigen, haben Sie ein Architekturproblem.
    16. Unit Tests mit PHPUnit > phpunit someTest.php  PHPUnit 3.3.4 by Sebastian Bergmann. ................ Time: 0 seconds OK (16 tests, 16 assertions)
    17. Unit Tests mit PHPUnit > phpunit someTest.php  PHPUnit 3.3.4 by Sebastian Bergmann. .......F........ Time: 0 seconds There was 1 failure: 1) testCheckCWDIsDirectory(someTest) Failed asserting that <boolean:true> is false. /path/to/someTest.php:88 FAILURES! Tests: 16, Assertions: 16, Failures: 1.
    18. Goldene Regel 3 Abhängigkeiten zwischen einzelnen Tests sind der Anfang vom Ende.
    19. Unit Tests - Benefits ● Arbeitet die Klasse/Unit wie erwartet? ● Erstes Demo-Programm ● Voraussetzung für Refactoring
    20. Selenium
    21. Selenium IDE ● Capture & Replay ● IDE für Tests im Browser ● Firefox-Plugin ● http://selenium-ide.openqa.org/
    22. Goldene Regel 4 Systemtests sind langsam.
    23. Selenium RC ● Browser-Fernsteuerung (Proxy) ● Unterstützt die gängigen Browser ● Java Proxy ● http://selenium-rc.openqa.org/
    24. Goldene Regel 5 Zu enge Kopplung der Systemtests macht häufige Änderungen an den Tests notwendig.
    25. Selenium/PHPUnit Integration ● Export eines PHPUnit-Testcase aus Selenium IDE ● PHPUnit_Extensions_SeleniumTestCase
    26. Selenium-Test mit PHPUnit require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class aTest extends PHPUnit_Extensions_SeleniumTestCase {   function setUp() {     $this­>setBrowser(\"*chrome /path/to/firefox­2­bin\");     $this­>setBrowserUrl(\"http://localhost/\");   }   function testMyTestCase() {     $this­>open(\"/\");     $this­>click(\"link=Login\");     $this­>waitForPageToLoad(\"30000\");     $this­>assertEquals(\"Login\", $this­>getTitle());     $this­>assertTrue($this­>isTextPresent(\"Please login\"));     ...
    27. Kontinierliche Integtration
    28. Werkzeuge ● CruiseControl ● http://cruisecontrol.sourceforge.net/ ● PHPUnderControl ● http://www.phpundercontrol.org
    29. Kontinuerliche Integration ● Server wartet auf Änderungen in Versionskontrolle ● Build-Prozess ● API-Dokumentation ● Tests ● Metriken
    30. Virtuelle Maschinen
    31. Werkzeuge ● XEN ● http://www.xen.org/ ● KVM ● http://kvm.qumranet.com/kvmwiki ● Virtual Box ● http://www.virtualbox.org/ ● VMware ● http://www.vmware.com
    32. Tests in virtuellen Maschinen ● Testumgebung einrichten ● Virtuelle Maschine starten ● Anwendung installieren ● Testdatenbank anlegen ● Einen Test durchführen ● Testumgebung aufräumen ● Virtuelle Maschine stoppen ● Rollback zum letzten Snapshot
    33. Vorteile der Testautomation ● Test sind wiederholbar ● Verschiedene Browser, Datenbanken, Betriebssysteme, Konfigurationen fast ohne Mehraufwand ● Tests unabhängig vom Entwickler ● stetiges Feedback über Fehler
    34. Vielen Dank.
    35. http://www.priebsch.de stefan.priebsch@e-novative.de Profile bei Xing, LinkedIn, Facebook

    + Stefan PriebschStefan Priebsch, 12 months ago

    custom

    607 views, 0 favs, 0 embeds more stats

    Slides meiner Präsentation auf dem PHP World Kongr more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 607
      • 607 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories