Skip to content

shlyapos/bmstu_testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Testing (2021)

4th course, IU7
Bauman Moscow State Technical University

✅ Лабораторная работа №1

Задание

  1. Написать unit-тесты для компонентов доступа к данным и бизнес логики работы по БД

Требования

  1. Требуемое покрытие тестами: один класс - как минимум один test suite с как минимум тремя тестами
  2. Должны быть представлены тесты как в классическом так и в "Лондонском" варианте с обоснованием, почему выбран конкретный подход
  3. Должны быть представлены варианты использования mock/stub
  4. Должна быть соблюдена структура Arrange-Act-Assert для каждого теста с использованием fixture и остальных классов/методов хелперов
  5. Должны быть представлены тесты с использованием паттерна Data Builder (ObjectMother - опционально)
  6. Должен быть настроен локальный запуск тестов в среде разработки
  7. Защита от регрессии, устойчивость к рефакторингу и легкость поддержки - базовые принципы, которым стоит следовать

Код задания

Unit-тесты

✅ Лабораторная работа №2

Задание

  1. Написать integration-тесты для компонентов доступа к данным и бизнес логики курсовой работы по БД
  2. Написать E2E-тест для демонстрационного сценария (например того, который был использован при защите курсовой работы)
  3. Организовать запуск тестов из лабораторной работы №1 и вновь добавленных в рамках работы №2 в любой, на усмотрение студента, CI\CD среде (GitLab, Jenkins, TeamCity, etc.)
  4. Проимитировать действия из Е2Е теста с помощью средства для отправки запросов, снять лог с помощью средства захвата траффика

Требования

  1. Хотя бы два интеграционных теста, где тестируются только два класса без моков\стабов остальных классов
  2. Хотя бы два интеграционных теста, где тестируется не менее двух классов с произвольным количеством моков\стабов остальных
  3. Е2Е тест должен включать в себя взаимодействие с БД, БД инициализируется из схемы, которая хранится в системе контроля версий
  4. Взаимодействие с UI для E2E теста не требуется -- имитировать события по условному клику интерфейса через отдельный хэлпер
  5. Интеграционные тесты -- следовать паттерну Arrange-Act-Assert
  6. Е2Е тест -- использовать несколько секций Act-Assert
  7. Порядок запуска тестов в CI\CD: Unit → Integration → E2E
  8. Предусмотреть для Е2Е теста режим: запустить N раз, проверить сколько раз выполнен успешно, 100 <= N <= 1000 (я забыл)

Код задания

Integration-тесты

E2E-тест

GitHub Actions для настройки CI/CD

✅ Лабораторная работа №3

Задание:

  1. Реализовать E2E тест из лабораторной работы №2 с помощью средств TDD/BDD с передачей разных датасетов
  2. Провести профилирование E2E теста из лабораторной работы №2

Требования:

  1. Использовать паттерн Given\When\Then\Where с помощью средств выбранного фреймворка
  2. Вектора значений\эталонных результатов можно передавать в теле теста; передавать \ читать состояние БД или дерево исполнения вызовов не обязательно (но приветствуется)
  3. Профилирование по потреблению CPU, RAM, и оценка Garbage Collection Pauses (если в языке есть GC паузы)
  4. Результатом профилирования является файл отчета, который можно открыть в выбранной для профилирования утилите повторно

Код задания

BDD тесты

Профилирование E2E теста