SlideShare a Scribd company logo
1 of 31
Download to read 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

More Related Content

More from automated-testing.info

Александр Кабалюк – SilkTest
Александр Кабалюк – SilkTestАлександр Кабалюк – SilkTest
Александр Кабалюк – SilkTestautomated-testing.info
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервисautomated-testing.info
 
Тестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeterТестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeterautomated-testing.info
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteautomated-testing.info
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIautomated-testing.info
 
Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?automated-testing.info
 
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...automated-testing.info
 
Alexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureAlexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureautomated-testing.info
 
Vladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By ExampleVladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By Exampleautomated-testing.info
 
Alexander Zvonov Test Automation Story
Alexander Zvonov Test Automation StoryAlexander Zvonov Test Automation Story
Alexander Zvonov Test Automation Storyautomated-testing.info
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Storyautomated-testing.info
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsautomated-testing.info
 

More from automated-testing.info (20)

Александр Кабалюк – SilkTest
Александр Кабалюк – SilkTestАлександр Кабалюк – SilkTest
Александр Кабалюк – SilkTest
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
 
Тестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeterТестирование производительности Ajax приложений с помощью JMeter
Тестирование производительности Ajax приложений с помощью JMeter
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestComplete
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UI
 
Keyword driven testing
Keyword driven testingKeyword driven testing
Keyword driven testing
 
Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?Andrey Azimov - Как найти работу тестировщику?
Andrey Azimov - Как найти работу тестировщику?
 
Jenkins auto configureforbranch-php
Jenkins auto configureforbranch-phpJenkins auto configureforbranch-php
Jenkins auto configureforbranch-php
 
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
Иван Бордюг - Инструмент автоматизации регрессионного тестирования на основе ...
 
Alexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failureAlexei Zozulenko - Test automation failure
Alexei Zozulenko - Test automation failure
 
Vladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By ExampleVladimir Primakov - Test Automation By Example
Vladimir Primakov - Test Automation By Example
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Ivan Bordug Test Automation Story
Ivan Bordug Test Automation StoryIvan Bordug Test Automation Story
Ivan Bordug Test Automation Story
 
Alexander Zvonov Test Automation Story
Alexander Zvonov Test Automation StoryAlexander Zvonov Test Automation Story
Alexander Zvonov Test Automation Story
 
Daria Chernishova Test Automation Story
Daria Chernishova Test Automation StoryDaria Chernishova Test Automation Story
Daria Chernishova Test Automation Story
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui tests
 
Bdd + SpecFlow + WatiN
Bdd + SpecFlow + WatiNBdd + SpecFlow + WatiN
Bdd + SpecFlow + WatiN
 
Efficient performance testing
Efficient performance testingEfficient performance testing
Efficient performance testing
 
Qtp Automation and Extensibility
Qtp Automation and ExtensibilityQtp Automation and Extensibility
Qtp Automation and Extensibility
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Философия и построение тестового фреймворка на основе BDD в PHP проектах

  • 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