CodeceptionТестирование в PHP
Я•   Боднарчук Михаил•   Веб разработчик (PHP, Ruby)•   Автор Codeception•   @davert
Существующие решения•   PHPUnit•   ?•   ?•   ?•   ?•   ?•   Selenium
Результат• PHP программисты – гавнокодеры• Никто не тестирует код*• И я в том числе.•   * за редким исключением. Скорее ра...
Чего не хватает?• Простоты написания тестов• Простоты чтения тестов• Простоты отладки тестов
Codeception•   Простой но мощный фреймворк•   Основан на PHPUnit•   Open Source•   Хорошо документирован•   Версия 1.0.14•...
Установка• демо
Чуваки• Тестирование с «человеческим лицом»• Действия от лица людей.• Минимум технических терминов.
Чуваки• WebGuy – тестирует работу сайта вцелом• Приемочное тестирование.• Олицетворяет менеджера
Чуваки• TestGuy - проверяет работу зная  внутренности системы.• Обеспечивает функциональное  тестирование.• Проф. тестиров...
Чуваки• CodeGuy – тестирует код.• Юнит-тестирование.• Разработчик.
WebGuy•   Selenium RC•   WebDriver•   ZombieJS•   PhpBrowser
Типичный тест•   $I = new WebGuy($scenario);•   $I->click(Login);•   $I->fillField(username,davert);•   $I->fillField(pass...
Написание теста
Как находятся элементы?• $I->click(Login); - ?• $I->fillField(username,davert); - ?
Я же умный, красивый, в меруупитанный фреймворк ну в полном         расцвете сил!
Поиск элемента на странице•   По имени (name, value, alt, …)•   По лейблу•   По CSS селектору•   По Xpath (но вскоре будет!)
Результаты теста
Команды: see..•   $I->see (‘text on a page’)•   $I->see(‘heading on page’,’h1’);•   $I->dontSee(‘Error’);•   $I->seeInCurr...
Это очевидно, Ватсон!
TestGuy•   Symfony2•   Zend Framework•   Kohana•   Social Engine•   MySQL, PostgreSQL•   ORM
Интеграция с фреймворками• Не обращаемся к веб-серверу.• Работает гораздо быстрее.• Stack trace и отладочная информация.
Гибкость• демо
Отладка• Все промежуточные данные выводятся на  экран• При сбое делается скриншот последней  страницы• Модуль WebDebug
Очистка БД• перезаливать sql-дамп БД.• использовать SQLite.• через rollback в транзакции.
Модули•   Веб (Selenium, ZombieJS, PhpBrowser)•   API (REST, SOAP)•   MVC Frameworks (Symfony, Zend, …)•   Database (MySQL...
Когда модулей мало• Пишем свои!• Helper-код•   public function seeReceivedSms() {•         $messages = $this->_getOutgoing...
Интеграция с CI• Экспорт HTML, XML, JSON, TAP• Jenkins, Bamboo, etc…• Красивые HTML репорты
Репорт
Подходит для BDD•   As a new customer•   $I->am(‘new customer’);•   I want to buy a notebook•   $I->wantTo(‘buy a notebook...
Hardcore BDD
Документация• http://codeception.com• Guides – всё о фреймворке (8 глав)• Модули – все функции• Reference –команды, опции.
Вопросы?•   http://Codeception.com•   https://github.com/codeception/codeception•   Skype: Davert.ua•   davert@ukr.net•   ...
Codeception Introduction
Upcoming SlideShare
Loading in...5
×

Codeception Introduction

1,159

Published on

presentation on test automation tool for php. http://automated-testing.info

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,159
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Codeception Introduction

  1. 1. CodeceptionТестирование в PHP
  2. 2. Я• Боднарчук Михаил• Веб разработчик (PHP, Ruby)• Автор Codeception• @davert
  3. 3. Существующие решения• PHPUnit• ?• ?• ?• ?• ?• Selenium
  4. 4. Результат• PHP программисты – гавнокодеры• Никто не тестирует код*• И я в том числе.• * за редким исключением. Скорее ради забавы, или, например, когда это огромный проект ентерпрайз уровня.
  5. 5. Чего не хватает?• Простоты написания тестов• Простоты чтения тестов• Простоты отладки тестов
  6. 6. Codeception• Простой но мощный фреймворк• Основан на PHPUnit• Open Source• Хорошо документирован• Версия 1.0.14• PHP >= 5.3
  7. 7. Установка• демо
  8. 8. Чуваки• Тестирование с «человеческим лицом»• Действия от лица людей.• Минимум технических терминов.
  9. 9. Чуваки• WebGuy – тестирует работу сайта вцелом• Приемочное тестирование.• Олицетворяет менеджера
  10. 10. Чуваки• TestGuy - проверяет работу зная внутренности системы.• Обеспечивает функциональное тестирование.• Проф. тестировщик.
  11. 11. Чуваки• CodeGuy – тестирует код.• Юнит-тестирование.• Разработчик.
  12. 12. WebGuy• Selenium RC• WebDriver• ZombieJS• PhpBrowser
  13. 13. Типичный тест• $I = new WebGuy($scenario);• $I->click(Login);• $I->fillField(username,davert);• $I->fillField(password,gfhjkm);• $I->click(Submit);• $I->see(Hello, Davert!);
  14. 14. Написание теста
  15. 15. Как находятся элементы?• $I->click(Login); - ?• $I->fillField(username,davert); - ?
  16. 16. Я же умный, красивый, в меруупитанный фреймворк ну в полном расцвете сил!
  17. 17. Поиск элемента на странице• По имени (name, value, alt, …)• По лейблу• По CSS селектору• По Xpath (но вскоре будет!)
  18. 18. Результаты теста
  19. 19. Команды: see..• $I->see (‘text on a page’)• $I->see(‘heading on page’,’h1’);• $I->dontSee(‘Error’);• $I->seeInCurrentUrl(‘/user/davert’);• $I->seeCheckboxIsChecked(‘#terms’);
  20. 20. Это очевидно, Ватсон!
  21. 21. TestGuy• Symfony2• Zend Framework• Kohana• Social Engine• MySQL, PostgreSQL• ORM
  22. 22. Интеграция с фреймворками• Не обращаемся к веб-серверу.• Работает гораздо быстрее.• Stack trace и отладочная информация.
  23. 23. Гибкость• демо
  24. 24. Отладка• Все промежуточные данные выводятся на экран• При сбое делается скриншот последней страницы• Модуль WebDebug
  25. 25. Очистка БД• перезаливать sql-дамп БД.• использовать SQLite.• через rollback в транзакции.
  26. 26. Модули• Веб (Selenium, ZombieJS, PhpBrowser)• API (REST, SOAP)• MVC Frameworks (Symfony, Zend, …)• Database (MySQL, PostgreSQL, …)• …. всего 19
  27. 27. Когда модулей мало• Пишем свои!• Helper-код• public function seeReceivedSms() {• $messages = $this->_getOutgoingMessages();• $this->assertGreaterThen(0, $messages->count());• }• Тест• $I->click("Confirm by Sms");• $I->seeReceivedSms();
  28. 28. Интеграция с CI• Экспорт HTML, XML, JSON, TAP• Jenkins, Bamboo, etc…• Красивые HTML репорты
  29. 29. Репорт
  30. 30. Подходит для BDD• As a new customer• $I->am(‘new customer’);• I want to buy a notebook• $I->wantTo(‘buy a notebook’);• In order to spend money faster• $I->lookForwardTo(‘spend money faster’);
  31. 31. Hardcore BDD
  32. 32. Документация• http://codeception.com• Guides – всё о фреймворке (8 глав)• Модули – все функции• Reference –команды, опции.
  33. 33. Вопросы?• http://Codeception.com• https://github.com/codeception/codeception• Skype: Davert.ua• davert@ukr.net• Twitter: @davert
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×