Re: Как тестировать серверные сервисные приложения?
От: scf  
Дата: 12.12.22 03:50
Оценка: 18 (1) +1
Здравствуйте, vsb, Вы писали:

vsb>Сейчас это делается юнит-тестами. Запускается несколько мок-серверов, запускается при старте теста БД, в эту БД код кладёт начальные данные, вызывает нужные эндпоинты, в конце проверяет, вызывались ли нужные эндпоинты у мок-серверов, проверяет, изменились ли данные в БД.


Такие интеграционные тесты должны работать строго через апи. Вместо мок серверов и проверок вызовов ендпоинтов должны быть эмуляторы внешних зависимостей (Fakes). Вместо проверок по БД напрямую у приложения должны быть API, позволяющие извлечь эти данные.

Как правило, у микросервиса есть 4 пакета тестов:
— юнит-тесты на отдельные классы
— интеграционные тесты в рамках приложения, когда тестируются подсистемы или большая часть приложения, внешние зависимости заменяются на фейки тоже в рамках приложения, БД поднимается in-memory с тестовыми данными.
— приемочные тесты, это отдельное приложение, тестирующее микросервис через API в изоляции. Внешние зависимости заменяются на эмуляцию (на базе того же wiremock), БД в идеале должна наполняться через то же API, совсем в идеале — чтобы не ломать существующую базу. Например, если в системе данные разделены по юзерам, то приемочные тесты создают новых юзеров для тестирования.
— end-to-end тесты, их немного, но они нужны, чтобы проверить интеграцию между микросервисами и убедиться в работе системы в целом.

Первые две категории пишутся разработчиками, 3 и 4 — автотестировщиками, которым разработчики написали тестовый движок с эмуляторами, удобным апи, кейсами в формате текстовых файликов, интеграцией с cucumber и т.п.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.