Transcript

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

atdays.com

Thanks

ozozulenko@gmail.com@qainsider

qainsider.com

30

Saturday, February 9, 13

top related