Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond Testing Михаил Боднарчук

fwdays
November 18, 2014

Beyond Testing Михаил Боднарчук

fwdays

November 18, 2014
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. ОБО МНЕ  Михаил Боднарчук @davert  Веб-разработчик c пишу

    на PHP, Rails, EmberJS  Автор фреймворка для тестирования Codeception  А также AspectMock, Specify, Robo, RoboCI, PHPTestClub, etc
  2. О ЧЕМ ДОКЛАД  О том, что делать когда PHPUnit

    уже установлен и первые тесты написаны  Что нужно помнить при написании тестов  Вопрос жизни, вселенной и всего такого – TDD or not TDD  О создании среды для тестирования  ...и ни слова о Codeception
  3. КАК ПИСАТЬ ТЕСТ  Отделить конфигурацию от самого теста 

    Избегать иерархии тесткейсов (использовать трейты)  Отделить test code / support code  Делать тест простым и выразительным
  4. КРИТЕРИИ ТЕСТОВ  Стабильность выполнения ↓  Стабильность изменения ↑

     Скорость ↓  Покрытие ↑  Детализация ↓  Читабельность ↕ Модульные => Интеграционные => Функциональные => Приемочные
  5. ОЧИСТКА ДАННЫХ  Вручную добавлять/убирать данные между тестами  Записывать/очищать

    всю базу данных  Использовать транзакции – делать rollback в конце теста
  6. ЦИТАТЫ  TDD is more an act of design than

    verification Bob Martin  Don't try to use tests to design objects that have already been designed. Use it where you will actually benefit from the practice of test driven design Matthew J. Morrison.
  7. НУЖНО БОЛЬШЕ ЦИТАТ ИЗВЕСТНЫХ ЛЮДЕЙ!  Возненавидеть TDD можно только

    вследствие апатии и лени. /Сенека/  TDD — это чередование всяких комбинаций, их нужно изучать, следить за ними, чтобы всюду оставаться в выгодном положении. /О. Бальзак/  Когда жалуются на TDD, то это почти всегда означает, что от него требовали невозможного . /Ж.Ренар/  TDD — слишком серьезная штука, чтобы говорить о ней всерьез. /О.Уайльд/
  8. TDD НЕ ДЛЯ ВСЕХ  Рационал склонен искать решение по

    системе.  Иррационал – интуитивно искать решение.  TDD предоставляет систему для решения задачи.  Использовать или не использовать TDD – личный выбор каждого.
  9. MAILCATCHER  Ruby приложение с веб-интервейсом  SMTP-заглушка  Предоставляет

    REST API для доступа к отправленным имейлам  API можно использовать в тестах
  10. ГДЕ ПОЧИТАТЬ О MAILCATCHER  Официальный сайт http://mailcatcher.me  Email

    Debugging with MailCatcher http://www.sitepoint.com/email-debugging-mailcatcher/  MailCatcher for PHP https://github.com/alexandresalome/mailcatcher  Testing Emails in PHP http://codeception.com/12-15-2013/testing-emails-in-php.html
  11. СОЗДАДИМ ТЕСТОВУЮ СРЕДУ  Выберем рецепты из Travis Cookbooks 

    Накатим! (в Vagrant или на хостинг)  Если надо - установим Jenkins  ?????  PROFIT!!!
  12. ЗАПАКУЕМ SELENIUM В КОНТЕЙНЕРЕ  Возьмем рецепты: java,xserver,firefox::tarball,chromium  С

    помощью Chef установим их внутрь контейнера  Запускаем Selenium внутри контейнера  Получаем https://github.com/Codeception/SeleniumEnv
  13. ЗАПАКУЕМ TRAVIS В КОНТЕЙНЕР!  Берем рецепты (почти все) 

    С помощью Chef и шаманского бубна установим их внутрь контейнера  Увидим, что ничего не работает, поменяем настройки  Повторим......  ?????  Заработало! https://github.com/Codegyre/RoboCI
  14. ROBOCI  Инструмент для виртуализации  Использует конфиги Travis CI

     Работает через Docker, использует связанные контейнеры  Бесплатен  Позволяет отлаживать тесты внутри виртуальной среды  Не имеет веб-интерфейса =(  Нет уведомлений
  15. ТЕСТОВАЯ СРЕДА НА CI СЕРВЕРЕ  Отказаться от виртуализации, использовать

    CI сервер  Использовать Vargant, VirtualBox, OpenVZ, …. для виртуализации  Использовать связанные контейнеры Docker  Купить подписку на CI сервис
  16. СПАСИБО! Тестирование это не только PHPUnit, Behat, Codeception, а и

    инфраструктура, инструменты и психология. Помните это!  Меня зовут Михаил Боднарчук  Мой Twitter: @davert  Мой Github: DavertMik  И сайт: http://codeception.com