Middle
31
0
questionbank

Какие тесты вы пишете и каким образом?

Answer from sobes.tech neural network

Пишу следующие виды тестов:

  • Unit-тесты: Тестируют отдельные компоненты или методы класса изолированно от остальной системы. Использую JUnit или TestNG. Для мокирования зависимостей — Mockito.
  • Integration-тесты: Тестируют взаимодействие между несколькими компонентами, подсистемами или сервисами. Например, взаимодействие с базой данных или внешним API. Использую Spring Boot Test для тестирования Spring-приложений, Testcontainers для тестирования с реальными зависимостями (базы данных, месседж-брокеры).
  • Component-тесты / End-to-End (E2E) тесты: Тестируют систему с точки зрения пользователя от начала до конца. Чаще всего автоматизированные тесты пользовательского интерфейса или API. Для API использую Rest-Assured. Для UI — Selenium (хотя предпочитаю писать API-тесты, так как они более стабильны и быстрее).

Процесс написания тестов:

  1. Выбор фреймворка: JUnit 5 или TestNG для unit-тестов, Spring Boot Test, Rest-Assured, Testcontainers для интеграционных и компонентных тестов.
  2. Написание тестов до или в процессе написания кода: Использую TDD (Test-Driven Development) или пишу тесты сразу после написания функциональности.
  3. Изоляция тестов: Для unit-тестов использую Mockito для мокирования зависимостей, чтобы тестировать только изолированный компонент.
  4. Структура теста: Обычно придерживаюсь структуры Arrange-Act-Assert (Подготовка данных, Выполнение действия, Проверка результата).
  5. Четкое именование тестов: Названия тестов должны ясно описывать, что именно тестируется и при каких условиях. Например, userService_createUser_shouldSaveUserInDatabase.
  6. Тестирование граничных условий и ошибок: Проверяю как нормальные сценарии, так и случаи с некорректными входными данными, исключениями и граничными значениями.
  7. Рефакторинг тестов: Поддерживаю тесты в чистоте и читаемости так же, как и основной код.

Пример unit-теста с Mockito и JUnit 5:

java

Пишу следующие виды тестов:

  • Unit-тесты: Тестируют отдельные компоненты или методы класса изолированно от остальной системы. Использую JUnit или TestNG. Для мокирования зависимостей — Mockito.
  • Integration-тесты: Тестируют взаимодействие между несколькими компонентами, подсистемами или сервисами. Например, взаимодействие с базой данных или внешним API. Использую Spring Boot Test для тестирования Spring-приложений, Testcontainers для тестирования с реальными зависимостями (базы данных, месседж-брокеры).
  • Component-тесты / End-to-End (E2E) тесты: Тестируют систему с точки зрения пользователя от начала до конца. Чаще всего автоматизированные тесты пользовательского интерфейса или API. Для API использую Rest-Assured. Для UI — Selenium (хотя предпочитаю писать API-тесты, так как они более стабильны и быстрее).

Процесс написания тестов:

  1. Выбор фреймворка: JUnit 5 или TestNG для unit-тестов, Spring Boot Test, Rest-Assured, Testcontainers для интеграционных и компонентных тестов.
  2. Написание тестов до или в процессе написания кода: Использую TDD (Test-Driven Development) или пишу тесты сразу после написания функциональности.
  3. Изоляция тестов: Для unit-тестов использую Mockito для мокирования зависимостей, чтобы тестировать только изолированный компонент.
  4. Структура теста: Обычно придерживаюсь структуры Arrange-Act-Assert (Подготовка данных, Выполнение действия, Проверка результата).
  5. Четкое именование тестов: Названия тестов должны ясно описывать, что именно тестируется и при каких условиях. Например, userService_createUser_shouldSaveUserInDatabase.
  6. Тестирование граничных условий и ошибок: Проверяю как нормальные сценарии, так и случаи с некорректными входными данными, исключениями и граничными значениями.
  7. Рефакторинг тестов: Поддерживаю тесты в чистоте и читаемости так же, как и основной код.

Пример unit-теста с Mockito и JUnit 5:

java

Register or sign in to get access to full answers for all questions from the question bank.

testingunit-testingintegration-testinge2e-testingtest-automation