Codeception Introduction

Post on 29-Nov-2014

1.390 views 5 download

description

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

Transcript of Codeception Introduction

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• davert@ukr.net• Twitter: @davert