Pergunta de entrevista para Engenheiro de QA

Como você estrutura uma base de código de automação de UI para que ela não fique impossível de manter?

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

Resposta rápida

Separe as camadas. Page objects ou component objects encapsulam seletores e interações de baixo nível; uma camada de fluxo os compõe em ações de negócio como fazer login ou concluir o checkout; os testes contêm só intenção e asserções. Mantenha os seletores em um único lugar, prefira identificadores dedicados de teste a caminhos CSS frágeis, e mantenha asserções fora dos page objects para que as falhas apontem para a camada certa.

Por que os entrevistadores perguntam isso

Suítes de UI desabam sob o próprio peso quando seletores e lógica ficam espalhados, então entrevistadores querem ver que você trata código de teste como código de produção. As especificidades que eles escutam são um lugar único para os seletores, uma camada de fluxo acima dos page objects e manter as asserções nos testes. Mencionar atributos dedicados de teste em vez de CSS ou XPath frágil é um sinal prático forte.

Como estruturar sua resposta

  • Nomeie as camadas e o que cada uma possui.
  • Coloque todo seletor em um lugar só por página ou componente.
  • Defenda identificadores dedicados de teste no lugar de seletores frágeis.
  • Mantenha as asserções nos testes, não nos page objects.
  • Mencione fazer o setup compartilhado pela API em vez da UI.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu trato código de teste como código de produção, então valem as mesmas regras: sem duplicação, camadas claras, nomes com significado. Embaixo eu tenho page objects ou component objects que são donos dos seletores e da mecânica de interagir com aquele pedaço da UI. Acima disso fica uma camada de fluxo para ações de nível de negócio, tipo fazer login como um usuário com este papel, ou adicionar um item e concluir o checkout, porque essas sequências são reusadas o tempo todo e você não quer elas copiadas e coladas em quarenta testes. Os testes em si passam a ler como o requisito, basicamente chamadas de método e asserções. Eu mantenho asserções fora dos page objects, porque quando um page object faz asserção a falha te diz que uma página está infeliz em vez de qual comportamento quebrou. Sobre seletores, eu insisto bastante em atributos dedicados de teste combinados com os desenvolvedores, porque perseguir caminhos CSS que mudam toda vez que alguém restiliza um componente é o principal motivo de essas suítes serem abandonadas. E eu faço setup pela API sempre que possível: se um teste é sobre checkout, criar a conta e o carrinho por HTTP é mais rápido e muito menos instável do que dirigir doze telas até chegar lá.

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 que page objects virem god objects de mil linhas?
  • O que você faria se os desenvolvedores se recusassem a adicionar identificadores de teste?
  • Como você compartilha o estado de login entre testes sem repetir o fluxo de login?

Mais perguntas para Engenheiro de QA

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