Behavior DrivenDevelopmentmit CakePHP, Symfony, Drupal und DjangoWorkshop zur FUxCon 2013Olav Schettler - Cocomore AGolav....
Behavior DrivenDevelopmentWährend derAnforderungsanalyse werdenAufgaben, Ziele und Ergebnisse derSoftware textuell festgeh...
AnforderungVision: Projektportfolio einer AgenturVision: Projektportfolio einer Agentur Name: ProjectsName: ProjectsPerson...
Das GesamtverhaltenMerkmal FallbeispieleStartseiteSpaltenweise AuflistungSeitenweises BlätternProjektdetailsVerlinkung von ...
Formale User Stories• Einbeziehung des Auftraggebers in dieAnforderungsdefinition• Fallbeispiele fürVerhaltensbeschreibung•...
Beispiel: ProjektdetailsFeature: projectdetail• In order to see project details• As an anonymous or logged-in user• I want...
1. Fallbeispiel dazuScenario: From the index page a click on atitle brings me to a project detail page• Given I am on the ...
2. Fallbeispiel dazuScenario: A project detail page showstitle, big picture, dates, and description text• Given I am on a ...
Brücke zwischenFallbeispielen und Code• a) Mock Objekte - nicht weiter verfolgt• b) Funktionale TestsMontag, 17. Juni 13
1. Beispiel - WerkzeugeBehat und Mink:• Zuordnung vonSzenarien zu Tests überreguläre Ausdrücke• Einheitliche Schnittstelle...
2. Beispiel:Parametrisierung• GeklammerteAusdrücke werdenParameter• Wiederverwend-barkeit von TestsMontag, 17. Juni 13
3. Beispiel: Bildprüfung• Parametrisierung• Suchen in Seitemit CSS• Herunterladenund lokaleValidierung desBildesMontag, 17...
Erhöhte Testbarkeit• Hilfsfunktionen(checkLogin)Montag, 17. Juni 13
Konfiguration& FixturesMontag, 17. Juni 13
Provide TestValueszeit-basierendeindeutigeWerteDatumsfelderBild-UploadsMontag, 17. Juni 13
Der Rest istMontag, 17. Juni 13
Der Rest ist... FleißMontag, 17. Juni 13
Vier Frameworks• Komponenten-Frameworkzur schnelleren Entwicklungvon Content-Management-Systemen• Bausteine für:• Zugriffs...
Aber welches?Montag, 17. Juni 13
... ist fantastisch, weil esuns Web-Anwendungen einfacher, schnellerund mit weniger Code entwickeln lässt.Ständig benötigt...
... ist fantastisch, weil esbereits von Millionen Websites genutzt undvon einer aktiven und vielfältigen Gemeindeunterstüt...
... ist fantastisch, weil esdamit einfacher ist, bessere Web Appsschneller und mit weniger Code zu bauen.https://www.djang...
... ist fantastisch, weil es... Erstellung und Pflege von PHP Web-Anwendungen beschleunigt. Er ersetzt sichwiederholende Pr...
Aber es gibt doch noch• Open Source:Wordpress,Typo3, Joomla, ...• Proprietär: SixCMS, Coremedia, Sitecore, ...• PHP: Zend ...
Ich habe eine StundeMontag, 17. Juni 13
Warum danndieseVier?CakePHPIch habe zwischen 2008 und 2011 platinnetz.demit einem kleinen Team in CakePHPprogrammiert und ...
Core, Contrib, CustomCakePHP Django Drupal SymfonyCoreUsersTaggingThumbnailsCRUDMarkdownTestdaten2.3 1.5 7.22 2.3eingebaut...
VierImplementierungenFrei verfügbar:https://cocomore.github.io/fuxcon2013• https://github.com/cocomore/fuxcon2013_cakephp•...
Projects in CakePHPEntwicklungs-werkzeugeNutzerkontenBildskalierungTaggingMarkdowneinfache RollenSpaltenlayoutMontag, 17. ...
CakePHP - Der Codehttp://fossil.cm.schettler.net/fuxcon2013/finfo?name=cakephp/app/Controller/ProjectsController.phpMontag,...
Projects in DrupalDrupal ToolbarKein Toolbar ;)TestdatenTaxonomyMarkdownThemingMontag, 17. Juni 13
Drupal - Der CodeMontag, 17. Juni 13
Projects in DjangoDebug ToolbarAdminTestdatenTaggingMarkdownMontag, 17. Juni 13
Django - Der CodeMontag, 17. Juni 13
Projects in SymfonyDebug ToolbarMarkdownTaggingrollenbasierteZugriffsrechteMontag, 17. Juni 13
Symfony - Der CodeMontag, 17. Juni 13
ZusammenfassungDateien /Code-ZeilenDateien /Code-ZeilenDateien /Code-Zeilengesamt custom contribCakePHP153 /23.28926 /1.77...
Die Zukunft• Die vier Implementierungen und die Testsstehen unter github.com/.../fuxcon2013zum Download• Ich nehme gerne w...
Feedback, Fragen?Montag, 17. Juni 13
danke!Montag, 17. Juni 13
Nächste SlideShare
Wird geladen in …5
×

