Pergunta de entrevista para Engenheiro de Software

Como você decide o que cobrir com testes unitários versus testes de integração?

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

Resposta rápida

Teste unitariamente lógica com ramificações e casos de borda: regras de precificação, parsing, máquinas de estado. Teste por integração as costuras onde suas premissas encontram a realidade: queries de banco, serialização, middleware de autenticação, clientes de terceiros. Se um teste precisa de cinco mocks para rodar, ele está testando principalmente os seus mocks e o valor está num teste de integração. Mire em muitos testes unitários rápidos mais um conjunto menor de testes de integração cobrindo os caminhos críticos.

Por que os entrevistadores perguntam isso

Isso na verdade é uma pergunta sobre de onde vêm os bugs. O entrevistador quer ver que você testa comportamento em vez de implementação, que você sabe que testes unitários cheios de mock podem passar enquanto a produção quebra, e que você consegue articular uma proporção sem recitar a pirâmide de testes como dogma. Discernimento sobre o que não vale a pena testar é o sinal mais forte aqui.

Como estruturar sua resposta

  • Divida por se o risco é de lógica ou de integração.
  • Aponte o cheiro do teste cheio de mocks.
  • Descreva o formato de suíte que você busca.
  • Diga o que você deliberadamente não testa.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu divido por onde o risco mora. Se o risco é lógica, ramificações, arredondamento, casos de borda numa máquina de estado, isso é teste unitário, e ele deve ser rápido o bastante para eu rodar o arquivo inteiro ao salvar. Se o risco está numa costura, meu SQL de fato retornando o que eu acho que retorna, JSON serializando do jeito que o cliente espera, middleware rejeitando um token expirado, isso é teste de integração com um banco real num container. A heurística que eu uso é contagem de mocks: se eu preciso de quatro mocks para um teste rodar, aquele teste afirma o meu modelo mental daquelas quatro coisas, e o meu modelo mental é exatamente o que está errado quando aquilo quebra em produção. Também tento ser honesto sobre o que eu não testo. Um controller fininho que só repassa, ou um getter, é coberto incidentalmente e testar separado é custo de manutenção sem sinal. A suíte que eu quero é muitos testes unitários rápidos e talvez vinte testes de integração sobre os caminhos onde dinheiro ou autenticação estão envolvidos.

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ê impede testes de integração de ficarem lentos e instáveis?
  • Qual é a sua visão sobre metas de cobertura?
  • Onde testes de contrato se encaixam entre serviços?

Mais perguntas para Engenheiro de Software

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