Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
BDD на PHP с помощью Behat и Mink
Search
Roman Marintšenko
January 30, 2013
Programming
120
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BDD на PHP с помощью Behat и Mink
Roman Marintšenko
January 30, 2013
Other Decks in Programming
See All in Programming
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
220
Java 27新機能 / Java 27 new features
kishida
2
150
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
Webの地図
yosuke_furukawa
PRO
6
4.6k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
新卒PdEのリアル
ryu1013
1
500
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
360
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
200
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
Intent as Code
shoppingjaws
6
1k
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Discover your Explorer Soul
emna__ayadi
2
1.3k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
700
Practical Orchestrator
shlominoach
192
12k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
BBQ
matthewcrist
89
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
Exploring anti-patterns in Rails
aemeredith
4
510
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Transcript
BDD на PHP с помощью Behat и Mink
Роман Маринченко • Веб разработчик (PHP / Symfony2) • Неудавшийся
филолог • 3 года назад первый «Hello World» • Шахматы, Starcraft II • Это кто-то читает? inoryy.com
[email protected]
@inoryy github.com/inori
• Стартапы • Тренинги • Свободное ПО <3 • Symfony2
<3 • США, Канада, Франция, ... KnpLabs knplabs.com
[email protected]
@KnpLabs github.com/KnpLabs
… Эстония?
Ищем таланты!
• Symfony2 • Behat • Git • Ninja
Не знаете Symfony2?
None
BDD на PHP с помощью Behat и Mink
BDD на PHP
None
BDD
BDD на любом языке
• PHP – Behat, phpSpec2 • Java – JBehave •
Ruby – Cucumber • C# – SpecFlow • ….
Что такое BDD?
Bug Driven Development
None
Давайте порассуждаем
Разработчики – умные люди
Клиенты – умные люди
None
Почему?
Что самое важное в проекте?
Качество кода?
Самый правильный фреймворк?
Применение паттернов?
Дизайн?
SEO?
Нет
Допустим, клиент хочет машину
Бородатый анекдот
ПМ «все понял»
None
Разработчик «с идеями»
None
Получилось как обычно
None
None
Что самое важное в проекте?
Понять клиента
Что значит «понять»?
Любые капризы за ваши деньги
Любые капризы за ваши деньги
Что именно необходимо клиенту
Как понять?
Правильные вопросы
Нафига? Зачем?
Соц. Медиа в CRM?
Для кого?
Чат в е-магазин?
Зачем?
Ракетный двигатель в Mini Cooper?
Когда можно приступать к работе?
Behavior Driven Development
Разработка, движимая поведением
Как это применять?
Клиент хочет поиск на сайте
«Хочу поиск на сайте»
Кто ищет? Зачем ищет? Что ему это даст?
Для ускорения работы с сайтом Как посетителю сайта Мне необходима
система поиска
Где поиск? Куда поиск? Где результаты?
Я захожу на домашнюю страницу Ввожу в строку поиска текст
И увижу результат в таблице снизу
При чем тут разработчики?
Юзер заходит на / Вводит текст в input.search_bar AJAX-ом делается
POST, на выходе JSON JSON выводится текстом в table.search_results
Нам нужен переводчик
Gherkin
Gangway! I be on homepage Blimey! I board text into
search bar I spy wit' ye eye results in table below
None
Feature: Search bar In order to speed up website usage
As a website visitor I need a search system Scenario: Get search results for „text“ Given I am on homepage When I enter „text“ into search bar Then I should see results in a table below
In order to As a I need Given When Then
In order to (что даст этот функционал?) As a (кто
будет им пользоваться?) I need (что именно необходимо?) Given (Допустим, .... ?) When (Когда я сделаю ... ?) Then (Тогда я ожидаю увидеть ... ?)
Что получит разработчик?
Given /^I am on "([^"]*)"$/ When /^I enter "([^"]*)" into
"([^"]*)"$/ Then /^I should see "([^"]*)" in a "([^"]*)"$/
BDD сценарии = функциональные тесты *
* SpecBDD vs StoryBDD
SpecBDD = Тестируем реализацию
StoryBDD = Описываем поведение приложения
Не заменяют друг друга
Не тестируйте реализацию через StoryBDD
2+2*2 = 6 = SpecBDD
Тут, тут и тут 2, а там 6 = StoryBDD
None
BDD = Понимание бизнеса клиента
С помощью правильных вопросов
Успешный стартап
Успешный клиент
Успешны вы
None
Live Demo (PHP)
Behat + Mink
Behat = BDD фреймворк
Mink = Тестирование Веба
Silex = Микро-фреймворк
https://github.com/Inori/devclub-bdd-php
Вопросы?
Спасибо!
[email protected]
inoryy.com @inoryy github.com/inori