Your SlideShare is downloading. ×
Flow Applikationenmit Behat testenMarkus GoldbeckSenior Developer typovision GmbH
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 3Was ist Behat?
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 4A php framework for testingyour business ...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 5Aber wir haben dochUnit und Functional Te...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 8Und wofür brauch ich jetztnoch Behat bzw....
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 11Einbindung von Behat inTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 20Wie sieht so ein Behat Testaus ?
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 22Gherkin - Gürkchen ?
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 25So und jetzt bitte Beispiele
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
(c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applik...
Vielen Dank für EureAufmerksamkeit
Upcoming SlideShare
Loading in...5
×

Testing TYPO3 Flow Applications with Behat

1,993

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,993
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Testing TYPO3 Flow Applications with Behat"

  1. 1. Flow Applikationenmit Behat testenMarkus GoldbeckSenior Developer typovision GmbH
  2. 2. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat2Markus 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 3Was ist Behat?
  4. 4. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 4A php framework for testingyour business expectations.http://behat.org/
  5. 5. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 5Aber wir haben dochUnit und Functional Tests !
  6. 6. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat6Unit TestsUnit Tests• testet funktionale Einzelteile• sind die inneren und detailliertesten Komponenten der Software• testet die Module isoliert• für Modultests müssen externe Komponenten wieDatenbankverbindungen aufwendig durch Mock-Objekte simuliertwerden
  7. 7. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat7Functional TestsFunctional Tests• sind eine Form von Integrationstest• soll die einzelnen Komponenten zusammen testen• auch hier muss für das testen mit externen Komponenten wieDatenbankverbindungen diese aufwendig durch Mock-Objektesimuliert werden
  8. 8. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 8Und wofür brauch ich jetztnoch Behat bzw. BDD ?
  9. 9. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat9Behavior Driven DevelopmentBehavior 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 undProgrammiersprache
  10. 10. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat10Behavior Driven DevelopmentVorteile• 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 zutesten
  11. 11. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 11Einbindung von Behat inTYPO3 Flow Applikationen
  12. 12. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat12EinbindungFlowpack.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.deTYPO3 Flow Applikation testen mit Behat13EinbindungFlow 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.deTYPO3 Flow Applikation testen mit Behat14EinbindungKonfiguration• 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 hostdbname: neosdev_behat # adjust to your database nameuser: root # adjust to your database userpassword: root # adjust to your database passworddriver: pdo_mysql
  15. 15. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat15EinbindungKonfiguration• 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 hostdbname: neosdev_behat # adjust to your database nameuser: root # adjust to your database userpassword: root # adjust to your database passworddriver: pdo_mysql
  16. 16. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat16EinbindungKonfiguration 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.devServerAlias neos.devSetEnv FLOW_CONTEXT Development</VirtualHost><VirtualHost *:80>DocumentRoot "/Applications/MAMP/htdocs/NeosDev/Web/"ServerName neos.dev.behatServerAlias neos.dev.behatSetEnv FLOW_CONTEXT Development/Behat</VirtualHost>
  17. 17. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat17EinbindungAnlegen 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.deTYPO3 Flow Applikation testen mit Behat18EinbindungAnlegen der Features• anlegen von Behavior/Features/Botstrap/FeatureContext.php• Kopie von behat.yml.dist anlegen und base_url analog zu vhost setzenrequire_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.deTYPO3 Flow Applikation testen mit Behat19SeleniumTesten 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 20Wie sieht so ein Behat Testaus ?
  21. 21. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat21Thema des SlidesFeatureFeature: lsIn order to see the directory structureAs a UNIX userI need to be able to list the current directorys contentsScenario: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:"""barfoo"""
  22. 22. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 22Gherkin - Gürkchen ?
  23. 23. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat23AufbauUnterteilung 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.deTYPO3 Flow Applikation testen mit Behat24Aufruf der TestsAufruf der Features aus dem Flow root path• alle featuresbin/behat -v -c Packages/Application/TYPO3.Neos/Tests/Behavior/behat.yml• einzelne featuresbin/behat -v -c Packages/Application/TYPO3.Neos/Tests/Behavior/behat.yml Packages/Application/TYPO3.Neos/Tests/Behavior/features/ContentModule/PreviewMode.feature• einzelne scenariosbin/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 25So und jetzt bitte Beispiele
  26. 26. (c) 2013 - typovision GmbH | TYPO3 Flow Applikation mit Behat testen| Markus Goldbeck | www.typovision.deTYPO3 Flow Applikation testen mit Behat26Behat Tests in TYPO3 NeosBehat 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.deTYPO3 Flow Applikation testen mit Behat27QuellenQuellen• 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 EureAufmerksamkeit

×