Интеграционные тесты

Интеграционные тесты – это сценарии проверки работы системы, которые должны привести к заранее известным результатам. В отличие от модульных тестов, работающих с максимально изолированными фрагментами программы, интеграционные тесты обычно охватывают несколько взаимодействующих процессов разных слоев системы. Целью проверки интеграционных тестов являются крупные функциональные блоки, такие, как команды над документами, фрагменты бизнес-процессов и т. п. Совокупность всех интеграционных тестов представляет собой спецификацию, описывающую корректно работающую систему. В идеальной ситуации весь функционал системы должен быть покрыт такими тестами.

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

Реализация нового бизнес-процесса, для которого разработано подробное ТЗ, должна сопровождаться написанием интеграционных тестов, покрывающих все аспекты процесса. Методология TDD/BDD (Test-Driven Development – разработка, основанная на тестировании, Behavior-Driven Development – разработка, основанная на функционировании) требует, чтобы тесты были написаны прежде реализации служб: в этом случае они играют роль приемочных тестов. Как только приемочные тесты начинают выполняться, ТЗ может считаться выполненным. Недочеты в ТЗ и ошибки реализации, выявленные в ходе тестирования, должны найти свое отражение в новых тестах. Регрессионные тесты, проверяющие отсутствие конкретных ошибок, гарантируют, что в будущем эти ошибки не возникнут повторно.

Любые изменения в существующем функционале системы должны сопровождаться запуском тестов. Обычно это обеспечивается автоматически с помощью сервера постоянной интеграции. Несмотря на то, что успешное выполнение тестов не гарантирует абсолютно корректной работы системы (поскольку набор тестов не может охватывать все ситуации), хорошие тесты дают приемлемое представление о надежности системы.