Diese Präsentation wurde erfolgreich gemeldet.

Testing TYPO3 Flow Applications with Behat

1

Teilen

Wird geladen in …3
×
1 von 28
1 von 28

Testing TYPO3 Flow Applications with Behat

1

Teilen

Behat is a php framework for testing business expectations. It was introduced into TYPO3 Neos during a code sprint in Karlsruhe for testing its Backend.
This presentation was hold at the TYPO3 Camp Stuttgart 2013 and it should give an overview of Behat, BDD, and how it can be integrated in a TYPO3 Flow Application.

Behat is a php framework for testing business expectations. It was introduced into TYPO3 Neos during a code sprint in Karlsruhe for testing its Backend.
This presentation was hold at the TYPO3 Camp Stuttgart 2013 and it should give an overview of Behat, BDD, and how it can be integrated in a TYPO3 Flow Application.

Weitere Verwandte Inhalte

Ähnliche Bücher

Kostenlos mit einer 14-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 14-tägigen Testversion von Scribd

Alle anzeigen

Testing TYPO3 Flow Applications with Behat

  1. 1. Flow Applikationen mit Behat testen Markus Goldbeck Senior Developer typovision GmbH
  2. 2. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 2 Markus Goldbeck • Senior Developer bei der typovision GmbH • TYPO3 Neos Member • @MarkusGoldbeck
  3. 3. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 3 Was ist Behat?
  4. 4. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 4 A php framework for testing your business expectations. http://behat.org/
  5. 5. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 5 Aber wir haben doch Unit und Functional Tests !
  6. 6. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 6 Unit Tests Unit Tests • testet funktionale Einzelteile • sind die inneren und detailliertesten Komponenten der Software • testet die Module isoliert • für Modultests müssen externe Komponenten wie Datenbankverbindungen aufwendig durch Mock-Objekte simuliert werden
  7. 7. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 7 Functional Tests Functional Tests • sind eine Form von Integrationstest • soll die einzelnen Komponenten zusammen testen • auch hier muss für das testen mit externen Komponenten wie Datenbankverbindungen diese aufwendig durch Mock-Objekte simuliert werden
  8. 8. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 8 Und wofür brauch ich jetzt noch Behat bzw. BDD ?
  9. 9. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 9 Behavior Driven Development Behavior Driven Development • Es werden während der Anforderungsanalyse die • Aufgaben • Ziele und • Ergebnisse textuell festgehalten • Anforderungen in „Wenn-Dann“- Sätze • basierend auf ubiquitären Sprache des Domain-Driven Designs => einfacher Übergang zwischen fachlicher Anforderung und Programmiersprache
  10. 10. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 10 Behavior Driven Development Vorteile • leichte Lesbarkeit durch „sprechende“ Tests • Test von „außen“ • könnte vom Stakeholder selber geschrieben werden • kann von jedem geschrieben werden, der die Business Logik kennt • durch die Abstraktion der Tests kann sich die Implementierung ändern, die Funktion bzw. der Test kann aber immer noch funktionieren => als Erweiterung für Unit und Functional Tests, um die Business Logik zu testen
  11. 11. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 11 Einbindung von Behat in TYPO3 Flow Applikationen
  12. 12. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 12 Einbindung Flowpack.Behat • fertiges Flow Package von Christopher Hlubek networkteam GmbH • https://github.com/Flowpack/Flowpack.Behat • Einbindung über Composer oder direkt clonen Packages/Application { "name": "typo3/neos-base-distribution", "description" : "TYPO3 Neos Base Distribution", "license": "GPL-3.0+", "config": { "vendor-dir": "Packages/Libraries", "bin-dir": "bin" }, "require": { "typo3/neos": "dev-master", "typo3/neosdemotypo3org": "dev-master", "typo3/sitekickstarter": "dev-master" }, "require-dev": { "typo3/buildessentials": "dev-master", "mikey179/vfsstream": "1.1.*", "flowpack/behat": "dev-master" }, "minimum-stability": "dev", "scripts": { "post-update-cmd": "TYPO3FlowComposerInstallerScripts::postUpdateAndInstall", "post-install-cmd": "TYPO3FlowComposerInstallerScripts::postUpdateAndInstall" } }
  13. 13. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 13 Einbindung Flow Build path • https://review.typo3.org/#/c/20756/3 • anlegen des Ordners „Behat“ in „Build“ • Einbindung composer.json • cd Build/Behat • composer install --dev { "require": { "behat/behat": "2.4.*", "behat/mink-extension": "1.0.*", "behat/mink-goutte-driver": "*", "behat/mink-selenium2-driver": "*" }, "config": { "bin-dir": "../../bin/" } }
  14. 14. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 14 Einbindung Konfiguration • Behat braucht zwei spezielle Flow Kontexts • „Development/Behat/Settings.yaml“ • wichtig: Angabe eigener Datenbank • wichtig: Angabe des „drivers“ TYPO3: Flow: persistence: # It is good practice to not specify user name and password of the database # connection in this global Settings.yaml file. Rather specify them in the # settings of the respective context (Production / Development ...). backendOptions: host: '127.0.0.1' # adjust to your database host dbname: 'neosdev_behat' # adjust to your database name user: 'root' # adjust to your database user password: 'root' # adjust to your database password driver: pdo_mysql
  15. 15. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 15 Einbindung Konfiguration • Behat braucht zwei spezielle Flow Kontexts • „Testing/Behat/Settings.yaml“ • wichtig: Angabe eigener Datenbank • wichtig: Angabe des „drivers“ TYPO3: Flow: persistence: # It is good practice to not specify user name and password of the database # connection in this global Settings.yaml file. Rather specify them in the # settings of the respective context (Production / Development ...). backendOptions: host: '127.0.0.1' # adjust to your database host dbname: 'neosdev_behat' # adjust to your database name user: 'root' # adjust to your database user password: 'root' # adjust to your database password driver: pdo_mysql
  16. 16. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 16 Einbindung Konfiguration vhost • Behat Konfiguration auf die gleiche Flow Installation • setzen von „SetEnv FLOW_CONTEXT Development/Behat“ Kontext <VirtualHost *:80> DocumentRoot "/Applications/MAMP/htdocs/NeosDev/Web/" ServerName neos.dev ServerAlias neos.dev SetEnv FLOW_CONTEXT Development </VirtualHost> <VirtualHost *:80> DocumentRoot "/Applications/MAMP/htdocs/NeosDev/Web/" ServerName neos.dev.behat ServerAlias neos.dev.behat SetEnv FLOW_CONTEXT Development/Behat </VirtualHost>
  17. 17. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 17 Einbindung Anlegen der Features • anlegen von Behavior/Features/Botstrap/FeatureContext.php • Kopie von behat.yml.dist anlegen und base_url analog zu vhost setzen
  18. 18. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 18 Einbindung Anlegen der Features • anlegen von Behavior/Features/Botstrap/FeatureContext.php • Kopie von behat.yml.dist anlegen und base_url analog zu vhost setzen require_once(__DIR__ . '/../../../../../Flowpack.Behat/Tests/Behat/FlowContext.php'); /** * Features context */ class FeatureContext extends MinkContext { }
  19. 19. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 19 Selenium Testen von JavaScript • im Beha • @javascript neben @fixtures • Download Selenium Server • java -jar selenium-server-standalone-2.32.0.jar
  20. 20. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 20 Wie sieht so ein Behat Test aus ?
  21. 21. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 21 Thema des Slides Feature Feature: ls In order to see the directory structure As a UNIX user I need to be able to list the current directory's contents Scenario: Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """
  22. 22. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 22 Gherkin - Gürkchen ?
  23. 23. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 23 Aufbau Unterteilung der Tests • Gherkin als Beschreibungssprache • features • Background • scenarios • Given • When • Then • But
  24. 24. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 24 Aufruf der Tests Aufruf der Features aus dem Flow root path • alle features bin/behat -v -c Packages/Application/TYPO3.Neos/Tests/Behavior/ behat.yml • einzelne features bin/behat -v -c Packages/Application/TYPO3.Neos/Tests/Behavior/ behat.yml Packages/Application/TYPO3.Neos/Tests/Behavior/features/ ContentModule/PreviewMode.feature • einzelne scenarios bin/behat -v -c Packages/Application/TYPO3.Neos/Tests/Behavior/ behat.yml Packages/Application/TYPO3.Neos/Tests/Behavior/features/ ContentModule/PageTree.feature:26
  25. 25. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 25 So und jetzt bitte Beispiele
  26. 26. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 26 Behat Tests in TYPO3 Neos Behat Tests sind bereits in TYPO3 Neos integriert • steht am Anfang • Ziel Backend stabiler machen und erhalten • Beispiele /Packages/Application/TYPO3.Neos/Tests/Behavior
  27. 27. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.de TYPO3 Flow Applikation testen mit Behat 27 Quellen Quellen • http://behat.org/ • https://de.wikipedia.org/wiki/Modultest • http://de.wikipedia.org/wiki/Funktionstest • https://github.com/Flowpack/Flowpack.Behat • TYPO3.Neos/Documentation/DeveloperGuide/Testing/Behat • https://speakerdeck.com/everzet/behat-by-example
  28. 28. Vielen Dank für Eure Aufmerksamkeit

×