Разработка приложений все больше зависит от API, часто интегрирующих со многими различными услугами. Чтобы устранить неопределенность в этих зависимостях, многие разработчики используют синтетические тесты для мониторинга их активности API. Эта общая инструментарий помогает вам обнаружить, когда API работает или вниз, и возвращает ли он ожидаемые результаты. Хотя полезное синтетическое тестирование не может имитировать реальность сегодняшних приложений.
Когда ваше приложение использует несколько услуг, ваши тесты будут пропущены:
- Внутренние микросервисы, которые не имеют общественных конечных точек
- Ошибки, специфичные для реального использования что вы не предвиделись
- Изменения в вашем приложении после написания тестов
В этом посте мы поделимся больше об этих трех сценариях, и объясните, почему в режиме реального времени мониторинг вызовов Live API является лучшим решением.
Ваши микросервисы могут быть непростойными
Традиционное синтетическое тестирование даже не вариант для многих предприятий сегодня. Если вы строите внутренние API, которые не доступны в Интернете, такие как популярные микросервисы, вы будете ограничены только общедоступными интерфейсами. Иногда этого достаточно, но для достаточно продвинутых случаев использования, оно обычно означает, что вы оставляете большую часть вашего программного обеспечения.
Большинство синтетических инструментов мониторинга бегают как SaaS. Вы входите в приборную панель и настроив свою серию вызовов API и критерии. Затем, по определенным интервалам, монитор вызывает конечные точки — обычно из облачных провайдеров в различных местах — для обеспечения пропускания синтетических испытаний. Для достижения этого теста с микросервисами требуется, чтобы вызовы могут быть сделаны изнутри ваших систем, что не может быть доступно публичным DNS.
Вы можете использовать синтетический мониторинг с более простыми сценариями:
- Внутренняя API работает мобильное приложение или другой интерфейс
- Называть небольшое количество сторонних API
В обоих этих случаях конечные точки должны быть доступны для Интернета. С некоторыми ручными усилиями вы можете создавать тесты для периодически имитирования этих звонков на стороне клиента. С помощью этого подхода вы можете отслеживать только предварительно определенные данные запроса и ответа, чтобы обеспечить ее соответствие ожидания. Не только это тестирует пропустить проблемы с внутренними службами, он также дает вам только частичный вид ваших внешних вызовов.
Синтетический мониторинг только говорит часть истории
Проблема с синтетическим мониторингом находится в названии: это синтетическая. Вы только тестируете то, что вы явно включены. Многие ошибки зависят от реальных ситуаций использования — если вы не учли его, ваш мониторинг не поймает его.
Синтетические испытания могут пропустить:
- Проблемы, связанные с сетью вашего приложения
- Краевые чехлы на основе учетных данных, которые вы используете
- Ошибки, которые возникают только с контентом динамического запроса
- Задержка, не захваченная в разовом тесте
- Сообщения об ошибках, отправленные с кодами состояния 200 уровней
- Проблемы, которые вы не рассмотрели с вашими тестами
Эти проблемы становятся только хуже, если ваша заявка зависит от нескольких сторонних API. Мы нашли Более половины разработчиков потребляют более пяти API Отказ С множеством потенциальных точек провала вы можете понять, почему заманчиво настроить мониторы. Тем не менее, мы обнаружили, что большинство разработчиков не отслеживают внешние API, которые они звонят, и не может иметь доступа к песочнице, которые могут быть легко протестированы.
Чтобы понять полную картину в производительности API, требует полной видимости к тому, что испытывает ваше приложение. Существуют ситуации, когда синтетические тесты имеют смысл, но вы не можете зависеть от них, чтобы захватить все проблемы с вашим приложением.
Если для ваших клиентов важно иметь опыт работы с ограниченными ошибками, крайне важно, чтобы вы выходите за пределы синтетических испытаний.
Трудно поддерживать синтетические тесты
Где синтетический мониторинг имеет смысл для API, которые вы предоставляете публично или для утвержденных партнеров. Площадь поверхности тестов ограничена единым API с некоторыми четко определенными случаями использования. Сторонний мониторинг API сложнее, особенно если вы попытаетесь покрыть некоторые сценарию синтетических тестов, которые могут пропустить. Внешний API часто меняются без предварительного уведомления , поэтому тесты могут дать вам оповещения, когда все не так, как вы ожидаете. Затем наступает самая сложная часть: обслуживание этих тестов, когда ваше собственное приложение также меняется.
Допустим, вы набрали подробности каждого вызова API, вы делаете во время типичного опыта пользователя с вашим приложением. Далее вы переводите эти случаи использования в синтетические тесты, поэтому вы можете быть предупреждены, когда он ловит ошибки. Вы будете отсутствовать атипичные пользовательские пути, но это может быть компромисс, вы хотите сделать. Вы можете публиковать свои тесты и регулярно контролировать их, чувствуя себя уверенно. Пока ты ничего не меняешь.
После того, как вы построили приложение, это не сделано. Большинство программных программ требует исправлений ошибок, улучшения пользовательского опыта и новые функции. Неизбежно, вам нужно адаптировать, как вы делаете ваши звонки на внешние API. Создание комплексных синтетических испытаний для приложения, которое вызывает несколько API, сложно в первую очередь. Сохранение его обновления с точными звонками, когда ваш код развивается, может быть невозможная задача.
В идеале вы можете добавить некоторые процессы для синхронизации мониторов с вашими настоящими звонками. Например, включите синтетическое тестовое обслуживание в вашем кодовом обзоре. Несчастный побочный эффект может быть более медленнее циклов развития. Все в названии тестов, которые не могут даже захватить каждый сценарий.
Используйте реальный мониторинг для реальной видимости
Мы столкнулись во все эти проблемы, в нашей работе разработки и с клиентами HOSS. Будь то потребление ваших собственных микросервисов или сторонних API, наша цель — дать вам Глубокая видимость и лучший опыт клиентов Отказ Следите за производительностью на основе реальных сценариев, а не синтетических испытаний. Вы можете включить оповещения об ошибках и уменьшить количество времени, потраченного отладки ваших интеграций.
Попробуйте Hoss бесплатно И спасите себя головную боль синтетического мониторинга.
Оригинал: «https://dev.to/hoss/why-synthetic-monitoring-and-testing-is-not-enough-2cdp»