Тестирование бизнес-логики презентация

Содержание

Тестирование бизнес-логики в .NET Швец Сергей, директор по ИТ, ManageBand

Слайд 2Тестирование бизнес-логики в .NET
Швец Сергей,
директор по ИТ,
ManageBand


Слайд 3О себе
9 лет в профессиональной разработке:
PHP, Python, Ruby
Любимый и основной

язык C#
Немного занимался машинным обучением

Текущие интересы: архитектура ПО, маркетинг, продажи, бережливый стартап

Слайд 4Зачем нужны тесты?
Выявление регрессий
Новый функционал
Рефакторинг
Документация
TDD (Test Driven Development)
1
2
3
4
5


Слайд 5Препятствия
Большие инвестиции времени и сил
Нужно подстраивать код под тесты
Тесты нужно поддерживать
Сроки
Лень
1
2
3
4
5


Слайд 6Case1.
Задача:
Обработка телеметрии от оборудования
Windows-сервис (автономность) Трудно понять, что произошла ошибка Высокая ответственность
SqlServer, Postgresql C#,

Linq2Db

Особенности:

Инструменты:


Слайд 7Работа с БД через ORM
Невозможно протестировать логику


Слайд 8Абстракция вместо реальной базы
Business Logic
База данных

IDataSource
RealDataSource
TestDataSource


Слайд 9Источник данных стал абстрактным (его можно подменить в тестах)
Полностью протестирован MessageProcessor

(15-20 зеленых тестов)
Можно выкладывать в production



Слайд 101. Изменилась схема данных
Ошибка:


Слайд 111. Изменилась схема данных
Ошибка:
2. Ошибка при построении конфигурации (NRE)


Слайд 121. Изменилась схема данных
Ошибка:
2. Ошибка при построении конфигурации (NRE)
3. Ошибка при

вставке данных (внешний ключ)

Слайд 131. Изменилась схема данных
Ошибка:
2. Ошибка при построении конфигурации (NRE)
3. Ошибка при

вставке данных (внешний ключ)

4. Ошибка при вставке данных (ограничение столбца)


Слайд 14+
Чисто и красиво
Быстро работают
Минусы
Плюсы
+
Не протестирован DataSource
Нужно подстраивать код под тесты
Не протестировать

SQL запросы
Не проверить особенности БД (ключи, ограничения, триггеры)
Трудоемко реализовывать TestDataSource

-

-

-

-

-


Слайд 15Опрос. Есть ли тесты в бизнес-логике?
Нет
Нет
Да (но нет БД)

*

выборка не репрезентативна

C#

Да
Да

PHP

Да

Python


Слайд 16Опрос. Есть ли тесты в бизнес-логике?
Нет
Нет
Да (но нет БД)

*

выборка не репрезентативна

C#

Да
Да

PHP

Да

Python


Слайд 17Тестовая база
Business Logic
База данных
ТЕСТОВАЯ
База данных
Настоящие таблицы, триггеры, ограничения
Очищается перед каждым

тестом
Загружаются общие данные (фикстуры)
В базе формируется сценарий
В базе проверяется результат

Слайд 18Case2.
Задача:
Офлайн расчет остатков товара на планшете
Очень много не очевидной логики Рефакторинг (уже

запущено и работает) Работает в офлайн (сложно поймать ошибку и доставить обновление)
SQLite C#, Xamarin.IOS, очень простая ORM

Особенности:

Инструменты:


Слайд 19Решение
0. DbTest
1. Фикстуры
2. TestBuilder
Актуализирует структуру БД Очищает перед каждым тестом Заливает фикстуры
Данные, которые

не влияют на тесты, но без них не собрать тестовый сценарий

Помогает собрать тестовый сценарий в базе данных

nuget


Слайд 20Фикстуры


Слайд 21Фикстуры


Слайд 22Тесты


Слайд 23Тесты


ARRANGE Поступление Отгрузка


Слайд 24Тесты

ACT Тестируемый метод


Слайд 25Тесты

ASSERT Проверка результатов


Слайд 26+
Малые трудозатраты на тесты
Тестирование настоящей базы (SQL запросы, тригеры, ограничения)
Можно тестировать

legacy-код без его модификации
Универсальность подхода – любая база, любая ORM



Минусы

Плюсы

+

Работает медленнее (300ms vs 3ms на один тест)

-

+

+


Слайд 27@justserega
https://github.com/justserega/DbTest
Install-Package DbTest Install-Package DbTest.EF6 Install-Package DbTest.EFCore
Ссылки


Слайд 28

 goo.gl/LRwjPo


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика