Проектирование сценариев отказа с помощью отладочного прокси
Выбирайте правки HTTP, задержки и прерванные обмены в соответствии с поведением клиента, которое должен проверить тест на основе прокси.
Отладочный прокси полезен, когда клиенту нужно встретить ответ, который обычный сервер создаёт редко. Сначала определите поведение клиента, затем выберите вмешательство, создающее это условие.
«Запрос завершился ошибкой» — слишком широкий тестовый случай. Корректный ответ с ошибкой HTTP, ответ, который так и не приходит, и соединение, оборванное на середине загрузки, требуют от приложения разного.
| Случай | Поведение для проверки |
|---|---|
| Полный ответ с ошибкой HTTP | Читает ли клиент статус и применяет ли заданную политику ошибок |
| Задержанный ответ | Может ли пользователь отменить запрос и срабатывает ли тайм-аут на нужном этапе |
| Неожиданное поле заголовка или тела | Завершаются ли разбор и проверка явной ошибкой |
| Прерванный обмен | Остаются ли неполные данные отличимыми от завершённого результата |
Вмешивайтесь на правильном уровне
Charles предоставляет точки останова, которые приостанавливают запрос или ответ перед пересылкой. Перехваченное сообщение можно изучить и изменить, пропустить или прервать. Его инструмент Rewrite применяет повторяемые изменения к подходящим заголовкам, URL или телам. Ограничение полосы управляет пропускной способностью и добавленной задержкой.
Эти средства позволяют проверить поведение HTTP-клиента, но ограничение полосы не является точной моделью случайной потери IP-пакетов. Прокси может буферизовать данные, повторно использовать соединения и открывать отдельное соединение с источником. Выбирайте средство ухудшения сети, когда нужное условие находится именно ниже HTTP.
Сохраняйте каждый случай интерпретируемым
Сопоставляйте нужный хост и путь узко. Начните с обычного обмена, включите одно изменение и запишите, что именно изменено. Если повторная попытка попадает на вторую конечную точку, решите, должно ли то же правило влиять на эту попытку. Иначе безусловное переписывание может превратить каждый путь восстановления в исходный отказ.
При загрузке или операции, похожей на платёж, потерянный ответ не доказывает, что сервер отклонил запрос. Включите эту неоднозначность в случай повторной попытки, а не утверждайте, что любой сбой передачи безопасно повторять.
Проверка или правка содержимого HTTPS требует, чтобы клиент участвовал в настройке проверки TLS отладочного прокси. Прокси, передающий только CONNECT, видит зашифрованные байты приложения. Используйте изолированную тестовую конфигурацию и после этого восстановите её маршрутизацию и настройки доверия, чтобы более поздние наблюдения описывали обычного клиента.