SlideShare a Scribd company logo
Michael “Davert” Bodnarchuk
http://github.com/DavertMik
TestGuy – эмулируем вашего
PHPтестировщика на
Почему мы не
пишем
функциональные
тесты?
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Что здесь происходит?
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
$browser ->call('/group/show/id/1', 'GET', array())
->with('request')->begin()
->isParameter('module', 'group')
->isParameter('action', 'show')
->end()
->with('response')->begin()
->isStatusCode(200)
->end();
$browser
->call('/group/promoteDemote', 'POST', array (
'action' => 'promote',
'userId' => '3',
'groupId' => '1',
))
->with('request')->begin()
->isParameter('module', 'group')
->isParameter('action', 'promoteDemote')
->end()
->with('response')->begin()
->isStatusCode(200)
->end();
$browser ->call('/group/show/id/1', 'GET', array())
->with('request')->begin()
->isParameter('module', 'group')
->isParameter('action', 'show')
->end()
->with('response')->begin()
->isStatusCode(200)
->end();
$browser
->call('/group/promoteDemote', 'POST', array (
'action' => 'promote',
'userId' => '3',
'groupId' => '1',
))
->with('request')->begin()
->isParameter('module', 'group')
->isParameter('action', 'promoteDemote')
->end()
->with('response')->begin()
->isStatusCode(200)
->end();
namespace AcmeDemoBundleTestsController;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class DemoControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', '/demo/hello/Fabien');
$this->assertTrue($crawler->filter('html:contains("Hello
abien")')->count() > 0);
}
}
namespace AcmeDemoBundleTestsController;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class DemoControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', '/demo/hello/Fabien');
$this->assertTrue($crawler->filter('html:contains("Hello
abien")')->count() > 0);
}
} public function submittingForgotPasswordInvalidEmail ()
{
$this->request->setMethod('POST')
->setPost(array('email' => 'invalid'));
$this->dispatch('admin/index/forgotpassword/');
$this->assertQueryCount('li.error-msg', 1);
$this->assertQueryContentContains('li.error-msg', 'Cannot find the
email address.');
}
public function submittingForgotPasswordInvalidEmail ()
{
$this->request->setMethod('POST')
->setPost(array('email' => 'invalid'));
$this->dispatch('admin/index/forgotpassword/');
$this->assertQueryCount('li.error-msg', 1);
$this->assertQueryContentContains('li.error-msg', 'Cannot find the
email address.');
}
Какими должны быть
функциональные
?тесты
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
легко писать
легко читать
легко отлаживать
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Представим себя
на месте
….тестировщика
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Так появился
TestGuy
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Features!
1. .Лаконичность
2. …Автодополнения
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Features!
3. Модульность
4. Основан на PHPUnit
5. …Отладка
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Features!
6. Bootstrap
переменные в тесте
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
:Начальные условия
am
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
amOnPage
amLoggedAs
…
Действия:
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
click
submitForm
sendAjaxRequest
…
Результат:
see
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
see
dontSee
seeInUrl
seeCheckboxIsChecked
seeInField
…
Комментарии:
wantTo
wantToTest
amGoingTo
expectTo
…
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
Архитектура
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Core – надстройка над PHPUnit,
вы (полняющая сценарии основана
на PHPUnit BDD).
• Модули – независимые компоненты
.для взаимодействия с приложением
( , , …)веб БД что угодно
• Cli – (консоль Symfony Console)
Конфигурация
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Пишется в Yaml
• Позволяет задать несколько
независимых сюит для
тестирования
• Указывает необходимые
.модули
Пример
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
self:
class_name: TestGuy
suite_class: PHPUnit_Framework_TestSuite
modules: [Cli, Filesystem]
bootstrap: ~
livestreet:
class_name: WebTestGuy
suite_class: PHPUnit_Framework_TestSuite
modules: [Web, DbPopulator]
Web:
start: http://localhost/livestreet/
log: tests/log
DbPopulator:
dump: tests/dump/livestreet.sql
dsn: mysql:host=localhost;dbname=livestreet
user: root
password:
Установка
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
:Инструкции и код тут
https://github.com/DavertMik/TestGuy_Standalone
Установка
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
php testguy.phar install
php testguy.phar init
php testguy.phar build
php testguy.phar run
Модули
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Web
• DbPopulator
• Filesystem
• Cli
Советы
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Обязательно пишите
тесты перед
.рефакторингом
• :Не тестируйте мелочи не
привязывайтесь к
,верстке к промежуточным
, . .результатам т п
Советы
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Создайте тестовую БД
.через фикстуры
https://github.com/fzaninotto/Faker
http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle
Советы
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• Создавайте свои модули
-для своего веб
приложения
Спасибо
TestGuy – эмулируем вашего тестировщика на
PHP
Michael “Davert” Bodnarchuk
• https://github.com/DavertMik/TestGuy_Standalone
• davert@mail.ua

More Related Content

PDF
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
PPTX
Codeception Introduction
ZIP
HTML5. Будем знакомы! Павел Ловцевич
PPT
Easy authcache 2 кеширование для pro родионов игорь
PDF
М. Боднарчук Современное функциональное тестирование с Codeception
PPTX
Михаил Боднарчук Современное функциональное тестирование с Codeception
PDF
2014 Jeeconf - Geb Spock
PPT
Alexander manuhin selenium_php_v2.0
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
Codeception Introduction
HTML5. Будем знакомы! Павел Ловцевич
Easy authcache 2 кеширование для pro родионов игорь
М. Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
2014 Jeeconf - Geb Spock
Alexander manuhin selenium_php_v2.0

What's hot (20)

PDF
Плюсы и минусы автоматизации, пример из жизни
PDF
Everything You Need to Know About WP_Query, WordCamp Russia 2014
PDF
Domain Specific Languages (for business rules)
PPTX
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
PPT
PPT
PPTX
Codeception UATestingDays
PPT
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
ODP
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
PPT
Руководство по приготовлению бутербродов из Selenium
PDF
Pycon Russia 2013 - Разработка через тестирование в Python и Django
PPTX
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
PDF
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
PDF
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
PPT
Как взломать WordPress/Joomla за 5 минут
PDF
Иван Карев — Клиентская оптимизация
PDF
Первые шаги после установки WordPress
PDF
Контроль качества верстки или как начать делать Makeup
PPTX
Python Meetup
PDF
Автоматизация UI тестирования под Windows и Windows Phone
Плюсы и минусы автоматизации, пример из жизни
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Domain Specific Languages (for business rules)
CodeFest 2012. Родионов А. — Тестирование Ruby (on Rails) приложений: стек, п...
Codeception UATestingDays
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Руководство по приготовлению бутербродов из Selenium
Pycon Russia 2013 - Разработка через тестирование в Python и Django
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
Как взломать WordPress/Joomla за 5 минут
Иван Карев — Клиентская оптимизация
Первые шаги после установки WordPress
Контроль качества верстки или как начать делать Makeup
Python Meetup
Автоматизация UI тестирования под Windows и Windows Phone
Ad

Viewers also liked (17)

PPTX
Presentazione t2 e im 17 gen13 glm v05 base
PDF
[Proposed] Vietnam Democracy Act of 2012
PDF
Block
PDF
Thư Liên Bang - The Federalist Papers
PDF
The Braun Foundation for International Exchange
PPT
Frameauditoverview
PDF
PDF
Lecture 3
PPTX
Dr. Alla Kirsch - Travel Clinics of America
PDF
Năm điều bác Hồ dạy
PPT
BCN_Style
PDF
Couvade International
PDF
Where is Nowhere?
PDF
100 câu hỏi thường gặp về Tân Hiến Pháp
PDF
Thư Quốc Gia Việt Nam
PPT
Wahu wahu konsz
PDF
Hiến pháp 7 Đại Việt Dân Quốc
Presentazione t2 e im 17 gen13 glm v05 base
[Proposed] Vietnam Democracy Act of 2012
Block
Thư Liên Bang - The Federalist Papers
The Braun Foundation for International Exchange
Frameauditoverview
Lecture 3
Dr. Alla Kirsch - Travel Clinics of America
Năm điều bác Hồ dạy
BCN_Style
Couvade International
Where is Nowhere?
100 câu hỏi thường gặp về Tân Hiến Pháp
Thư Quốc Gia Việt Nam
Wahu wahu konsz
Hiến pháp 7 Đại Việt Dân Quốc
Ad

Similar to TestGuy - эмулируем вашего тестировщика (8)

PPT
бегун
PDF
Autotest
PPT
бегун
PDF
Codeception - WTF?
PPTX
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PPT
Белым по черному или альтернативное использование unit-тестирования
PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
бегун
Autotest
бегун
Codeception - WTF?
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
Как мы делаем модули PHP в Badoo – Антон Довгаль
Белым по черному или альтернативное использование unit-тестирования
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий

TestGuy - эмулируем вашего тестировщика

  • 1. Michael “Davert” Bodnarchuk http://github.com/DavertMik TestGuy – эмулируем вашего PHPтестировщика на
  • 2. Почему мы не пишем функциональные тесты? TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 3. Что здесь происходит? TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk $browser ->call('/group/show/id/1', 'GET', array()) ->with('request')->begin() ->isParameter('module', 'group') ->isParameter('action', 'show') ->end() ->with('response')->begin() ->isStatusCode(200) ->end(); $browser ->call('/group/promoteDemote', 'POST', array ( 'action' => 'promote', 'userId' => '3', 'groupId' => '1', )) ->with('request')->begin() ->isParameter('module', 'group') ->isParameter('action', 'promoteDemote') ->end() ->with('response')->begin() ->isStatusCode(200) ->end(); $browser ->call('/group/show/id/1', 'GET', array()) ->with('request')->begin() ->isParameter('module', 'group') ->isParameter('action', 'show') ->end() ->with('response')->begin() ->isStatusCode(200) ->end(); $browser ->call('/group/promoteDemote', 'POST', array ( 'action' => 'promote', 'userId' => '3', 'groupId' => '1', )) ->with('request')->begin() ->isParameter('module', 'group') ->isParameter('action', 'promoteDemote') ->end() ->with('response')->begin() ->isStatusCode(200) ->end(); namespace AcmeDemoBundleTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class DemoControllerTest extends WebTestCase { public function testIndex() { $client = static::createClient(); $crawler = $client->request('GET', '/demo/hello/Fabien'); $this->assertTrue($crawler->filter('html:contains("Hello abien")')->count() > 0); } } namespace AcmeDemoBundleTestsController; use SymfonyBundleFrameworkBundleTestWebTestCase; class DemoControllerTest extends WebTestCase { public function testIndex() { $client = static::createClient(); $crawler = $client->request('GET', '/demo/hello/Fabien'); $this->assertTrue($crawler->filter('html:contains("Hello abien")')->count() > 0); } } public function submittingForgotPasswordInvalidEmail () { $this->request->setMethod('POST') ->setPost(array('email' => 'invalid')); $this->dispatch('admin/index/forgotpassword/'); $this->assertQueryCount('li.error-msg', 1); $this->assertQueryContentContains('li.error-msg', 'Cannot find the email address.'); } public function submittingForgotPasswordInvalidEmail () { $this->request->setMethod('POST') ->setPost(array('email' => 'invalid')); $this->dispatch('admin/index/forgotpassword/'); $this->assertQueryCount('li.error-msg', 1); $this->assertQueryContentContains('li.error-msg', 'Cannot find the email address.'); }
  • 4. Какими должны быть функциональные ?тесты TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 5. легко писать легко читать легко отлаживать TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 6. Представим себя на месте ….тестировщика TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 7. Так появился TestGuy TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 8. Features! 1. .Лаконичность 2. …Автодополнения TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 9. TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 10. Features! 3. Модульность 4. Основан на PHPUnit 5. …Отладка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 11. TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 12. Features! 6. Bootstrap переменные в тесте TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 13. :Начальные условия am TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk amOnPage amLoggedAs …
  • 14. Действия: TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk click submitForm sendAjaxRequest …
  • 15. Результат: see TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk see dontSee seeInUrl seeCheckboxIsChecked seeInField …
  • 16. Комментарии: wantTo wantToTest amGoingTo expectTo … TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  • 17. Архитектура TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Core – надстройка над PHPUnit, вы (полняющая сценарии основана на PHPUnit BDD). • Модули – независимые компоненты .для взаимодействия с приложением ( , , …)веб БД что угодно • Cli – (консоль Symfony Console)
  • 18. Конфигурация TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Пишется в Yaml • Позволяет задать несколько независимых сюит для тестирования • Указывает необходимые .модули
  • 19. Пример TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk self: class_name: TestGuy suite_class: PHPUnit_Framework_TestSuite modules: [Cli, Filesystem] bootstrap: ~ livestreet: class_name: WebTestGuy suite_class: PHPUnit_Framework_TestSuite modules: [Web, DbPopulator] Web: start: http://localhost/livestreet/ log: tests/log DbPopulator: dump: tests/dump/livestreet.sql dsn: mysql:host=localhost;dbname=livestreet user: root password:
  • 20. Установка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk :Инструкции и код тут https://github.com/DavertMik/TestGuy_Standalone
  • 21. Установка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk php testguy.phar install php testguy.phar init php testguy.phar build php testguy.phar run
  • 22. Модули TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Web • DbPopulator • Filesystem • Cli
  • 23. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Обязательно пишите тесты перед .рефакторингом • :Не тестируйте мелочи не привязывайтесь к ,верстке к промежуточным , . .результатам т п
  • 24. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Создайте тестовую БД .через фикстуры https://github.com/fzaninotto/Faker http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle
  • 25. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Создавайте свои модули -для своего веб приложения
  • 26. Спасибо TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • https://github.com/DavertMik/TestGuy_Standalone • davert@mail.ua