Ответ вслух Senior gRPC, GraphQL и WebSocket обновлено

Как тестировать gRPC-сервис

Вопрос

Тебе дали gRPC-сервис. Как ты будешь его тестировать?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Начинаю с .proto: это контракт, из него видно методы, сообщения и типы. Вручную вызываю методы через grpcurl или Postman, загрузив .proto или через server reflection, а в автотестах использую клиент, сгенерированный из того же .proto.

Что должно прозвучать в ответе

  • Контракт из .proto: методы, сообщения, обязательность через optional и валидацию

  • Инструменты: grpcurl, Postman, server reflection; в автотестах сгенерированный клиент

  • Проверка gRPC-статусов (INVALID_ARGUMENT, NOT_FOUND, PERMISSION_DENIED), а не HTTP-кодов

  • Значения по умолчанию в proto3 и обратная совместимость при изменении .proto

  • Потоки, дедлайны, метаданные с авторизацией, обрывы соединения

Что могут спросить следом

  • Почему нельзя менять номер поля в .proto?
  • Как передать токен в gRPC-запросе?
  • Как проверить совместимость старого клиента с новым сервером?

Разбор

Начинаю с .proto: это контракт, из него видно методы, сообщения и типы. Вручную вызываю методы через grpcurl или Postman, загрузив .proto или через server reflection, а в автотестах использую клиент, сгенерированный из того же .proto. Проверяю не HTTP-коды, а gRPC-статусы: на мусорный ввод INVALID_ARGUMENT, на чужой объект PERMISSION_DENIED или NOT_FOUND, без токена UNAUTHENTICATED. Токен передаётся в метаданных, аналоге заголовков. Отдельная тема proto3: ноль, пустая строка и false не передаются, и сервер не отличит их от отсутствия поля, поэтому проверяю сценарии вроде «обнулить скидку». Совместимость: номера полей менять и переиспользовать нельзя, старый клиент должен работать с новым сервером, это проверяю прогоном старого клиента. Для потоков проверяю обрыв посередине, дедлайны с DEADLINE_EXCEEDED и что сервер прекращает работу по отменённому вызову.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.