2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
Transcript of 2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
Сложная система
• Сложная бизнес-логика
• Многокомпонентная система
• Интеграция со сторонними компонентами
• Состояние системы не детерминированно
Как тестируем?
Проверяем, что продукт соответствует требованиям заказчика
• Функциональные тесты
• Интеграция компонентов системы
• Обработка сбоев в сторонних компонентах
Скорее всего используется фреймворк для автоматизации тестов
Реальные внешние компоненты
+ Максимальная приближенность к реальным условиям
‒ Не всегда возможно
– Дорого
– Нестабильно
– Можем не знать, что конкретно возвращает
Моки и стабы
+ Быстро
+ Удобно тестировать граничные случаи и исключения
+ Можно быстро отредактировать
– Неточное повторение реального окружения
End-to-end тесты
+ Подход с точки зрения пользователя
+ Тестирование системы целиком
– Не учитывают особенности кода
– Сложно подготовить тестовые данные для тестирования граничных значений и специфических сценариев
Unit-тесты
+ Учитывают особенности кода
+ Использование стабов и моков
– Модуль может делать не то, что нужно заказчику
Разделение на компоненты
• Выделяем бизнес-сущности
• Внутри компонента идет преобразование одной бизнес-сущности в другую
• Для разных групп тестов может быть разное разбиение
Взаимодействие с внешним компонентом
Тестируем преобразование внешних структур данных во внутренние бизнес-структуры и обратно
Пример
• Проект «семья»
• Сын спрашивает у мамы, можно ли пойти погулять
• Действия мамы:
– проверить, какая погода
– спросить мнение папы
– принять решение
Интеграционные тесты
+ Лучшее покрытие функционала тестами
+ Тесты удобно согласовывать с заказчиком, так как говорим на его языке
– Тестировщики должны писать на одном языке программирования с разработчиками
– Разработчики должны учитывать при разработке архитектуры потребности тестировщиков
А сколько тестов надо?
End-
to-end
Integration tests
Unit tests
Ко
ли
чест
во т
есто
в
Дл
ите
льн
ост
ь те
сто
в