• Save
Testing TYPO3 Flow Applications with Behat
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Testing TYPO3 Flow Applications with Behat

on

  • 2,201 views

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. ...

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.

Statistics

Views

Total Views
2,201
Views on SlideShare
1,682
Embed Views
519

Actions

Likes
1
Downloads
0
Comments
0

2 Embeds 519

http://www.typo3camp-stuttgart.de 516
https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

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

Testing TYPO3 Flow Applications with Behat Presentation Transcript

  • 1. Flow Applikationenmit Behat testenMarkus GoldbeckSenior Developer typovision GmbH
  • 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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 3Was ist Behat?
  • 4. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 4A php framework for testingyour business expectations.http://behat.org/
  • 5. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 5Aber wir haben dochUnit und Functional Tests !
  • 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. (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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 8Und wofür brauch ich jetztnoch Behat bzw. BDD ?
  • 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. (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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 11Einbindung von Behat inTYPO3 Flow Applikationen
  • 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. (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. (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. (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. (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. (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. (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. (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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 20Wie sieht so ein Behat Testaus ?
  • 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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 22Gherkin - Gürkchen ?
  • 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. (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. (c) 2013 - typovision GmbH | Thema der Präsentation | Autor | www.typovision.de 25So und jetzt bitte Beispiele
  • 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. (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. Vielen Dank für EureAufmerksamkeit