Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BDD на PHP с помощью Behat и Mink
Search
Roman Marintšenko
January 30, 2013
Programming
110
2
Share
BDD на PHP с помощью Behat и Mink
Roman Marintšenko
January 30, 2013
Other Decks in Programming
See All in Programming
ファインチューニングせずメインコンペを解く方法
pokutuna
0
300
事業会社でのセキュリティ長期インターンについて
masachikaura
0
240
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
580
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
370
おれのAgentic Coding 2026/03
tsukasagr
1
140
How Swift's Type System Guides AI Agents
koher
0
210
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
300
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
190
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
230
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.8k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Side Projects
sachag
455
43k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
170
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
370
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Balancing Empowerment & Direction
lara
5
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Building the Perfect Custom Keyboard
takai
2
720
Documentation Writing (for coders)
carmenintech
77
5.3k
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