Во время интеграционного тестирования важно смоделировать различные виды низкоуровневых сетевых сбоев, чтобы гарантировать, что задействованные компоненты правильно с ними справляются. Некоторые примеры соединений с сокетами (из книги «Освободи это!» Майкла Найгарда) включают
- в соединении отказано
- удаленный конец отвечает SYN / ACK, но никогда не отправляет данные
- удаленный конец отправляет только пакеты RESET
- соединение установлено, но удаленный конец никогда не подтверждает получение пакетов, вызывая бесконечные повторные передачи
и пр.
Было бы полезно смоделировать такие сбои для тестирования интеграции, включающего веб-сервисы, вызовы базы данных и т. Д.
Существуют ли какие-либо инструменты, способные создавать условия сбоя такого специфического вида (то есть сбои на уровне сокета)? Например, одной из возможностей может быть какой-то нефункциональный сервер, который демонстрирует различные виды сбоев на разных портах.
РЕДАКТИРОВАТЬ: После некоторых дополнительных исследований, похоже, что с этим можно справиться с помощью брандмауэра. Например, в iptables есть несколько опций, которые позволяют вам сопоставлять пакеты (либо случайным образом в соответствии с некоторой настраиваемой вероятностью, либо на основе каждого n-го пакета), а затем отбрасывать их. Поэтому я думаю, что мы могли бы настроить наш «грязный сервер» с правилами брандмауэра, настроенными для каждого порта, чтобы создать тот тип мерзости, с которым мы хотим протестировать наши приложения. Было бы интересно услышать мысли об этом подходе.