Спроектируйте полную стратегию тестирования API для платформы записи к врачу с HIPAA-совместимостью, SLA 99.9% и 10,000 конкурентных пользователей.
Покройте: уровни тестов, безопасность, производительность, интеграции и данные.
Проверка знаний
1. Каково основное назначение тестирования производительности API?
Тестирование производительности API измеряет поведение под нагрузкой: throughput (RPS), перцентили латентности (p95, p99) и процент ошибок. Выявляет точки отказа и проверяет соответствие SLA.
2. Какая уязвимость OWASP API позволяет пользователю получить данные другого пользователя, изменив ID объекта в запросе?
BOLA (API1:2023) — самая распространённая уязвимость API. Возникает, когда API не проверяет, имеет ли аутентифицированный пользователь разрешение на доступ к конкретному объекту по ID.
3. В архитектуре микросервисов, что проверяет компонентный тест?
Компонентный тест проверяет один микросервис целиком с заменой внешних зависимостей на test double-ы. Тестирует endpoint-ы, бизнес-логику и работу с данными без необходимости запуска других сервисов.
4. В чём фундаментальное отличие Kafka от RabbitMQ?
RabbitMQ — message broker, удаляющий сообщения после потребления и подтверждения. Kafka — платформа event streaming, сохраняющая сообщения в партициях topic-ов, позволяя воспроизведение.
5. В event-driven архитектуре, почему потребители должны быть идемпотентными?
Распределённые системы обычно используют доставку at-least-once. Потребитель может получить одно событие дважды из-за ретраев или сетевых проблем. Идемпотентная обработка предотвращает дублирование побочных эффектов.
6. Что означает ACID в транзакциях базы данных?
ACID гарантирует: Атомарность (все операции успешны или все откатываются), Согласованность (БД переходит из одного валидного состояния в другое), Изолированность (конкурентные транзакции не мешают), Долговечность (зафиксированные данные переживают сбои).
7. Какая проверка наиболее критична при тестировании миграции данных?
Полнота и точность данных первостепенны. Каждая запись должна быть учтена с корректными трансформациями. Отсутствующие или повреждённые данные в production крайне дорого исправлять.
8. Чем вебхуки отличаются от polling API?
Вебхуки push-based: провайдер отправляет HTTP POST при событиях. Polling pull-based: ваша система многократно спрашивает обновления. Вебхуки эффективнее и имеют меньшую задержку.
9. В consumer-driven contract testing с Pact, что происходит при провале верификации провайдера?
Провалившаяся верификация означает, что развёртывание провайдера сломает потребителя. Нужно исправить ломающее изменение или скоординироваться с потребителем для обновления контракта.
10. Что такое drift документации в контексте тестирования API?
Drift возникает, когда разработчики меняют API без обновления документации. Инструменты вроде Dredd и Schemathesis обнаруживают drift, сравнивая документированные схемы с реальными ответами в CI/CD pipeline-ах.