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

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

Jan 12, 2017

Download

Internet

Evgeniy Kuzmin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Спасение через тестирование - история одного проекта

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

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

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

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

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

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

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

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

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

Symfony 2 backendREST APIAndroid

IOSWeb

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

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

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

Let's do couple simple features

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

Development & refactoring

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 18: Спасение через тестирование - история одного проекта
Page 19: Спасение через тестирование - история одного проекта
Page 20: Спасение через тестирование - история одного проекта

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

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

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

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

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

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

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

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

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

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

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

Mocks

Page 26: Спасение через тестирование - история одного проекта
Page 27: Спасение через тестирование - история одного проекта
Page 28: Спасение через тестирование - история одного проекта

BDD

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

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

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

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

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

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

Page 29: Спасение через тестирование - история одного проекта
Page 30: Спасение через тестирование - история одного проекта
Page 31: Спасение через тестирование - история одного проекта
Page 32: Спасение через тестирование - история одного проекта
Page 33: Спасение через тестирование - история одного проекта

Debugging

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

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

“smart-gamma/logger”

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

- error.log- prod.api.log

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

cap symfony:api:tail

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

deploy.rb

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

deploy.rb

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

Logging

Быстро - в лоб

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

Monolog chanels

Page 39: Спасение через тестирование - история одного проекта
Page 40: Спасение через тестирование - история одного проекта
Page 41: Спасение через тестирование - история одного проекта

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

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

Specifications

Page 43: Спасение через тестирование - история одного проекта
Page 44: Спасение через тестирование - история одного проекта
Page 45: Спасение через тестирование - история одного проекта

Errors codes sharing

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

Clients single flow

API