SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
BDD Test Framework
                                 on PHP
                              ... develop you features
                                    philosophically


  Oleksii Zozulenko




   atdays.com
                                                         1
Saturday, February 9, 13
My name is Oleksii

                           I like automation
                            (for last 7 years)


   atdays.com                      #atdays
                                                 2
Saturday, February 9, 13
Context. Project




                            Engine for Internet stores


   atdays.com                         #atdays
                                                         3
Saturday, February 9, 13
Context. Docs




                           Test cases & Stories

   atdays.com                      #atdays
                                                  4
Saturday, February 9, 13
Context. Docs




                           Test cases & Stories

   atdays.com                      #atdays
                                                  4
Saturday, February 9, 13
Context. Tests

                               Takes too long time

                                Can not involve
                                developers

                                Hard to support
                Auto tests
   atdays.com                    #atdays
                                                     5
Saturday, February 9, 13
atdays.com              #atdays
                                     6
Saturday, February 9, 13
BEHAVIOR DRIVEN
                             DEVELOPMENT

   atdays.com                    #atdays
                                             7
Saturday, February 9, 13
Brief overview

                                         Behavior, not test/should
                                          Re-translation your user
                                             stories into code
                   Dan north




                               http://dannorth.net/introducing-bdd/

   atdays.com                                  #atdays
                                                                      8
Saturday, February 9, 13
We need documented tests

                                      But

                                Tests should run!




   atdays.com                          #atdays
                                                      9
Saturday, February 9, 13
TOOLS


   atdays.com              #atdays
                                     10
Saturday, February 9, 13
Different

                           RSpec

                           Cucumber


                                                      Behat
                           JSpec                    Fabulous
                           JBehave
                                                   Codeception


   atdays.com                            #atdays
                                                                 11
Saturday, February 9, 13
Cucumber&
                           Behat&       Symfony&
                                    Mink&(WebDriver)&
                                      Tags,&Events&
                                        Snippets&

   atdays.com                          #atdays
                                                        12
Saturday, February 9, 13
FRAMEWORK


   atdays.com              #atdays
                                     13
Saturday, February 9, 13
atdays.com              #atdays
                                     14
Saturday, February 9, 13
ARCHITECTURE


   atdays.com               #atdays
                                      15
Saturday, February 9, 13
Flexibility




   atdays.com                  #atdays
                                         16
Saturday, February 9, 13
Scalability




   atdays.com                  #atdays
                                         17
Saturday, February 9, 13
APPLICATION API


   atdays.com              #atdays
                                     18
Saturday, February 9, 13
Application API


                                    Model&


                             DAO&

                                        En##es&




   atdays.com                         #atdays
                                                  19
Saturday, February 9, 13
PAGE OBJECT PATTERN


   atdays.com              #atdays
                                     20
Saturday, February 9, 13
Yaml structure
           LayoutPage:
            elements:
              Element1: “xpathvalue”
              Element2: “xpathvalue”

          PageName:
           url: “canbedynamicwith%ID%”
           inherit: LayoutPage
           entityClass: “BundleEntitiesPageEnity”
           defaultFind: “byId”
           elements:
             Element: “%{AnotherPage/Element}%xpath”
   atdays.com                    #atdays
                                                       21
Saturday, February 9, 13
PageHelper
           Reading yaml structure

                    getPage($pageName)

                    getElement($pageName, $element, array
                    $attributes )

                    getUrl($pageName, $entityId)



   atdays.com                           #atdays
                                                            22
Saturday, February 9, 13
PITFALLS


   atdays.com              #atdays
                                     23
Saturday, February 9, 13
Native Language




   atdays.com                    #atdays
                                             24
Saturday, February 9, 13
Hard to re-use code




   atdays.com                      #atdays
                                                 25
Saturday, February 9, 13
SUMMARY


   atdays.com              #atdays
                                     26
Saturday, February 9, 13
Use your Application
                                     Use Your Application




   atdays.com                        #atdays
                                                            27
Saturday, February 9, 13
atdays.com              #atdays
                                     28
Saturday, February 9, 13
Saturday, February 9, 13
Thanks


                           ozozulenko@gmail.com
                                 @qainsider
                               qainsider.com


   atdays.com
                                                  30
Saturday, February 9, 13

Mais conteúdo relacionado

Mais de Oleksii Zozulenko

Mais de Oleksii Zozulenko (6)

