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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
Webフレームワークの ベンチマークについて
yusukebe
0
180
ふつうのFeature Flag実践入門
irof
8
4.2k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
200
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
160
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
100
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
170
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Leo the Paperboy
mayatellez
7
1.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Building an army of robots
kneath
306
46k
Mind Mapping
helmedeiros
PRO
1
260
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
GraphQLとの向き合い方2022年版
quramy
50
15k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
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