2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы

29
Тестируем сложные backend-ы Екатерина Боброва Тамтэк

Transcript of 2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы

Тестируем сложные backend-ы

Екатерина Боброва

Тамтэк

Сложная система

• Сложная бизнес-логика

• Многокомпонентная система

• Интеграция со сторонними компонентами

• Состояние системы не детерминированно

Как тестируем?

Проверяем, что продукт соответствует требованиям заказчика

• Функциональные тесты

• Интеграция компонентов системы

• Обработка сбоев в сторонних компонентах

Скорее всего используется фреймворк для автоматизации тестов

Реальные внешние компоненты

+ Максимальная приближенность к реальным условиям

‒ Не всегда возможно

– Дорого

– Нестабильно

– Можем не знать, что конкретно возвращает

Моки и стабы

+ Быстро

+ Удобно тестировать граничные случаи и исключения

+ Можно быстро отредактировать

– Неточное повторение реального окружения

Как тестируем?

End-to-end тесты

End-to-end тесты

+ Подход с точки зрения пользователя

+ Тестирование системы целиком

– Не учитывают особенности кода

– Сложно подготовить тестовые данные для тестирования граничных значений и специфических сценариев

Unit-тесты

+ Учитывают особенности кода

+ Использование стабов и моков

– Модуль может делать не то, что нужно заказчику

А сколько тестов надо?

End-

to-end

???

Unit tests

Так как же тестируем?

Техники тест-дизайна

• Декомпозиция

• Функциональное тестирование

• Причина-следствие

Разделение на компоненты

• Выделяем бизнес-сущности

• Внутри компонента идет преобразование одной бизнес-сущности в другую

• Для разных групп тестов может быть разное разбиение

Разделение на компоненты

Внутри компонента идет преобразование одной бизнес-сущности в другую

Разделение на компоненты

• Сложные компоненты можно разбивать на подкомпоненты

Взаимодействие с внешним компонентом

Тестируем преобразование внешних структур данных во внутренние бизнес-структуры и обратно

Взаимодействие с внешним компонентом

Взаимодействие с внешним компонентом

Взаимодействие с внешним компонентом

Пример

• Проект «семья»

• Сын спрашивает у мамы, можно ли пойти погулять

• Действия мамы:

– проверить, какая погода

– спросить мнение папы

– принять решение

Пример

Пример

Пример

Пример

Пример

Пример

Интеграционные тесты

+ Лучшее покрытие функционала тестами

+ Тесты удобно согласовывать с заказчиком, так как говорим на его языке

– Тестировщики должны писать на одном языке программирования с разработчиками

– Разработчики должны учитывать при разработке архитектуры потребности тестировщиков

А сколько тестов надо?

End-

to-end

Integration tests

Unit tests

Ко

ли

чест

во т

есто

в

Дл

ите

льн

ост

ь те

сто

в

Вопросы?

skype: filechka28

email: [email protected]