First Steps in Performance
First Steps in PerformanceFirst Steps in Performance
First Steps in Performance
 
BDT on PHP
BDT on PHPBDT on PHP
BDT on PHP
 
Prevent deadlockswithj meter
Prevent deadlockswithj meterPrevent deadlockswithj meter
Prevent deadlockswithj meter
 
Performance with Selenium2
Performance with Selenium2Performance with Selenium2
Performance with Selenium2
 
Goals Based Testing
Goals Based TestingGoals Based Testing
Goals Based Testing
 
Parallelization of tests with SeleniuGrid
Parallelization of tests with SeleniuGridParallelization of tests with SeleniuGrid
Parallelization of tests with SeleniuGrid
 

Bdd test frameworkphilosophy

  • 1. BDD Test Framework on PHP ... develop you features philosophically Oleksii Zozulenko atdays.com 1 Saturday, February 9, 13
  • 2. My name is Oleksii I like automation (for last 7 years) atdays.com #atdays 2 Saturday, February 9, 13
  • 3. Context. Project Engine for Internet stores atdays.com #atdays 3 Saturday, February 9, 13
  • 4. Context. Docs Test cases & Stories atdays.com #atdays 4 Saturday, February 9, 13
  • 5. Context. Docs Test cases & Stories atdays.com #atdays 4 Saturday, February 9, 13
  • 6. Context. Tests Takes too long time Can not involve developers Hard to support Auto tests atdays.com #atdays 5 Saturday, February 9, 13
  • 7. atdays.com #atdays 6 Saturday, February 9, 13
  • 8. BEHAVIOR DRIVEN DEVELOPMENT atdays.com #atdays 7 Saturday, February 9, 13
  • 9. Brief overview Behavior, not test/should Re-translation your user stories into code Dan north http://dannorth.net/introducing-bdd/ atdays.com #atdays 8 Saturday, February 9, 13
  • 10. We need documented tests But Tests should run! atdays.com #atdays 9 Saturday, February 9, 13
  • 11. TOOLS atdays.com #atdays 10 Saturday, February 9, 13
  • 12. Different RSpec Cucumber Behat JSpec Fabulous JBehave Codeception atdays.com #atdays 11 Saturday, February 9, 13
  • 13. Cucumber& Behat& Symfony& Mink&(WebDriver)& Tags,&Events& Snippets& atdays.com #atdays 12 Saturday, February 9, 13
  • 14. FRAMEWORK atdays.com #atdays 13 Saturday, February 9, 13
  • 15. atdays.com #atdays 14 Saturday, February 9, 13
  • 16. ARCHITECTURE atdays.com #atdays 15 Saturday, February 9, 13
  • 17. Flexibility atdays.com #atdays 16 Saturday, February 9, 13
  • 18. Scalability atdays.com #atdays 17 Saturday, February 9, 13
  • 19. APPLICATION API atdays.com #atdays 18 Saturday, February 9, 13
  • 20. Application API Model& DAO& En##es& atdays.com #atdays 19 Saturday, February 9, 13
  • 21. PAGE OBJECT PATTERN atdays.com #atdays 20 Saturday, February 9, 13
  • 22. Yaml structure LayoutPage: elements: Element1: “xpathvalue” Element2: “xpathvalue” PageName: url: “canbedynamicwith%ID%” inherit: LayoutPage entityClass: “BundleEntitiesPageEnity” defaultFind: “byId” elements: Element: “%{AnotherPage/Element}%xpath” atdays.com #atdays 21 Saturday, February 9, 13
  • 23. PageHelper Reading yaml structure getPage($pageName) getElement($pageName, $element, array $attributes ) getUrl($pageName, $entityId) atdays.com #atdays 22 Saturday, February 9, 13
  • 24. PITFALLS atdays.com #atdays 23 Saturday, February 9, 13
  • 25. Native Language atdays.com #atdays 24 Saturday, February 9, 13
  • 26. Hard to re-use code atdays.com #atdays 25 Saturday, February 9, 13
  • 27. SUMMARY atdays.com #atdays 26 Saturday, February 9, 13
  • 28. Use your Application Use Your Application atdays.com #atdays 27 Saturday, February 9, 13
  • 29. atdays.com #atdays 28 Saturday, February 9, 13
  • 31. Thanks ozozulenko@gmail.com @qainsider qainsider.com atdays.com 30 Saturday, February 9, 13