codeception introduction

34
Codeception Тестирование в PHP

Upload: automated-testinginfo

Post on 29-Nov-2014

1.405 views

Category:

Documents


5 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Codeception Introduction

Codeception

Тестирование в PHP

Page 2: Codeception Introduction

Я

• Боднарчук Михаил• Веб разработчик (PHP, Ruby)• Автор Codeception• @davert

Page 3: Codeception Introduction

Существующие решения

• PHPUnit• ?• ?• ?• ?• ?• Selenium

Page 4: Codeception Introduction

Результат

• PHP программисты – гавнокодеры• Никто не тестирует код*• И я в том числе.

• * за редким исключением. Скорее ради забавы, или, например, когда это огромный проект ентерпрайз уровня.

Page 5: Codeception Introduction

Чего не хватает?

• Простоты написания тестов• Простоты чтения тестов• Простоты отладки тестов

Page 6: Codeception Introduction

Codeception

• Простой но мощный фреймворк• Основан на PHPUnit• Open Source• Хорошо документирован• Версия 1.0.14• PHP >= 5.3

Page 7: Codeception Introduction
Page 8: Codeception Introduction

Установка

• демо

Page 9: Codeception Introduction

Чуваки

• Тестирование с «человеческим лицом»• Действия от лица людей.• Минимум технических терминов.

Page 10: Codeception Introduction

Чуваки

• WebGuy – тестирует работу сайта вцелом• Приемочное тестирование.• Олицетворяет менеджера

Page 11: Codeception Introduction

Чуваки

• TestGuy - проверяет работу зная внутренности системы.

• Обеспечивает функциональное тестирование.

• Проф. тестировщик.

Page 12: Codeception Introduction

Чуваки

• CodeGuy – тестирует код.• Юнит-тестирование.• Разработчик.

Page 13: Codeception Introduction

WebGuy

• Selenium RC• WebDriver• ZombieJS• PhpBrowser

Page 14: Codeception Introduction

Типичный тест

• $I = new WebGuy($scenario);• $I->click('Login');• $I->fillField('username','davert');• $I->fillField('password','gfhjkm');• $I->click('Submit');• $I->see('Hello, Davert!');

Page 15: Codeception Introduction

Написание теста

Page 16: Codeception Introduction

Как находятся элементы?

• $I->click('Login'); - ?• $I->fillField('username','davert'); - ?

Page 17: Codeception Introduction

Я же умный, красивый, в меру упитанный фреймворк ну в полном

расцвете сил!

Page 18: Codeception Introduction

Поиск элемента на странице

• По имени (name, value, alt, …)• По лейблу• По CSS селектору• По Xpath (но вскоре будет!)

Page 19: Codeception Introduction

Результаты теста

Page 20: Codeception Introduction

Команды: see..

• $I->see (‘text on a page’)• $I->see(‘heading on page’,’h1’);• $I->dontSee(‘Error’);• $I->seeInCurrentUrl(‘/user/davert’);• $I->seeCheckboxIsChecked(‘#terms’);

Page 21: Codeception Introduction

Это очевидно, Ватсон!

Page 22: Codeception Introduction

TestGuy

• Symfony2• Zend Framework• Kohana• Social Engine• MySQL, PostgreSQL• ORM

Page 23: Codeception Introduction

Интеграция с фреймворками

• Не обращаемся к веб-серверу.• Работает гораздо быстрее.• Stack trace и отладочная информация.

Page 24: Codeception Introduction

Гибкость

• демо

Page 25: Codeception Introduction

Отладка

• Все промежуточные данные выводятся на экран

• При сбое делается скриншот последней страницы

• Модуль WebDebug

Page 26: Codeception Introduction

Очистка БД

• перезаливать sql-дамп БД.• использовать SQLite.• через rollback в транзакции.

Page 27: Codeception Introduction

Модули

• Веб (Selenium, ZombieJS, PhpBrowser)• API (REST, SOAP)• MVC Frameworks (Symfony, Zend, …)• Database (MySQL, PostgreSQL, …)• …. всего 19

Page 28: Codeception Introduction

Когда модулей мало

• Пишем свои! • Helper-код• public function seeReceivedSms() {• $messages = $this->_getOutgoingMessages();• $this->assertGreaterThen(0, $messages->count());• }

• Тест• $I->click("Confirm by Sms");• $I->seeReceivedSms();

Page 29: Codeception Introduction

Интеграция с CI

• Экспорт HTML, XML, JSON, TAP• Jenkins, Bamboo, etc…• Красивые HTML репорты

Page 30: Codeception Introduction

Репорт

Page 31: Codeception Introduction

Подходит для 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’);

Page 32: Codeception Introduction

Hardcore BDD

Page 33: Codeception Introduction

Документация

• http://codeception.com

• Guides – всё о фреймворке (8 глав)• Модули – все функции• Reference –команды, опции.

Page 34: Codeception Introduction

Вопросы?

• http://Codeception.com• https://github.com/codeception/codeception• Skype: Davert.ua• [email protected]• Twitter: @davert