codeception introduction
DESCRIPTION
presentation on test automation tool for php. http://automated-testing.infoTRANSCRIPT
Codeception
Тестирование в PHP
Я
• Боднарчук Михаил• Веб разработчик (PHP, Ruby)• Автор Codeception• @davert
Существующие решения
• PHPUnit• ?• ?• ?• ?• ?• Selenium
Результат
• PHP программисты – гавнокодеры• Никто не тестирует код*• И я в том числе.
• * за редким исключением. Скорее ради забавы, или, например, когда это огромный проект ентерпрайз уровня.
Чего не хватает?
• Простоты написания тестов• Простоты чтения тестов• Простоты отладки тестов
Codeception
• Простой но мощный фреймворк• Основан на PHPUnit• Open Source• Хорошо документирован• Версия 1.0.14• PHP >= 5.3
Установка
• демо
Чуваки
• Тестирование с «человеческим лицом»• Действия от лица людей.• Минимум технических терминов.
Чуваки
• 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 (но вскоре будет!)
Результаты теста
Команды: see..
• $I->see (‘text on a page’)• $I->see(‘heading on page’,’h1’);• $I->dontSee(‘Error’);• $I->seeInCurrentUrl(‘/user/davert’);• $I->seeCheckboxIsChecked(‘#terms’);
Это очевидно, Ватсон!
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 – всё о фреймворке (8 глав)• Модули – все функции• Reference –команды, опции.
Вопросы?
• http://Codeception.com• https://github.com/codeception/codeception• Skype: Davert.ua• [email protected]• Twitter: @davert