Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Тестирование бизнес-логики в .NET

Содержание

Тестирование бизнес-логики в .NETШвец Сергей, директор по ИТ, ManageBand
Тестирование бизнес-логики в .NETШвец Сергей, директор по ИТ, ManageBand О себе9 лет в профессиональной разработке: PHP, Python, RubyЛюбимый и основной язык Зачем нужны тесты?Выявление регрессийНовый функционалРефакторингДокументацияTDD (Test Driven Development)12345 ПрепятствияБольшие инвестиции времени и силНужно подстраивать код под тестыТесты нужно поддерживатьСрокиЛень12345 Case1.Задача:Обработка телеметрии от оборудованияWindows-сервис (автономность) Трудно понять, что произошла ошибка Высокая ответственностьSqlServer, Postgresql C#, Linq2Db Особенности:Инструменты: Работа с БД через ORMНевозможно протестировать логику Абстракция вместо реальной базыBusiness LogicБаза данныхIDataSourceRealDataSourceTestDataSource Источник данных стал абстрактным (его можно подменить в тестах)Полностью протестирован MessageProcessor (15-20 1. Изменилась схема данныхОшибка: 1. Изменилась схема данныхОшибка:2. Ошибка при построении конфигурации (NRE) 1. Изменилась схема данныхОшибка:2. Ошибка при построении конфигурации (NRE)3. Ошибка при вставке данных (внешний ключ) 1. Изменилась схема данныхОшибка:2. Ошибка при построении конфигурации (NRE)3. Ошибка при вставке +Чисто и красивоБыстро работаютМинусыПлюсы+Не протестирован DataSourceНужно подстраивать код под тестыНе протестировать SQL Опрос. Есть ли тесты в бизнес-логике?Нет Нет Да (но нет БД)* выборка не репрезентативнаC#ДаДаPHPДаPython Опрос. Есть ли тесты в бизнес-логике?Нет Нет Да (но нет БД)* выборка не репрезентативнаC#ДаДаPHPДаPython Тестовая базаBusiness LogicБаза данныхТЕСТОВАЯ База данныхНастоящие таблицы, триггеры, ограниченияОчищается перед каждым тестомЗагружаются Case2.Задача:Офлайн расчет остатков товара на планшетеОчень много не очевидной логики Рефакторинг (уже Решение0. DbTest1. Фикстуры2. TestBuilderАктуализирует структуру БД Очищает перед каждым тестом Заливает фикстурыДанные, Фикстуры Фикстуры Тесты ТестыARRANGE Поступление Отгрузка ТестыACT Тестируемый метод ТестыASSERT Проверка результатов +Малые трудозатраты на тестыТестирование настоящей базы (SQL запросы, тригеры, ограничения)Можно тестировать legacy-код @justseregahttps://github.com/justserega/DbTest Install-Package DbTest Install-Package DbTest.EF6 Install-Package DbTest.EFCoreСсылки  goo.gl/LRwjPo
Слайды презентации

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

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


ManageBand


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

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

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

Текущие интересы:

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

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

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

Слайд 5 Препятствия
Большие инвестиции времени и сил
Нужно подстраивать код под

ПрепятствияБольшие инвестиции времени и силНужно подстраивать код под тестыТесты нужно поддерживатьСрокиЛень12345

тесты
Тесты нужно поддерживать
Сроки
Лень
1
2
3
4
5


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

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

ошибка Высокая ответственность
SqlServer, Postgresql C#, Linq2Db
Особенности:
Инструменты:


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

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

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

IDataSource
RealDataSource
TestDataSource

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

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

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

тестах)
Полностью протестирован MessageProcessor (15-20 зеленых тестов)
Можно выкладывать в production



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

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

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

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

(NRE)


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

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

(NRE)
3. Ошибка при вставке данных (внешний ключ)


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

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

(NRE)
3. Ошибка при вставке данных (внешний ключ)
4. Ошибка при

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

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

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

под тесты
Не протестировать SQL запросы
Не проверить особенности БД (ключи,

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

-

-

-

-

-


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

Опрос. Есть ли тесты в бизнес-логике?Нет Нет Да (но нет БД)* выборка не репрезентативнаC#ДаДаPHPДаPython

(но нет БД)

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

C#
Да
Да

PHP
Да

Python


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

Опрос. Есть ли тесты в бизнес-логике?Нет Нет Да (но нет БД)* выборка не репрезентативнаC#ДаДаPHPДаPython

(но нет БД)

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

C#
Да
Да

PHP
Да

Python


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

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

ограничения
Очищается перед каждым тестом
Загружаются общие данные (фикстуры)
В базе формируется

сценарий
В базе проверяется результат

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

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

очевидной логики Рефакторинг (уже запущено и работает) Работает в офлайн (сложно

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

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

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


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

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

тестом Заливает фикстуры
Данные, которые не влияют на тесты, но без

них не собрать тестовый сценарий

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

nuget


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

Фикстуры

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

Фикстуры

Слайд 22 Тесты

Тесты

Слайд 23 Тесты


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

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

Слайд 24 Тесты

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

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

Слайд 25 Тесты

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

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

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

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

тригеры, ограничения)
Можно тестировать legacy-код без его модификации
Универсальность подхода –

любая база, любая ORM



Минусы

Плюсы

+

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

-

+

+


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

@justseregahttps://github.com/justserega/DbTest Install-Package DbTest Install-Package DbTest.EF6 Install-Package DbTest.EFCoreСсылки

Слайд 28

 goo.gl/LRwjPo

 goo.gl/LRwjPo

  • Имя файла: testirovanie-biznes-logiki-v-net.pptx
  • Количество просмотров: 157
  • Количество скачиваний: 0