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