Примечание: Это не для модульного тестирования или тестирования интеграции. Это происходит, когда приложение работает.Следует ли тестировать внешнюю систему перед ее использованием?
Я работаю в системе, которая обменивается данными с несколькими обратно серверными системами, которые могут быть сгруппированы в три типа
- реляционная база данных
- SOAP или WCF службы
- файловой системы (сетевой ресурс)
Из-за окружающей среды, в которой это произойдет, нет гарантий, что любой из них будет доступен во время выполнения. На самом деле некоторые из них кажутся довольно хрупкими и уходят несколько раз в день :(
Мысль состоит в том, чтобы иметь небольшой бит тестового кода, который выполняется до фактического кода. Если есть проблема, то сохраняйте запрос и опрос до целевой системы до тех пор, пока она не будет доступна. Тесты могут быть повторно запущены внутри кода, чтобы проверить, что он по-прежнему доступен в логических точках. Конечной целью является наличие очень стабильной системы, независимо от стабильности (или отсутствия) этих систем он общается с
Мои вопросы вокруг этой конструкции являются:.
- Существуют основные проблемы, связанные с ним (маленький Тхи? ngs, как факт, что он может потерпеть неудачу между завершением тестирования и запуском кода, понятны)
- Есть ли лучшие способы реализации такого дизайна?
- Будет ли использование традиционной обработки исключений и/или транзакций лучше?
Обновления
- Система должна поговорить с серверными системами скоординированным образом.
- Система очень асинхронная по своей природе, поэтому использование таких вещей, как технологии массового обслуживания, прекрасное.
- Система должна работать, даже если одна или несколько бэкэнд-систем недоступны, так как другие могут быть готовы, и обработка некоторой информации возможна.
Термин, с которым я столкнулся для таких «тестов», - это предполетный код. – Morendil
@Morendil не может найти что-либо в Интернете для предполетного кода ... но мне все равно нравится этот термин;) –