Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Codeception
Тестирование в PHP
Я
•   Боднарчук Михаил
•   Веб разработчик (PHP, Ruby)
•   Автор Codeception
•   @davert
Существующие решения
•   PHPUnit
•   ?
•   ?
•   ?
•   ?
•   ?
•   Selenium
Результат
• PHP программисты – гавнокодеры
• Никто не тестирует код*
• И я в том числе.



•   * за редким исключением. Скорее ради забавы, или, например, когда это огромный проект ентерпрайз уровня.
Чего не хватает?
• Простоты написания тестов
• Простоты чтения тестов
• Простоты отладки тестов
Codeception
•   Простой но мощный фреймворк
•   Основан на PHPUnit
•   Open Source
•   Хорошо документирован
•   Версия 1.0.14
•   PHP >= 5.3
Codeception UATestingDays
Чуваки
• Тестирование с «человеческим лицом»
• Действия от лица людей.
• Минимум технических терминов.
Чуваки
• WebGuy – тестирует работу сайта вцелом
• Приемочное тестирование.
• Олицетворяет менеджера
Чуваки
• TestGuy - проверяет работу зная
  внутренности системы.
• Обеспечивает функциональное
  тестирование.
• Проф. тестировщик.
Чуваки
• CodeGuy – тестирует код.
• Юнит-тестирование.
• Разработчик.
WebGuy
•   Selenium RC
•   WebDriver
•   ZombieJS
•   PhpBrowser
Типичный тест
•   $I = new WebGuy($scenario);
•   $I->click('Login');
•   $I->fillField('username','davert');
•   $I->fillField('password','gfhjkm');
•   $I->click('Submit');
•   $I->see('Hello, Davert!');
Написание теста
Как находятся элементы?
• $I->click('Login'); - ?
• $I->fillField('username','davert'); - ?
Я же умный, красивый, в меру
упитанный фреймворк ну в полном
         расцвете сил!
Поиск элемента на странице
•   По имени (name, value, alt, …)
•   По лейблу
•   По CSS селектору
•   По Xpath (с версии 1.1)
Результаты теста
Команды: see..
•   $I->see (‘text on a page’)
•   $I->see(‘heading on page’,’h1’);
•   $I->dontSee(‘Error’);
•   $I->seeInCurrentUrl(‘/user/davert’);
•   $I->seeCheckboxIsChecked(‘#terms’);
•   $I->see(‘XPath’, ‘//h:a/h:span’);
Это очевидно, Ватсон!
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, PostgreSQL, …)
•   …. всего 19
Когда модулей мало
• Пишем свои!
• Helper-код
•   public function seeReceivedSms() {
•         $messages = $this->_getOutgoingMessages();
•         $this->assertGreaterThen(0, $messages->count());
•   }



• Тест
•   $I->click("Confirm by Sms");
•   $I->seeReceivedSms();
Интеграция с 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’);
•   In order to spend money faster
•   $I->lookForwardTo(‘spend money faster’);
Hardcore BDD
Документация
• http://codeception.com

• Guides – всё о фреймворке (9 глав)
• Модули – все функции
• Reference –команды, опции.
Вопросы?
•   http://Codeception.com
•   https://github.com/codeception/codeception
•   Skype: Davert.ua
•   davert@ukr.net
•   Twitter: @davert

More Related Content

Codeception UATestingDays