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
2
110
BDD на PHP с помощью Behat и Mink
Roman Marintšenko
January 30, 2013
Tweet
Share
Other Decks in Programming
See All in Programming
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
Ruby and LLM Ecosystem 2nd
koic
1
1k
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.4k
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.2k
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
400
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
230
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
590
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
280
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1k
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
130
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
440
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
260
Building Applications with DynamoDB
mza
96
7k
WCS-LA-2024
lcolladotor
0
480
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
GitHub's CSS Performance
jonrohan
1032
470k
Writing Fast Ruby
sferik
630
63k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
So, you think you're a good person
axbom
PRO
2
2k
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