Workshop: Behavior Driven Development mit vier Frameworks

749 Aufrufe

Veröffentlicht am

Zur FUxCon 2013 in Frankfurt stellte ich in einem Workshop Behavior Driven Development mit Behat/Mink und Gherkin vor und zeigte Implementierungen in vier Web Frameworks (CakePHP, Django, Drupal, Symfony), die die Verhaltensbeschreibung implementieren. Verhaltensbeschreibung und Implementierungen sind unter https://cocomore.github.io/fuxcon2013 detailliert beschrieben und stehen von dort frei zum Download zur Verfügung.

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
749
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
5
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Workshop: Behavior Driven Development mit vier Frameworks

  1. 1. Behavior DrivenDevelopmentmit CakePHP, Symfony, Drupal und DjangoWorkshop zur FUxCon 2013Olav Schettler - Cocomore AGolav.schettler@cocomore.comMontag, 17. Juni 13
  2. 2. Behavior DrivenDevelopmentWährend derAnforderungsanalyse werdenAufgaben, Ziele und Ergebnisse derSoftware textuell festgehalten, sodass diese später automatisiert aufihre korrekte Implementierunggetestet werden können.wikipedia.org/Behavior_Driven_DevelopmentBDD wurde 2003von Dan North eingeführt.dannorth.net/introducing-bddMontag, 17. Juni 13
  3. 3. AnforderungVision: Projektportfolio einer AgenturVision: Projektportfolio einer Agentur Name: ProjectsName: ProjectsPersonasBesucher der Site, diesich über dasPortfolio der Agenturinformieren wollenMehrereAgenturmitarbeiter,die Projektbeschrei-bungen pflegenBig PictureBig Picture Product DetailsProject User p p pp p puser▾user▾➽TitleLoremipsum dolorsit amet,conseteturvon..bisaa, bb• Features: Projektliste, Projektdetailseite, Nutzerkonten,Bild-Upload, automatische Bildskalierung,Tagging• User Stories formal in Gherkin, einerDomain Specific Language (DSL) zur Beschreibung vonSoftware-Verhalten• Implementierung alternativ in vier Web-FrameworksTagging TagBildMontag, 17. Juni 13
  4. 4. Das GesamtverhaltenMerkmal FallbeispieleStartseiteSpaltenweise AuflistungSeitenweises BlätternProjektdetailsVerlinkung von der ListenseiteFelder:Titel, skaliertes Bild, Start, Ende,ThemenProjekt anlegenNur angemeldete Nutzer dürfen Projekte anlegenProjekte werden nach Abschicken des FormularsgespeichertProjektbearbeitenRedakteure und Admins dürfen ProjektebearbeitenÄnderungen werden beim Abschicken desFormulars gespeichertNutzerkonten Registrierung,Anmelden,AbmeldenMontag, 17. Juni 13
  5. 5. Formale User Stories• Einbeziehung des Auftraggebers in dieAnforderungsdefinition• Fallbeispiele fürVerhaltensbeschreibung• Automatisierung der Fallbeispieledurch Mock-Objekte• Successive ImplementierungMontag, 17. Juni 13
  6. 6. Beispiel: ProjektdetailsFeature: projectdetail• In order to see project details• As an anonymous or logged-in user• I want to click in a title on an index page andget a page with title, big picture, dates, anddescription text formatted in MarkdownMontag, 17. Juni 13
  7. 7. 1. Fallbeispiel dazuScenario: From the index page a click on atitle brings me to a project detail page• Given I am on the homepage• When I click on the first project title• Then I am on a project detail pageMontag, 17. Juni 13
  8. 8. 2. Fallbeispiel dazuScenario: A project detail page showstitle, big picture, dates, and description text• Given I am on a project detail page• Then I see content (title, picture, dates, about)• And the picture has a width of 380px• And the "about" content is formatted withMarkdownMontag, 17. Juni 13
  9. 9. Brücke zwischenFallbeispielen und Code• a) Mock Objekte - nicht weiter verfolgt• b) Funktionale TestsMontag, 17. Juni 13
  10. 10. 1. Beispiel - WerkzeugeBehat und Mink:• Zuordnung vonSzenarien zu Tests überreguläre Ausdrücke• Einheitliche Schnittstellezu verschiedenenBrowser-EmulationenMontag, 17. Juni 13
  11. 11. 2. Beispiel:Parametrisierung• GeklammerteAusdrücke werdenParameter• Wiederverwend-barkeit von TestsMontag, 17. Juni 13
  12. 12. 3. Beispiel: Bildprüfung• Parametrisierung• Suchen in Seitemit CSS• Herunterladenund lokaleValidierung desBildesMontag, 17. Juni 13
  13. 13. Erhöhte Testbarkeit• Hilfsfunktionen(checkLogin)Montag, 17. Juni 13
  14. 14. Konfiguration& FixturesMontag, 17. Juni 13
  15. 15. Provide TestValueszeit-basierendeindeutigeWerteDatumsfelderBild-UploadsMontag, 17. Juni 13
  16. 16. Der Rest istMontag, 17. Juni 13
  17. 17. Der Rest ist... FleißMontag, 17. Juni 13
  18. 18. Vier Frameworks• Komponenten-Frameworkzur schnelleren Entwicklungvon Content-Management-Systemen• Bausteine für:• Zugriffsschutz• Datenbankschnittstelle• Template-Engine• Suchfunktionalitätenhttp://de.wikipedia.org/wiki/Content-Management-FrameworkMontag, 17. Juni 13
  19. 19. Aber welches?Montag, 17. Juni 13
  20. 20. ... ist fantastisch, weil esuns Web-Anwendungen einfacher, schnellerund mit weniger Code entwickeln lässt.Ständig benötigte Bausteine sind bereitseingebaut: Übersetzung, Datenbankzugang,Caching, Formularvalidierung,Authentisierunghttp://cakephp.org/platinnetz.descratch.mit.eduhotscripts.comMontag, 17. Juni 13
  21. 21. ... ist fantastisch, weil esbereits von Millionen Websites genutzt undvon einer aktiven und vielfältigen Gemeindeunterstützt wird und als Basis von privatenWeblogs ebenso wie für Unternehmens-anwendungen taugt.https://drupal.org/whiteHouse.govlouvre.frx.commaxim.combrits.co.ukexaminer.comkenzo.comMontag, 17. Juni 13
  22. 22. ... ist fantastisch, weil esdamit einfacher ist, bessere Web Appsschneller und mit weniger Code zu bauen.https://www.djangoproject.com/disqus.cominstagram.commozilla.orgpinterest.comrdio.comMontag, 17. Juni 13
  23. 23. ... ist fantastisch, weil es... Erstellung und Pflege von PHP Web-Anwendungen beschleunigt. Er ersetzt sichwiederholende Programmieraufgaben durchLeistungsfähigkeit, Kontrolle undVergnügen.... eine Zertifizierung für Entwickler gibt.... demnächst in Drupal 8 enthalten ist.http://symfony.com/esl.eudailymotion.comanswers.yahoo.comdel.icio.usMontag, 17. Juni 13
  24. 24. Aber es gibt doch noch• Open Source:Wordpress,Typo3, Joomla, ...• Proprietär: SixCMS, Coremedia, Sitecore, ...• PHP: Zend Framework,Yii, Kohana, ...• Javascript: Node.js, Opa, ...• andere: Ruby on Rails, Skala, ...Montag, 17. Juni 13
  25. 25. Ich habe eine StundeMontag, 17. Juni 13
  26. 26. Warum danndieseVier?CakePHPIch habe zwischen 2008 und 2011 platinnetz.demit einem kleinen Team in CakePHPprogrammiert und betrieben.DrupalIch setze Drupal seit 9 Jahren in Projektenfür Kunden ein, habe ein Buch darübergeschrieben und zuletzt in 2012 für Acquiaim technischen Support großer Drupal-Sites gearbeitet. Cocomore macht auch Drupal-ProjekteDjangoViele Konzepte in Symfony stammen aus Django.Python ist meine Lieblings-Programmiersprache.Django ist ein extrem produktives Framework, besitzt hervoragende Dokumentation,wird auf vielen wirklich großen Sites eingesetzt und besitzt einen umfassendenMarktplatz für Erweiterungen.SymfonyWenn man PHP machen muss, ist Symfony das neue Cool Kid. Es gibt wird inDeutschland aktiv durch die Agentur SensioLabs des Projektautors Fabien Potenciervermarktet,Es gibt eine Entwicklerzertifizierung und es wird in Drupal 8 enthalten sein.AnnotationenDocstringserzwungene Strukturfunktionierende NamespacesMontag, 17. Juni 13
  27. 27. Core, Contrib, CustomCakePHP Django Drupal SymfonyCoreUsersTaggingThumbnailsCRUDMarkdownTestdaten2.3 1.5 7.22 2.3eingebaut eingebaut eingebaut FOSUserBundleCakeDC / tags taggit eingebaut FPNTagBundleeigen photologue eingebaut eigenbake eingebaut eingebautdoctrine:generate:crudHydra /markdowneingebaut markdownKnpMarkdownBundleeigen autofixture devel generate (noch nicht)Montag, 17. Juni 13
  28. 28. VierImplementierungenFrei verfügbar:https://cocomore.github.io/fuxcon2013• https://github.com/cocomore/fuxcon2013_cakephp• https://github.com/cocomore/fuxcon2013_django• https://github.com/cocomore/fuxcon2013_drupal• https://github.com/cocomore/fuxcon2013_symfonyMontag, 17. Juni 13
  29. 29. Projects in CakePHPEntwicklungs-werkzeugeNutzerkontenBildskalierungTaggingMarkdowneinfache RollenSpaltenlayoutMontag, 17. Juni 13
  30. 30. CakePHP - Der Codehttp://fossil.cm.schettler.net/fuxcon2013/finfo?name=cakephp/app/Controller/ProjectsController.phpMontag, 17. Juni 13
  31. 31. Projects in DrupalDrupal ToolbarKein Toolbar ;)TestdatenTaxonomyMarkdownThemingMontag, 17. Juni 13
  32. 32. Drupal - Der CodeMontag, 17. Juni 13
  33. 33. Projects in DjangoDebug ToolbarAdminTestdatenTaggingMarkdownMontag, 17. Juni 13
  34. 34. Django - Der CodeMontag, 17. Juni 13
  35. 35. Projects in SymfonyDebug ToolbarMarkdownTaggingrollenbasierteZugriffsrechteMontag, 17. Juni 13
  36. 36. Symfony - Der CodeMontag, 17. Juni 13
  37. 37. ZusammenfassungDateien /Code-ZeilenDateien /Code-ZeilenDateien /Code-Zeilengesamt custom contribCakePHP153 /23.28926 /1.77140 /6.297Die Seite in CakePHP war am einfachsten zuerstellen (ich habe einige Erfahrung darin),erforderte aber am meisten Custom Code.Drupal541 /166.9518 /216179 /41.697Drupal ist riesig, bei relativ wenigen, großenDateien. Die erforderlichen Erweiterungen(besondersViews) sind ebenfalls groß.Der erforderliche, eigenen Code ist am kleinsten!Django1992 /289.95617 /808887 /167.242Django ist subjektiv das eleganteste (eingebauteFeatures) und produktivste (Dokumentation,verfügbare Erweiterungen) MVC-Framework indiesemVergleich.Symfony6075 /69.888 (?)34 /10932406 /312.729Symfony selbst ist X so groß wie CakePHP, hataber überproportional mal mehr Dateien. Dererforderliche Custom Code ist mit CakePHPvergleichbar. ImVergleich zu den anderenFrameworks wirkt vieles umständlich.viele kleine DateienTagging, Skalierung,MarkdownMontag, 17. Juni 13
  38. 38. Die Zukunft• Die vier Implementierungen und die Testsstehen unter github.com/.../fuxcon2013zum Download• Ich nehme gerne weitere Frameworks undzusätzliche Features auf• Neben den funktionalen Tests wünsche ichmir vergleichende Performance-Tests mitMassendaten.Wer mag...Montag, 17. Juni 13
  39. 39. Feedback, Fragen?Montag, 17. Juni 13
  40. 40. danke!Montag, 17. Juni 13

×