O que o testador de back-end deve saber



Muitas vezes me perguntam sobre o que ler antes de entrevistar para a posição de testador de back-end. E no meu trabalho, me deparo com o fato de que muitos candidatos nem sempre entendem o que acontecerá na entrevista e ficam despreparados. Então surgiu a ideia de coletar informações úteis em um artigo.

O FunCorp tem uma lista de tópicos com perguntas que fazemos aos candidatos. Decidi complementá-lo, torná-lo mais universal, dividir cada tópico em níveis (o que você precisa saber e o que será uma vantagem) e adicionar links a artigos e livros que podem ser lidos sobre esses tópicos.

Quais problemas esse texto ajuda a resolver: candidato - prepare-se para uma entrevista, qualquer testador de back-end - atualize conhecimentos, testador de front-end ou testador de aplicativo móvel - amplie seus horizontes. Os empregadores podem usar a lista para criar requisitos de trabalho.

Conhecimento necessário


Farei um comentário imediatamente: o conhecimento e as habilidades necessárias dependem das especificidades da vaga. Se a vaga é sobre testar a API em que o HTTP é usado, você precisa conhecer muito bem o HTTP e não precisa conhecer as nuances do sistema operacional. Se você trabalha com Windows, não precisa conhecer o bash.

Também quero apelar para os empregadores: não pergunte sobre o gerenciamento de memória no Linux como candidato ao cargo de Engenheiro de controle de qualidade móvel, é improvável que isso seja útil para ele em seu trabalho.
Não mencionei linguagens de programação porque depende muito da pilha usada. Mas, muitas vezes, não lhes perguntam nada sobre eles nas entrevistas dos testadores (caso contrário, indicam o nível necessário de conhecimento do idioma na descrição do trabalho).

Em muitos tópicos, fornecerei links, inclusive para a Wikipedia. Sim, embora essa não seja a fonte de informação da mais alta qualidade, no entanto, acredito que ela é bastante adequada para um estudo superficial do tópico ou para um conhecimento renovador e é boa porque em qualquer artigo há muitos links para outros artigos em uma área de assunto específica. De qualquer forma, forneço links para outros artigos e livros, para que todos possam escolher a fonte de informações apropriada.

Teoria de teste


Começarei, talvez, com o mais óbvio, mas não o mais inequívoco: alguns líderes de equipe podem orientá-lo em todos os termos e conceitos da entrevista, outros não pedirão nada.

O que é esperado de qualquer candidato


Conhecimento de termos básicos, técnicas de design de teste, capacidade de escrever um relatório de bug de qualidade.

O que sugere que o candidato conhece bem o tópico


Formalmente, esses são certificados ISTQB.

O que ler sobre o tópico


Há um bom artigo sobre Habré com todas as informações necessárias. Se você deseja entender a teoria dos testes com mais detalhes, pode ler os materiais do ISTQB .

Concha


Dependendo do sistema operacional, é necessário conhecer o bash (sh, zsh etc.), mas é improvável que as nuances tenham um papel significativo) ou o CMD e o PowerShell.

O que é esperado de qualquer candidato


Conhecimento de comandos básicos.

O que sugere que o candidato conhece bem o tópico


O candidato conhece muitos comandos, várias opções para eles, suas vantagens e desvantagens, várias maneiras de usá-los, bem como ferramentas para problemas de depuração, por exemplo, strace , tcpdump , gdb e outros.

O que ler sobre o tópico


Você pode ler sobre os principais comandos no Linux em um dos meus artigos anteriores , e também há um repositório muito interessante com vários exemplos no GitHub . Pelos livros, aconselho o “Sistema Operacional UNIX” de Robachevsky, Nemnyugin e Stesik - não é apenas sobre equipes, mas sobre o sistema como um todo.
Você pode ler sobre os comandos do CMD aqui , mas o PowerShell possui uma boa documentação .

HTTP (ou os protocolos especificados na descrição do trabalho)


Muitas vezes, o HTTP é escolhido como o principal protocolo para a arquitetura cliente-servidor, portanto, eles costumam perguntar sobre esse protocolo. No entanto, pode ser necessário conhecer IMAP, POP3, SMTP (se você estiver testando correio), Protobuf ou MessagePack ou outros protocolos. 

O que é esperado de qualquer candidato


