Ответ
Ситуация: При автоматизированном тестировании API обнаружил критическое расхождение между документацией (OpenAPI/Swagger) и реальным поведением сервиса. Документация указывала, что поле status возвращает строку (например, "active"), но в ответах приходил числовой код (например, 1).
Мои действия и решение:
- Верификация: Убедился, что проблема воспроизводится стабильно, а не является ошибкой теста или кэширования.
- Анализ влияния: Проверил, какие клиентские приложения уже используют этот API и как они обрабатывают поле.
- Коммуникация: Создал подробный баг-репорт и организовал обсуждение с разработчиками и архитектором.
- Принятие решения: На основе анализа было принято решение исправить код сервиса, а не документацию, так как:
- Строковый статус был заложен в изначальный контракт API.
- Числовой код не был задокументирован и мог сломать существующих клиентов в будущем.
Пример теста, выявившего проблему:
def test_order_status_field_type():
response = api_client.get('/orders/123')
data = response.json()
# Тест падал, т.к. получал int вместо str
assert isinstance(data['status'], str),
f"Field 'status' must be string, got {type(data['status'])}"
Итог: Решение потребовало правки кода сервиса и повлияло на контракт API, но позволило сохранить согласованность системы и избежать скрытых проблем.