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

1,277 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,277
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Michael “Davert” Bodnarchuk http://github.com/DavertMik TestGuy – эмулируем вашего PHPтестировщика на
  2. 2. Почему мы не пишем функциональные тесты? TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  3. 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. 4. Какими должны быть функциональные ?тесты TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  5. 5. легко писать легко читать легко отлаживать TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  6. 6. Представим себя на месте ….тестировщика TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  7. 7. Так появился TestGuy TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  8. 8. Features! 1. .Лаконичность 2. …Автодополнения TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  9. 9. TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  10. 10. Features! 3. Модульность 4. Основан на PHPUnit 5. …Отладка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  11. 11. TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  12. 12. Features! 6. Bootstrap переменные в тесте TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  13. 13. :Начальные условия am TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk amOnPage amLoggedAs …
  14. 14. Действия: TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk click submitForm sendAjaxRequest …
  15. 15. Результат: see TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk see dontSee seeInUrl seeCheckboxIsChecked seeInField …
  16. 16. Комментарии: wantTo wantToTest amGoingTo expectTo … TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk
  17. 17. Архитектура TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Core – надстройка над PHPUnit, вы (полняющая сценарии основана на PHPUnit BDD). • Модули – независимые компоненты .для взаимодействия с приложением ( , , …)веб БД что угодно • Cli – (консоль Symfony Console)
  18. 18. Конфигурация TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Пишется в Yaml • Позволяет задать несколько независимых сюит для тестирования • Указывает необходимые .модули
  19. 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. 20. Установка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk :Инструкции и код тут https://github.com/DavertMik/TestGuy_Standalone
  21. 21. Установка TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk php testguy.phar install php testguy.phar init php testguy.phar build php testguy.phar run
  22. 22. Модули TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Web • DbPopulator • Filesystem • Cli
  23. 23. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Обязательно пишите тесты перед .рефакторингом • :Не тестируйте мелочи не привязывайтесь к ,верстке к промежуточным , . .результатам т п
  24. 24. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Создайте тестовую БД .через фикстуры https://github.com/fzaninotto/Faker http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle
  25. 25. Советы TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • Создавайте свои модули -для своего веб приложения
  26. 26. Спасибо TestGuy – эмулируем вашего тестировщика на PHP Michael “Davert” Bodnarchuk • https://github.com/DavertMik/TestGuy_Standalone • davert@mail.ua

×