Tudo depende da prevalência do protocolo. É improvável que eles ofereçam um despejo de tráfego binário e solicitem desserialização em um pedaço de papel da Protobuf, mas se estamos falando sobre HTTP, é necessário conhecê-lo em um bom nível: a estrutura da solicitação e resposta, os principais cabeçalhos, métodos, códigos de resposta, HTTPS.

O que sugere que o candidato conhece bem o tópico


O candidato pode responder perguntas sobre armazenamento em cache, compactação de dados, cookies e o uso de vários cabeçalhos no HTTP. Para outros protocolos, tudo é mais subjetivo.

O que ler sobre o tópico


Sobre o HTTP, todas as informações necessárias estão na Wikipedia . Para outros protocolos, aconselho que você leia a documentação e as especificações. Também não se esqueça do HTTPS . Bem, é claro, você deve sempre ter ao seu alcance links para o RFC 2616 e o RFC 7540 (mas existem outras especificações ).

Protocolos de rede de camada inferior


Muitos candidatos não têm idéia do que está sob HTTP. Acredito que isso não os caracterize muito bem, porque o testador deve ter uma mente curiosa e uma curiosidade moderada, portanto, certamente preciso saber em termos gerais sobre o modelo de rede OSI.

O que é esperado de qualquer candidato


O candidato deve saber que existem protocolos TCP, UDP e IP e entender sua essência.

O que sugere que o candidato conhece bem o tópico


Entendendo o mecanismo de operação do protocolo TCP (handshake de três vias, alguns campos do cabeçalho, sinalizadores, uma janela deslizante), o candidato pode nomear as desvantagens e vantagens do TCP e UDP, suas áreas de aplicação, conhecimentos gerais sobre IP. Vai ser legal se o candidato falar em poucas palavras sobre outros protocolos (por exemplo, ARP, ICMP, ICMPv6).

O que ler sobre o tópico


O conhecimento básico pode ser obtido nos artigos da Wikipedia: modelo de rede OSI , TCP , UDP , IP , IPv6 , ICMP , ARP , ICMPv6 . Se você quiser mergulhar neste tópico, poderá ler “Redes de Computadores”, de Tanenbaum.

Base de dados


O que é esperado de qualquer candidato


Consultas SQL básicas (a JOIN favorita de todos).

O que sugere que o candidato conhece bem o tópico


Conhecimento geral de diferentes DBMSs, replicação, sharding, estrutura interna de um DBMS, conhecimento geral de bancos de dados não relacionais.

O que ler sobre o tópico


Em termos gerais, sobre bancos de dados pode ser encontrado na documentação de um DBMS específico. Se você deseja lidar com bancos de dados em detalhes, recomendo os capítulos correspondentes dos "Aplicativos Altamente Carregados " de Kleppman.

OOP


O que é esperado de qualquer candidato


Conhecimento dos princípios básicos da OOP.

O que sugere que o candidato conhece bem o tópico


Vai ser legal se o candidato conhece alguns padrões.

O que ler sobre o tópico


Você pode ler sobre princípios, por exemplo, aqui , sobre padrões - aqui . Há também um livro interessante “Técnicas de programação orientada a objetos. Padrões de design "quadrilha de quatro".

Sistemas operacionais


O que é esperado de qualquer candidato


Para a maioria das vagas de testadores, o conhecimento das nuances dos sistemas operacionais não é relevante.

O que sugere que o candidato conhece bem o tópico


Vai ser legal se o candidato souber sobre gerenciamento de memória, kernel e pilha, criação de novos processos e seu agendamento, sistemas de arquivos e muito mais.

O que ler sobre o tópico


Resumidamente, você pode ler o livro já mencionado "Sistema Operacional UNIX", de Robachevsky, Nemnyugin e Stesik. Se o tópico for de interesse, você poderá se aprofundar nele, por exemplo, "Sistemas operacionais modernos" Tanenbaum. Em geral, você pode se familiarizar com o tópico usando a Wikipedia: há artigos sobre o kernel do Linux , memória virtual , mudança de contexto e outros.

Arquitetura de computadores


O que é esperado de qualquer candidato


Para a maioria das vagas de testadores, o conhecimento das nuances dos processadores, memória e periféricos não é relevante.

O que sugere que o candidato conhece bem o tópico


