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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
350
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
110
ドメインイベントでビジネスロジックを解きほぐす #phpcon_odawara
kajitack
3
790
2026_04_15_量子計算をパズルとして解く
hideakitakechi
0
110
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
480
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.5k
t *testing.T は どこからやってくるの?
otakakot
1
700
의존성 주입과 모듈화
fornewid
0
150
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
3
950
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
990
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
380
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
280
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
99
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
Testing 201, or: Great Expectations
jmmastey
46
8.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Mind Mapping
helmedeiros
PRO
1
160
Typedesign – Prime Four
hannesfritz
42
3k
New Earth Scene 8
popppiees
3
2.1k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
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