46
Спасение через тестирование - история одного проекта Євген Кузьмін

Спасение через тестирование - история одного проекта

Embed Size (px)

Citation preview

Спасение через тестирование - история одного проекта

Євген Кузьмін

Готовность проекта на 90%

Что делать чтобы 100% выглядело именно так?

Зачем? И кому это все надо?

Symfony 2 backendREST APIAndroid

IOSWeb

Отсутствие ТЗОтсутствие документацииОтсутствие тестовОтсутствие спецификаций APIОтсутствие средств дебагингаНаличие легаси багов

Let's do couple simple features

Development & refactoring

Обезопасить самого себя! Или доверяй только себе!

Обезопасить самого себя! Или доверяй только себе!Не доверяй себе – доверяй своим тестам!

Первый тест PHPUnit – быстро

- PhpUnit наиболее быстрый путь- Альтернативы Behat, Codeception- Smoke тест на 200- Тесты на совпадение респонса- Реализация более глубокой логики тестов по мере развития проекта- Фича – тест- Багфикс - тест

Тестовые данные: пользователь

Эталонные данные для тестов

1. Дамп с продакшена\беты2. Фикстуры

2.2. Генератор фикстурhttps://github.com/smart-gamma/fixtures-generator

2.1. Ручные фикстуры

2.3. Конструкторы фикстурhttps://github.com/h4cc/AliceFixturesBundle

2.4. Свой кастомный билдер

Закулисные игры

Функциональное ТДД

Тестируем не только REST

- Проблема большинства проектов - отсутствие ТЗ и документации. Лучший способ разобраться в коде - написать для него тест! Т.е. тест, как инструмент изучения проекта.

- Тесты – путь к лучшей архитектуре!

Разделяем ответственность

https://github.com/smart-gamma/vendor-phpunit

Mocks

BDD

- Более поздний этап в действиях стабилизации проекта, но очень важный

- Помогает понимать всей команде один сценарий развития “фичи”

- Помогает говорить с Product Owner на одном языке

- Помогает продумать задачу до ее реализации

- Документирует проект (ТЗ как User Stories)

- Является критерием для тестирования

Debugging

Стандартные логи: - prod.log - access.log - error.log

Что делать, если необходимо посмотреть реальный “флов” API?

“smart-gamma/logger”

custom Capifony tail log commads: http://capifony.org

- error.log- prod.api.log

cap symfony:api:tail

deploy.rb

deploy.rb

Logging

Быстро - в лоб

Monolog chanels

Поиск по логам

Specifications

Errors codes sharing

Clients single flow

API