Será ótimo se o candidato souber, em termos gerais, sobre o processador, registros, caches, memória e disco e assim por diante.

O que ler sobre o tópico


Você pode se familiarizar superficialmente com o hardware usando a Wikipedia: CPU , modo de processador , microarquitetura (há muitos links para outros artigos relacionados neste artigo), cache , ALU , pipeline , preditor de ramificação , superescalabilidade etc. Este tópico pode ser estudado de forma mais holística e profunda, por exemplo, usando o livro “ Computer Architecture” de Tanenbaum.

Algoritmos e estruturas de dados


Provavelmente, eles não farão perguntas sobre algoritmos e estruturas de dados (especialmente se a posição não estiver no nível Estagiário ou Júnior), mas você ainda precisa saber algumas coisas comuns. Pessoalmente, fui perguntado apenas uma vez sobre a pilha binária em uma entrevista; eu também não sou fã de perguntar aos candidatos sobre isso. Portanto, não apresentarei nenhum critério e anexarei apenas um artigo com boas fotos . Você pode imprimi-los e colocá-los em um lugar de destaque. Se você quiser mergulhar em algoritmos e estruturas de dados com a cabeça, sinta-se à vontade para começar a ler “Algoritmos. Guia de Desenvolvimento ” Skien ou “ Algoritmos. Construção e análise ” Cormen.

De outros


  1. Muitos onde o Docker é usado .
  2. (« »).
  3. REST SOAP.
  4. JSON XML.
  5. Protocol Buffers, MessagePack BSON.
  6. TLS.
  7. Git ( VCS).
  8. Nginx Apache.
  9. .
  10. TeamCity Jenkins ( CI-).



, google.com Enter?


Uma tarefa clássica com a qual você pode verificar até que ponto um candidato entende as tecnologias da web em geral. Há uma análise detalhada dessa tarefa em Habré, mas não recomendo a leitura das nuances do tipo "uma pequena quantidade de corrente é enviada através do diagrama de fiação do teclado".

Testando um formulário com um botão


Sim, essa tarefa é frequentemente solicitada na entrevista de testadores de back-end. A tarefa é clássica, por isso será legal se o candidato fantasiar um pouco e imaginar o que poderia estar por trás desse botão com um botão. Por exemplo, podemos assumir que os dados deixam o formulário para um back-end composto por vários servidores e um banco de dados, que o back-end grava logs e tem uma configuração - isso adiciona imediatamente muitos casos de teste de um nível mais profundo do que "insira um valor muito longo no campo de entrada" . Por exemplo, você pode usar o tcpdump para ver se o tráfego vai para todos os servidores de back-end exatamente; você pode tentar enviar injeção de SQL ou JSON quebrado (naturalmente, se de repente o JSON estiver no contexto da tarefa); você pode verificar o que acontece se os logs ocuparem todo o espaço livre no disco; você pode verificar o sistema quandoum back-end seguro , a correção de adicionar dados ao banco de dados etc. Assim, o candidato mostrará seus amplos horizontes, o que sem dúvida o beneficiará.

Teste de serviço


Uma variação da tarefa anterior: por exemplo, há um serviço que escuta na porta e recebe JSON como entrada, responde no mesmo formato. Tudo é semelhante, só que não há estanho, então você não precisa ter medo disso. Nós nos conectamos à porta usando telnet e, em seguida, tudo é o mesmo.

Teste de terminal da API REST


E, novamente, tudo é o mesmo, apenas com HTTP (provavelmente). Aqui você pode demonstrar o conhecimento do protocolo HTTP: por exemplo, verifique a operação do serviço se houver vários cabeçalhos na solicitação.

Obviamente, você não pode compilar um manual de treinamento universal para preparar um testador de back-end do zero: tudo depende das especificidades da empresa, das especificidades do departamento e do líder da equipe. E a tecnologia não pára: até recentemente, o Docker não era usado ativamente, e agora a experiência com ele pode ser uma grande vantagem. No entanto, tentei coletar as coisas básicas em um só lugar e, se isso ajudar a preparar e encontrar trabalho para pelo menos uma pessoa, escrevi este artigo por um bom motivo.

PS: Recomendo também a leitura do artigo de meu colega "A imagem de um testador moderno". O que você precisa saber e poder ”, descreve várias instruções de desenvolvimento para testadores.

All Articles