Pergunta de entrevista para Desenvolvedor Backend

Como você testa código que fala com um banco de dados e uma API externa?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Teste contra um banco de dados real num contêiner em vez de mockar a camada de dados, porque a maioria dos bugs vive em queries, migrações e transações que um mock não consegue expressar. Para APIs externas, mocke na fronteira de transporte com respostas HTTP gravadas ou simuladas para que o seu próprio código de cliente seja exercitado, e adicione um pequeno conjunto de testes de contrato contra o serviço real para pegar desvios. Mantenha os testes isolados com transações por teste ou schemas novos.

Por que os entrevistadores perguntam isso

O entrevistador quer saber se os seus testes realmente pegariam uma regressão. Mockar a camada de repositório produz suítes que passam enquanto a produção quebra, então ele presta atenção a teste com banco real, stubs HTTP no nível da fronteira e um plano para detectar quando um terceiro muda algo. Velocidade e isolamento também importam, já que uma suíte lenta ou instável é pulada por mais completa que seja.

Como estruturar sua resposta

  • Enuncie o princípio: mocke na fronteira do processo, não dentro do seu próprio código.
  • Use um banco real num contêiner e explique o isolamento entre testes.
  • Trate APIs de terceiros com transporte simulado mais checagens de contrato.
  • Trate velocidade e instabilidade para que as pessoas continuem rodando a suíte.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Minha regra é mockar na borda do meu processo e não dentro dele. Então o banco é real, rodando num contêiner com o mesmo engine e a mesma versão da produção, e as migrações são aplicadas no início da execução, o que significa que a própria migração é testada toda vez. Cada teste roda numa transação que sofre rollback, ou ganha o próprio schema quando precisa comitar, então os testes ficam isolados e podem rodar em paralelo. Mockar o repositório me daria testes verdes que não provam nada, já que os bugs que eu de fato mando para produção estão em queries, constraints e fronteiras de transação. Para uma API externa eu faço stub na camada HTTP com respostas gravadas, então meu cliente, minha lógica de retry e meu parsing rodam de verdade; eu só não bato na rede. Como gravações ficam desatualizadas, eu também rodo uma suíte pequena de contrato contra o sandbox deles de forma agendada, não em todo pull request, para saber de uma mudança por um job falhando e não por um alerta às três da manhã.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você mantém a suíte rápida depois de adotar um banco real?
  • Como você testa um modo de falha como um timeout dessa API?
  • O que você faz com testes que dependem de tempo ou de ordenação?

Mais perguntas para Desenvolvedor Backend

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot