sdet interview questions
Leia este guia completo para Engenheiro de Desenvolvimento de Software em Entrevistas de Teste para saber o formato e como responder às Perguntas da Entrevista SDET feitas nas várias rodadas:
Neste tutorial, aprenderemos sobre algumas perguntas de entrevista comuns para as funções SDET. Veremos também, de forma geral, o padrão comum das entrevistas e compartilharemos algumas dicas para se destacar nas entrevistas.
Estaremos usando a linguagem Java para os problemas de codificação deste tutorial, no entanto, a maioria dos tutoriais SDET são agnósticos de linguagem e os entrevistadores são geralmente flexíveis em torno da linguagem que o candidato escolhe usar.
O que você aprenderá:
Guia de preparação para entrevista SDET
As entrevistas SDET, na maioria das empresas de produtos principais, são bastante semelhantes à forma como as entrevistas são conduzidas para funções de desenvolvimento. Isso ocorre porque também se espera que os SDETs conheçam e entendam amplamente quase tudo o que o desenvolvedor sabe.
O que difere são os critérios pelos quais o entrevistado da SDET é julgado. Os entrevistadores para essa função buscam habilidades de pensamento crítico, bem como se a pessoa que está sendo entrevistada tem experiência prática em codificação e tem olho para qualidade e detalhes.
Aqui estão alguns pontos nos quais alguém que se prepara para uma entrevista SDET deve focar:
como escrever casos de teste para aplicação web
- Visto que, na maioria das vezes, essas entrevistas são agnósticas de tecnologia / idioma, portanto, os candidatos devem estar dispostos a aprender novas tecnologias (e aproveitar as habilidades existentes) como e quando necessário.
- Deve ter boa comunicação e habilidades de equipe, pois as funções SDET nos dias de hoje requerem comunicação e colaboração em vários níveis com várias partes interessadas.
- Deve ter uma compreensão básica dos diferentes conceitos de design de sistema, escalabilidade, simultaneidade, requisitos não funcionais, etc.
Nas seções abaixo, tentaremos entender o formato geral da entrevista junto com alguns exemplos de perguntas.
Formato do engenheiro de desenvolvimento de software na entrevista de teste
A maioria das empresas tem seu formato preferido de entrevistar candidatos para uma função SDET, pois às vezes a função é superespecífica para uma equipe e espera-se que a pessoa seja avaliada como um ajuste perfeito para a equipe para a qual a pessoa está sendo contratada.
Mas, o tema das entrevistas é geralmente baseado nos pontos abaixo:
- Discussão telefônica: Conversa com o gerente e / ou membros da equipe, que geralmente é uma rodada de triagem.
- Rodada escrita: Com perguntas específicas de teste / caso de teste.
- Rodada de proficiência em codificação: Perguntas simples de codificação (agnóstico de linguagem) e o candidato é solicitado a escrever o código de nível de produção.
- Compreensão dos conceitos básicos de desenvolvimento: Como os conceitos OOPS, os princípios SOLID, etc.
- Projeto e desenvolvimento da estrutura de automação de teste
- Linguagens de script: Selenium, Python, Javascript, etc
- Culture Fit / Discussão e negociações de RH
Perguntas e respostas da entrevista SDET
Nesta seção, discutiremos alguns exemplos de perguntas junto com respostas detalhadas, para diferentes categorias que são feitas pela maioria das empresas de produtos que contratam para funções SDET.
Proficiência em codificação
Nesta rodada, problemas simples de codificação são fornecidos para escrever no idioma de escolha. Aqui, o entrevistador deseja avaliar a proficiência com construções de codificação, bem como lidar com coisas como cenários de borda e verificações de nulos, etc.
Ocasionalmente, os entrevistadores também podem pedir para escrever testes de unidade para o programa escrito.
Vamos ver alguns exemplos de problemas.
Q # 1) Escreva um programa para trocar 2 números sem usar a terceira variável (temporária)?
Responda :
Programa para trocar dois números:
public class SwapNos { public static void main(String() args) { System.out.println('Calling swap function with inputs 2 & 3'); swap(2,3); System.out.println('Calling swap function with inputs -3 & 5'); swap(-3,5); } private static void swap(int x, int y) { System.out.println('values before swap:' + x + ' and ' + y); // swap logic x = x + y; y = x - y; x = x - y; System.out.println('values after swap:' + x + ' and ' + y); } }
Esta é a saída do snippet de código acima:
No trecho de código acima, é importante notar que, o entrevistador pediu especificamente para trocar 2 nos sem usar uma terceira variável temporária. Além disso, é importante que antes de enviar a solução, é sempre recomendado passar (ou testar) o código para pelo menos 2-3 entradas. Vamos tentar valores positivos e negativos.
Valores positivos: X = 2, Y = 3
// swap logic - x=2, y=3 x = x + y; => x=5 y = x - y; => y=2 x = x - y; => x=3 x & y swapped (x=3, y=2)
Valores negativos: X = -3, Y = 5
// swap logic - x=-3, y=5 x = x + y; => x=2 y = x - y; => y=-3 x = x - y; => x=5 x & y swapped (x=5 & y=-3)
Q # 2) Escreva um programa para reverter um número?
Responda: Agora, a declaração do problema pode inicialmente parecer intimidante, mas é sempre aconselhável pedir para esclarecer as perguntas ao entrevistador (mas não muitos detalhes). Os entrevistadores podem optar por fornecer dicas sobre o problema, mas se o candidato fizer muitas perguntas, isso também indicará que o candidato não está dando tempo suficiente para entender bem o problema.
Aqui, o problema espera que o candidato também faça algumas suposições - por exemplo, o número pode ser um inteiro. Se a entrada for 345, então a saída deve ser 543 (que é o reverso de 345)
Vamos ver o snippet de código para esta solução:
public class ReverseNumber { public static void main(String() args) { int num = 10025; System.out.println('Input - ' + num + ' Output:' + reverseNo(num)); } public static int reverseNo(int number) { int reversed = 0; while(number != 0) { int digit = number % 10; reversed = reversed * 10 + digit; number /= 10; } return reversed; } }
Saída para este programa contra entrada : 10025 - O esperado seria : 52001
Q # 3) Escreva um programa para calcular o fatorial de um número?
Responda: Fatorial é uma das perguntas mais comuns em quase todas as entrevistas (incluindo as entrevistas do desenvolvedor)
Para entrevistas com desenvolvedores, mais foco está em conceitos de programação como programação dinâmica, recursão, etc, enquanto do Engenheiro de Desenvolvimento de Software na perspectiva de Teste, é importante lidar com os cenários de borda como valores máximos, valores mínimos, valores negativos, etc. e abordagem / eficiência são importantes, mas se tornam secundários.
Vamos ver um programa para fatorial usando recursão e loop for com o tratamento de números negativos e retornando um valor fixo de, digamos, -9999 para números negativos, que devem ser tratados no programa que chama a função fatorial.
Consulte o snippet de código abaixo:
public class Factorial { public static void main(String() args) { System.out.println('Factorial of 5 using loop is:' + factorialWithLoop(5)); System.out.println('Factorial of 10 using recursion is:' + factorialWithRecursion(10)); System.out.println('Factorial of negative number -100 is:' + factorialWithLoop(-100)); } public static long factorialWithLoop(int n) { if(n <0) { System.out.println('Negative nos can't have factorial'); return -9999; } long fact = 1; for (int i = 2; i <= n; i++) { fact = fact * i; } return fact; } public static long factorialWithRecursion(int n) { if(n < 0) { System.out.println('Negative nos can't have factorial'); return -9999; } if (n <= 2) { return n; } return n * factorialWithRecursion(n - 1); } }
Vamos ver a saída para - fatorial usando o loop, fatorial usando recursão e fatorial de um número negativo (que retornaria um valor de conjunto padrão de -9999)
Q # 4) Escreva um programa para verificar se uma determinada string tem parênteses equilibrados.
Responda:
Aproximação - Este é um problema um pouco complexo, onde o entrevistador está procurando um pouco mais do que apenas conhecimento de construções de codificação. Aqui, a expectativa é pensar e usar a estrutura de dados do apt para o problema em questão.
Muitos de vocês podem se sentir intimidados por esses tipos de problemas, pois alguns de vocês podem não ter ouvido falar deles e, portanto, mesmo que sejam simples, podem parecer complexos.
Mas geralmente para esses problemas / perguntas: Por exemplo, na pergunta atual, se você não sabe o que são parênteses equilibrados, pode muito bem perguntar ao entrevistador e, em seguida, trabalhar para a solução em vez de atingir um ponto cego.
Vamos ver como chegar a uma solução: Depois de entender o que são parênteses equilibrados, você pode pensar em como usar a estrutura de dados certa e então começar a escrever algoritmos (etapas) antes de começar a codificar a solução. Muitas vezes, os próprios algoritmos resolvem muitos cenários de borda e fornecem muita clareza sobre como será a solução.
Vejamos a solução:
Parênteses balanceados são para verificar se uma determinada string contém parênteses (ou colchetes), deve ter abertura e fechamento iguais, bem como bem estruturada posicionalmente. Para o contexto deste problema, usaremos parênteses equilibrados como - ‘()’, ‘()’, ‘{}’ - ou seja, a string dada pode ter qualquer combinação desses colchetes.
Observe que antes de tentar resolver o problema, é bom esclarecer se a string conterá apenas os caracteres de colchetes ou quaisquer números, etc (pois isso pode mudar um pouco a lógica)
Exemplo: Uma dada string - '{() {} ()} - é uma string balanceada porque é estruturada e não tem parênteses de fechamento e abertura, mas string -' {(}) {} () '- esta string - mesmo que tem um número igual de parênteses de abertura e fechamento, isso ainda não está equilibrado porque você pode ver que sem um fechamento '(' fechamos '}' (ou seja, todos os colchetes devem ser fechados antes de fechar um colchete externo)
Estaremos usando uma estrutura de pilha de dados para resolver este problema. Se você quiser saber mais sobre os fundamentos da pilha, consulte Aqui
Uma pilha é um LIFO (tipo de estrutura de dados Last In First Out), pense nela como uma pilha / pilha de pratos em um casamento - você pegará o prato de cima sempre que o estiver usando.
Algoritmo:
# 1) Declare uma pilha de caracteres (que conteria os caracteres na string e, dependendo de alguma lógica, empurre e retire os caracteres).
# 2) Percorra a string de entrada e sempre que
- Há um caractere de colchete de abertura - ou seja, ‘(‘, {‘ou‘ (‘- empurre o caractere na pilha
- Há um caractere de fechamento - ou seja, ')', '}', ')' - pop um elemento da pilha e verifique se ele corresponde ao oposto do caractere de fechamento - ou seja, se o caractere é '}', então no pop da pilha você deve esperar ' {'
- Se o elemento exibido não corresponder aos parênteses de fechamento, a string não será balanceada e você poderá retornar resultados.
- Caso contrário, continue com a abordagem de empilhamento e pop (vá para a etapa 2).
- Se a string é percorrida completamente e o tamanho da pilha também é zero, podemos dizer / inferir que a string fornecida é uma string de parênteses balanceada.
Neste ponto, você também pode querer discutir a abordagem da solução que você tem como um algoritmo e garantir que o entrevistador está de acordo com a abordagem.
Código:
import java.util.Stack; public class BalancedParanthesis { public static void main(String() args) { final String input1 = '{()}'; System.out.println('Checking balanced paranthesis for input:' + input1); if (isBalanced(input1)) { System.out.println('Given String is balanced'); } else { System.out.println('Given String is not balanced'); } } /** * function to check if a string has balanced parentheses or not * @param input_string the input string * @return if the string has balanced parentheses or not */ private static boolean isBalanced(String input_string) { Stack stack = new Stack(); for (int i = 0; i A saída do snippet de código acima:

Como fizemos para nossos problemas de codificação anteriores, é sempre bom executar o código com pelo menos 1-2 entradas válidas, bem como 1-2 entradas inválidas e garantir que todos os casos sejam tratados adequadamente.
NOTA: É sempre bom pensar na solução em voz alta (e não apenas dentro da mente) - e, surpreendentemente, essa é uma característica importante que os entrevistadores procuram. Muitos entrevistadores poderiam simplesmente abandonar o algoritmo e passar para a próxima definição do problema.
Na solução de codificação acima, para a entrevista do desenvolvedor, o entrevistador pode pedir para resolvê-lo usando arrays em vez de empilhar diretamente (ou seja, usando array como uma pilha), mas em geral, é mais sobre ser conceitualmente claro e capaz de lidar com todos os entradas inválidas.
Relacionado à estrutura de automação de teste
Esta seção da entrevista é mais específica sobre o teste e as responsabilidades do SDET. Conte com o design da estrutura de automação e questões relacionadas ao desenvolvimento, prós e contras do uso de diferentes abordagens, etc.
Vamos ver alguns exemplos de perguntas e soluções para o mesmo.
P # 5) Explicar e projetar componentes da estrutura de automação para um aplicativo da web?
Responda: Esta questão é um pouco subjetiva, e o entrevistador pretende avaliar o quanto o candidato sabe sobre o design e desenvolvimento do framework. A resposta a esta pergunta ajuda o entrevistador a entender se o candidato pode construir ou criar estruturas customizadas do zero.
Vejamos alguns pontos que o ajudariam a estruturar a solução para esta questão:
- Você pode falar sobre diferentes tipos de estruturas, como - Orientado por dados, Orientado por palavras-chave, Estrutura híbrida.
- Modelo de objeto de página para armazenar detalhes de vários elementos em diferentes páginas / módulos do aplicativo da web.
- Módulos comuns, como funções auxiliares, utilitários, registradores, etc.
- Módulos de relatórios, como geração de relatórios de execução de teste, integração de relatórios com e-mail e programação de execução de teste, etc.
Leitura Recomendada => Frameworks de automação de teste mais populares
P # 6) Explicar estratégias de teste para um aplicativo móvel?
Responda: Essas perguntas geralmente são feitas dependendo da função. Se a função é principalmente trabalhar em aplicativos móveis, a questão é mais relevante. Você pode falar com sua experiência se tiver planejado o teste móvel como parte de suas funções atuais ou anteriores.
Algumas dicas para estruturar a resposta a esta pergunta podem ser,
- Testando em dispositivos vs emuladores.
- Identificar e armazenar objetos / elementos em telas diferentes - Exemplo: Modelo de objeto de página.
- Teste de carga de um aplicativo móvel.
- Você pode falar sobre diferentes tipos de aplicativos móveis como - aplicativos nativos, aplicativos híbridos e discutir estratégias / abordagens que você usaria para testá-los.
Leitura Recomendada => Tutoriais de teste de aplicativos móveis
P # 7) Projetar uma estrutura de automação para testar APIs REST?
Responda: Esta é novamente uma pergunta subjetiva e você pode fazer perguntas esclarecedoras se o entrevistador deseja que você desenvolva uma estrutura para testar o comportamento funcional da API ou requisitos não funcionais como teste de carga / desempenho.
Você pode começar sua resposta cobrindo os pontos abaixo:
- Componentes da estrutura de automação de API, como configuração local, configuração simulada de API ou teste de API hospedada.
- Ferramentas usadas para API Automation. Existem várias ferramentas prontas para usar para validar os aspectos funcionais de uma API baseada em REST. Algumas dessas ferramentas são Postman, Rest Assured, etc. Para obter detalhes detalhados de diferentes ferramentas, você pode consultar nosso artigo Aqui .
- Automação não funcional das APIs.
- Execução programada de testes de automação.
- Integrando testes de automação para APIs.
Q # 8) Questões específicas do framework.
Responda: Às vezes, dependendo do perfil que está sendo entrevistado, pode ser necessário que o candidato seja proficiente em uma determinada estrutura - por exemplo, Selênio, JMeter, etc.
Leitura Recomendada => Carteiro , Mockito , Specflow , Selênio , JMeter
Relacionado a Testes
Embora raramente, mas dependendo do perfil, pode haver perguntas sobre práticas gerais de teste, termos e tecnologias - como gravidade do bug, prioridade, planejamento de teste, caso de teste, etc. Um SDET deve conhecer todos os conceitos de teste manual e deve ser familiar com as terminologias importantes.
Nesta seção, você pode esperar perguntas como estas:
P # 9) Quais são os diferentes componentes de um plano de teste?
Responda: Geralmente, eles são solicitados a validar os conceitos básicos de teste e a mentalidade. Esses termos e documentos são algo que todo QA manual, bem como SDETs de automação, deve saber.
Você pode discutir vários componentes do plano de teste aqui, como,
- Critérios de entrada e saída
- Escopo: Discuta os recursos de teste que estão no escopo e o que todos seriam automatizados - serão apenas recursos funcionais ou requisitos não funcionais, como escalabilidade, desempenho, etc.
- Linhas do tempo
- Ferramentas a serem usadas
- Alocação de recursos, etc
Leitura Recomendada => Como escrever um bom plano de teste
P # 10) O que define e decide a prioridade e gravidade de um bug?
Responda: A prioridade e a gravidade do defeito podem ser facilmente explicadas com a ajuda de exemplos. Suponha que um recurso como inscrição esteja quebrado e esteja impedindo os usuários de acessar o aplicativo - então, é um problema de alta prioridade e severidade. Da mesma forma, pode haver exemplos de defeitos de Baixa Severidade / Alta Prioridade e várias outras combinações.
No geral,
- Prioridade significa a importância da questão.
- Gravidade significa o impacto que o problema está tendo para o cliente ou usuário do aplicativo.
Leitura Recomendada => Prioridade e gravidade do defeito
Q # 11) O que é particionamento de equivalência? Ilustre com um exemplo.
Responda: O particionamento de equivalência é uma técnica usada principalmente para testes de caixa preta, para testar várias combinações de entradas em um determinado campo.
Por exemplo, se você estiver testando um aplicativo de negociação e quiser gravar todos os cenários de teste para o campo “Quantidade” - quais seriam as diferentes entradas que você testaria para este campo?
Dado que o requisito funcional é a quantidade deve ser um valor inteiro positivo entre 1 e 100000. Portanto, para testar várias entradas (válidas e inválidas), você pode ter testes para 1 entrada de cada categoria.
- Valores válidos: Entre 1 e 100.000 -> teste para qualquer valor válido x tal que x> 1 e x<100000.
- Valores limite: Teste os valores limites permitidos, ou seja, 1 e 100000.
- Valores inválidos: Valores que estão fora do intervalo permitido - ou seja, teste um desses valores para x, de modo que x 100000.
Leitura Recomendada => Estratégia de particionamento de equivalência
Relacionado ao Design do Sistema
As questões de design do sistema são normalmente mais adequadas para entrevistas com desenvolvedores, onde um desenvolvedor é julgado por uma ampla compreensão de diferentes conceitos gerais - como escalabilidade, disponibilidade, tolerância a falhas, seleção de banco de dados, segmentação, etc. Em suma, você precisará usar todo o seu experiência e conhecimento de sistemas para responder a essas perguntas.
Mas você pode estar sentindo que um sistema que leva anos de experiência e centenas de desenvolvedores para codificar, como uma pessoa poderia responder à pergunta em cerca de 45 minutos?
A resposta é: Aqui, a expectativa é julgar a compreensão do candidato e o amplo espectro de conhecimento que ele ou ela pode aplicar enquanto resolve problemas complexos.
Hoje em dia, essas questões estão começando a ser lançadas nas entrevistas da SDET também. Aqui, a expectativa permanece a mesma da entrevista do desenvolvedor, mas com critérios de julgamento relaxados e é principalmente uma rodada de levantamento de bar onde, dependendo da resposta do candidato, um candidato pode ser considerado para o próximo nível ou movido para um nível inferior.
Em geral, para perguntas de entrevista de design de sistema, o candidato deve estar familiarizado com os conceitos abaixo
- Noções básicas de sistemas operacionais: Paginação, sistemas de arquivos, memória virtual e memória física, etc.
- Conceitos de rede: Comunicação HTTP, pilha TCP / IP, topologias de rede.
- Conceitos de escalabilidade: Escala horizontal e vertical.
- Conceitos de simultaneidade / threading
- Tipos de banco de dados: SQL / Sem bancos de dados SQL, quando usar que tipo de banco de dados, vantagens e desvantagens dos diferentes tipos de banco de dados.
- Técnicas de hash
- Compreensão básica de BONÉ teorema, fragmentação, particionamento, etc.
Vamos ver alguns exemplos de perguntas
Q # 12) Projete um sistema de encurtamento de URL como um URL minúsculo ?
Responda: Muitos candidatos podem nem saber sobre os sistemas de encurtamento de URL em geral. Nesse caso, não há problema em perguntar ao entrevistador sobre a definição do problema em vez de mergulhar sem entender.
Antes mesmo de responder a essas perguntas, os candidatos devem estruturar a solução e escrever pontos e, em seguida, começar a discutir a solução com o entrevistador.
Vamos discutir a solução em breve
a) Esclarecer os requisitos funcionais e não funcionais
Requisitos funcionais: O requisito funcional é simplesmente da perspectiva do cliente, é um sistema que é alimentado com uma grande (longa) URL e a saída deve ser uma URL encurtada.
Quando o URL encurtado é acessado, ele deve redirecionar o usuário para o URL original. Por exemplo - tente encurtar um URL real em https://tinyurl.com/ página da web, insira um URL de entrada como www.softwaretestinghelp.com e você deverá obter um URL minúsculo como https://tinyurl.com/shclcqa
Requisitos não Funcionais: O sistema deve ter desempenho em termos de redirecionamento com latência de milissegundos (já que é um salto adicional para um usuário acessando o URL original).
- Os URLs encurtados devem ter um tempo de expiração configurável.
- URLs encurtados não devem ser previsíveis.
b) Capacidade / Estimativa de tráfego
Isso é muito importante do ponto de vista de todas as questões de design do sistema. A estimativa de capacidade está essencialmente determinando a carga esperada que o sistema receberá. É sempre bom começar com uma suposição e discutir com o entrevistador. Isso também é importante do ponto de vista do planejamento do dimensionamento do banco de dados, se o sistema é pesado para leitura ou gravação etc.
Vamos fazer alguns números de capacidade para o exemplo do encurtador de URL.
Suponha que haverá 100 mil novas solicitações de redução de URL por dia (com proporção de leitura / gravação de 100: 1 - ou seja, para cada 1 URL encurtado, teremos 100 solicitações de leitura em relação ao URL encurtado)
Então teremos,
100k write requests/day => 100000/(24x60x60) => 1.15 request/second 10000k read requests/day => 10000000/(24x60x60) => 1157 requests/second
c) Considerações sobre armazenamento e memória
Após os números de capacidade, podemos extrapolar esses números para obter,
- A capacidade de armazenamento que seria necessária para acomodar a carga esperada, Por exemplo, podemos planejar o projeto de uma solução de armazenamento para atender às solicitações de até 1 ano.
Exemplo: Se cada URL encurtado consumir 50 bytes, o total de dados / armazenamento que exigiríamos em um ano seria:
=> total write requests/day x 365 x 50 / (1024x1024) => 1740 MB
- As considerações de memória são importantes para planejar o sistema da perspectiva do leitor. ou seja, para sistemas de leitura pesada - como o que estamos tentando construir (porque a URL seria criada uma vez, mas acessada várias vezes).
Os sistemas pesados de leitura geralmente usam o cache para se tornarem mais eficientes e evitar a leitura do armazenamento permanente para economizar na E / S de leitura.
Vamos supor que queremos armazenar 60% de nossas solicitações de leitura no cache, então, ao longo do ano, precisaríamos de 60% do total de leituras no ano x bytes exigidos por cada entrada
=> (60/100) x 100000 x 365 x (50/1024x1024) => 1045 MB ~ 1GB
Portanto, de acordo com nossos números de capacidade, este sistema exigiria cerca de 1 GB de memória física
d) Estimativas de largura de banda
As estimativas de largura de banda são necessárias para analisar a velocidade de leitura e gravação em bytes que seria necessária para a execução de um sistema. Vamos fazer estimativas em relação aos números de capacidade que tomamos.
Exemplo: Se cada URL encurtado consumir 50 bytes, as velocidades totais de leitura e gravação de que precisaríamos seriam as seguintes:
WRITE - 1.15 x 50bytes = 57.5 bytes/s READS - 1157 x 50bytes = 57500 bytes/s => 57500 / 1024 => 56.15 Kb/s
e) Projeto e algoritmo do sistema
Esta é essencialmente a principal lógica de negócios ou algoritmo que seria usado para cumprir os requisitos funcionais. Nesse caso, queremos gerar URLs encurtados exclusivos para um determinado URL.
As diferentes abordagens que podem ser usadas para gerar URLs encurtados são:
Hashing: Podemos pensar em gerar URLs encurtados criando um hash do URL de entrada e atribuindo a chave de hash como o URL encurtado.

Essa abordagem pode ter alguns problemas quando há diferentes usuários do serviço e, se eles inserirem o mesmo URL, poderão obter o mesmo URL encurtado.
Strings encurtadas pré-criadase atribuído a URLs quando o serviço é chamado: Outra abordagem pode ser retornar uma string encurtada predefinida do pool de strings já geradas.

APIs de serviço: Podemos pensar no sistema de encurtador de URL como um conjunto de APIs baseadas em REST que têm os seguintes endpoints:
- createUrl (String Url, DateTime expiryTime): Este ponto de extremidade cria e retorna um URL encurtado com duração de expiração definida conforme especificado na entrada.
- retrieveUrl (String shortenedUrl): Este ponto de extremidade recupera o URL a ser redirecionado para o URL encurtado fornecido.
f) Escala e simultaneidade
O escalonamento é uma consideração importante de uma perspectiva de requisito não funcional.
Trata-se de como o sistema pode
- Escala sob carga: O sistema deve ser capaz de escalar perfeitamente sob carga e não apenas parar de funcionar após a ocorrência de um aumento inesperado na carga.
Leitura Recomendada => Técnicas de Escala
- Qual o desempenho do sistema, por exemplo: se o sistema for usado com capacidade sustentada por um longo tempo, o desempenho do sistema será prejudicado ou ele permanecerá estável?
Pode haver uma série de questões de design de sistema diferentes, como abaixo, mas, de modo geral, todas elas testariam a compreensão mais ampla do candidato dos diferentes conceitos que discutimos na solução do sistema de encurtamento de URL.
P # 13) Projete uma plataforma de vídeo como o Youtube.
Responda: Essa questão também pode ser abordada, de forma semelhante à que discutimos a questão do TinyUrl acima (e isso se aplica a quase todas as perguntas da entrevista de design de sistema). O único fator de diferenciação seria olhar / detalhar ao redor do sistema que você deseja projetar.
Então, para o Youtube, todos nós sabemos que é um aplicativo de streaming de vídeo e tem muitos recursos, como permitir que um usuário carregue novos vídeos, transmita webcasts ao vivo, etc. Portanto, ao projetar o sistema, você deve aplicar os componentes de design do sistema necessários. Nesse caso, pode ser necessário adicionar componentes relacionados aos recursos de streaming de vídeo.
Você pode discutir pontos como,
- Armazenar: Que tipo de banco de dados você escolheria para armazenar conteúdo de vídeo, perfis de usuário, listas de reprodução, etc?
- Segurança e autenticação / autorização
- Cache: Uma vez que uma plataforma de streaming como o YouTube deve ter desempenho, o armazenamento em cache é um fator importante para projetar qualquer sistema.
- Simultaneidade: Quantos usuários podem transmitir vídeo em paralelo?
- Outras funcionalidades da plataforma, como serviço de recomendação de vídeo, que recomenda / sugere aos usuários os próximos vídeos que eles podem assistir, etc.
Q # 14) Projetar um sistema eficiente para operar 6 elevadores e garantir que uma pessoa tenha que esperar um tempo mínimo enquanto espera a chegada do elevador ?
Responda: Esses tipos de questões de projeto de sistema são de nível mais baixo e esperam que o candidato pense primeiro no sistema de elevador e liste todas as funções possíveis que precisam ser suportadas e projete / crie classes e relacionamentos / esquemas de banco de dados como a solução.
Do ponto de vista do SDET, o entrevistador esperaria apenas as classes principais que você acha que seu aplicativo ou sistema teria e as funcionalidades básicas seriam tratadas com a solução sugerida.
Vamos ver várias funcionalidades do sistema de elevador que seriam esperadas
Você pode fazer perguntas esclarecedoras como
- Quantos andares tem lá?
- Quantos elevadores existem?
- Todos os elevadores são elevadores de serviço / passageiros?
- Todos os elevadores estão configurados para serem parados em cada andar?
Aqui estão os diferentes casos de uso que se aplicam a um sistema de elevador simples:

Em termos de classes / objetos principais deste sistema, você pode considerar ter:
- Do utilizador: Lida com todas as propriedades de um usuário e ações que ele pode realizar no objeto Elevator.
- Elevador: Propriedades específicas do elevador, como altura, largura, elevador_serial_number.
- Porta do elevador: Todas as coisas relacionadas com a porta, como nenhuma porta, tipo de porta, automática ou manual, etc.
- Elevator_Button_Control: Diferentes botões / controles disponíveis no elevador e diferentes estados em que esses controles podem estar.
Quando terminar de projetar classes e seus relacionamentos, você pode falar sobre a configuração de esquemas de banco de dados.
Outro componente importante do sistema de elevador é o sistema de eventos. Você pode falar sobre a implementação de filas ou em uma configuração mais complexa, criando fluxos de eventos usando Apache Kafka, onde os eventos são entregues aos respectivos sistemas para serem acionados.
O Sistema de Eventos é um aspecto importante, pois há vários usuários (em andares diferentes) usando o elevador ao mesmo tempo. Portanto, as solicitações do usuário devem ser enfileiradas e atendidas de acordo com a lógica configurada nos controladores do elevador.
Q # 15) Projete Instagram / Twitter / Facebook.
Responda: Todas essas plataformas estão de certa forma relacionadas, pois permitem que os usuários se conectem de uma forma ou de outra e compartilhem coisas por meio de diferentes tipos de mídia - como mensagens / vídeos e chats também.
Portanto, para esses tipos de aplicativos / plataformas de mídia social, você deve incluir os pontos abaixo ao discutir o projeto de tais sistemas (além do que discutimos para projetar o sistema encurtador de URL):
- Estimativa de capacidade: A maioria desses sistemas seria de leitura pesada, portanto, a estimativa da capacidade é necessária e nos permitiria garantir que a configuração apropriada do servidor e do banco de dados fosse garantida para atender à carga necessária.
- Esquema DB: Os principais esquemas de banco de dados importantes que devem ser discutidos são - detalhes do usuário, relacionamentos do usuário, esquemas de mensagens, esquemas de conteúdo.
- Servidores de hospedagem de vídeo e imagem: A maioria desses aplicativos tem vídeos e imagens compartilhados entre os usuários. Portanto, os servidores de hospedagem de vídeo e imagem devem ser configurados de acordo com as necessidades.
- Segurança: Todos esses aplicativos devem garantir um alto nível de segurança devido às informações do usuário / informações de identificação pessoal dos usuários que armazenam. Qualquer tentativa de hacking, SQL Injection não deve ter sucesso nessas plataformas, pois pode custar a perda de dados de milhões de clientes.
Problemas baseados em cenário
Os problemas baseados em cenário são geralmente para pessoas de nível sênior, onde diferentes cenários em tempo real são fornecidos e o candidato é questionado sobre como ele lidará com tal situação.
Q # 16) Dado um hotfix crítico precisa ser lançado o mais rápido possível - Que tipo de estratégia de teste você teria?
Responda: Agora, aqui o entrevistador quer essencialmente entender
- Como e que tipo de estratégias de teste você pode pensar?
- Que cobertura você faria para um hotfix?
- Como você validaria a pós-implantação do hotfix? etc.
Para responder a essas perguntas, você poderia usar situações da vida real se pudesse se identificar com o problema. Você também deve mencionar que, sem o teste apropriado, você não estaria disposto a liberar nenhum código para produção.
Para as correções críticas, você deve sempre trabalhar em conjunto com o desenvolvedor e tentar entender quais áreas isso pode impactar e preparar um ambiente de não produção para replicar o cenário e testar a correção.
Também é importante mencionar aqui que você continuaria a monitorar a correção (usando ferramentas de monitoramento, painéis, logs, etc.) pós-implantação para ver qualquer comportamento anormal no ambiente de produção e garantir que não haja impacto negativo da correção que está feito.
Pode haver outras questões que são principalmente para entender a perspectiva do candidato sobre testes de automação, prazos de entrega, etc (e essas questões podem variar de empresa para empresa, bem como a antiguidade da função. Geralmente essas perguntas são feitas para o nível sênior / líder papéis)
P # 17) Você sacrificaria o teste completo para lançar um produto rapidamente?
Responda: Essas perguntas normalmente envolvem o entrevistador para entender seus pensamentos de uma perspectiva de liderança e quais são as coisas que você comprometeria, e se você estaria disposto a lançar um produto com erros em vez de menos tempo.
As respostas a essas perguntas devem ser fundamentadas em relação às experiências reais do candidato.
Por exemplo, você poderia mencionar que, no passado, você tinha que fazer uma chamada para lançar algum hotfix, mas não foi possível testá-lo devido à indisponibilidade do ambiente de integração. Então, você o lançou de maneira controlada - implementando em uma porcentagem menor, monitorando os registros / eventos e iniciando a implementação completa etc.
P # 18) Como você criaria uma estratégia de automação para um produto que não possui nenhum teste de automação?
Responda: Esses tipos de perguntas são abertas e geralmente são um bom lugar para conduzir a discussão da maneira que você deseja. Você também pode mostrar suas habilidades, conhecimentos e áreas de tecnologia que são seus pontos fortes.
Por exemplo, Para responder a esses tipos de perguntas, você pode citar exemplos de Estratégia de Automação que você adotou ao construir um produto em sua função anterior.
Por exemplo, você pode mencionar pontos como,
- Como o produto exigia começar a automação do zero, você tinha tempo suficiente para pensar e projetar uma estrutura de automação apropriada, escolhendo uma linguagem / tecnologia que a maioria das pessoas tivesse conhecimento para evitar a introdução de uma nova ferramenta e aproveitar o conhecimento existente.
- Você começou automatizando os cenários funcionais mais básicos que foram considerados P1 (sem os quais nenhuma versão poderia passar).
- Você também pensou em testar o desempenho e a escalabilidade do sistema por meio de ferramentas de teste automatizadas como JMETER, LoadRunner, etc.
- Você pensou em automatizar os aspectos de segurança do aplicativo, conforme listado no OWASP Padrões de segurança.
- Você integrou os testes automatizados no pipeline de construção para feedback inicial etc.
Ajuste da equipe e ajuste da cultura
Essa rodada geralmente depende de empresa para empresa. Mas a necessidade / necessidade dessa rodada é entender o candidato do ponto de vista da cultura da equipe e da organização. O objetivo dessas perguntas é também compreender a personalidade do candidato e sua abordagem em relação ao trabalho / pessoas, etc.
Geralmente, os gerentes de RH e de contratação são os que conduzem essa rodada.
As perguntas que normalmente surgem durante esta rodada são como:
P # 19) Como você resolve conflitos dentro de sua função atual?
Responda: Uma explicação adicional aqui é: suponha que você tenha um conflito com seu chefe ou membros imediatos da equipe, quais são as etapas que você toma para resolver esses conflitos?
Para este tipo de perguntas, substancie o máximo que puder com exemplos reais que podem ter acontecido em sua carreira em organizações atuais ou anteriores.
Você pode mencionar coisas como:
- Gosta de resolver o mais cedo possível quaisquer conflitos que surjam por motivos profissionais (e não gostaria de afetar as suas relações pessoais devido a estes).
- Você pode mencionar que geralmente tenta se comunicar de forma eficaz e conversar / discutir com a pessoa individualmente para resolver quaisquer diferenças / problemas.
- Você pode mencionar que, se as coisas começarem a piorar, você terá a ajuda de uma pessoa sênior / seu gerente e obterá suas opiniões.
Outros exemplos de perguntas de ajuste de equipe / cultura estão abaixo (a maioria deles deve ser respondida em uma abordagem semelhante que discutimos para a pergunta acima. Falar sobre cenários da vida real é a chave aqui, pois o entrevistador pode relacionar isso de uma maneira melhor Nós vamos.
P # 20) Que tipo de equilíbrio entre vida pessoal e profissional você espera do novo cargo para o qual é considerado contratado?
Responda: Como o gerente de contratação é alguém que sabe o que a função exige, quanto esforço extra pode ser necessário às vezes, então, em geral, o entrevistador tenta avaliar se suas expectativas são radicalmente diferentes do que a função espera.
Suponha que você diga que você não prefere participar de reuniões noturnas e a função espera que você tenha uma grande colaboração entre uma equipe que fica em um fuso horário diferente, então o entrevistador pode iniciar uma discussão de que essas são as expectativas da função - Você será capaz de adaptar? etc.
Portanto, novamente, esta é mais uma conversa casual, mas da perspectiva do entrevistador, eles querem entender suas expectativas para avaliar sua candidatura para o cargo para o qual está sendo entrevistado.
Q # 21) Além do trabalho, quais são seus hobbies?
Responda: Essas perguntas são puramente subjetivas e específicas do indivíduo, e geralmente são úteis para fazer o candidato se sentir relaxado e à vontade e iniciar discussões casuais.
Em geral, as respostas a essas perguntas podem ser - você gosta de ler um gênero específico, gosta de música, recebeu algum prêmio por alguma atividade voluntária / filantrópica, etc. Além disso, essas perguntas geralmente são feitas na rodada de RH (e menos provável de ser perguntado por um técnico).
P # 22) Quanto tempo você está disposto a dedicar ao aprendizado de novas ferramentas e tecnologias de forma proativa?
Responda: Aqui, o entrevistador está avaliando sua disposição de aprender coisas novas se algo incomum ou novo for jogado em você. Também permite ao entrevistador saber que você é proativo? Você está disposto a investir em você e em sua carreira? etc.
Portanto, ao responder a essas perguntas - seja honesto e substancie suas respostas com exemplos - Por exemplo, Você pode mencionar que se candidatou a uma certificação Java no ano passado e se preparou fora do trabalho tirando algumas horas por semana.
Conclusão
Neste artigo, discutimos o processo de entrevista do Engenheiro de Desenvolvimento de Software em Teste e exemplos de perguntas que geralmente são feitas aos candidatos em diferentes organizações e perfis. Em geral, as entrevistas da SDET são de natureza muito ampla e dependem muito de empresa para empresa.
Mas os processos de entrevista são semelhantes ao que existe para um perfil de desenvolvedor, com maior ênfase em estruturas de qualidade e automação.
É importante entender que, hoje em dia, as empresas estão menos focadas em alguma linguagem ou tecnologia específica, mas mais em uma compreensão ampla de conceitos e na capacidade de se adaptar às ferramentas / tecnologias exigidas pela empresa.
Os melhores votos para sua entrevista SDET!
Leitura recomendada
- O que é SDET: saiba a diferença entre testador e SDET
- Perguntas e respostas da entrevista
- Perguntas e respostas da entrevista de teste de ETL
- Algumas perguntas e respostas complicadas de testes manuais
- Perguntas da entrevista de Spock com respostas (mais populares)
- 25 melhores perguntas e respostas da entrevista de teste do Agile
- As 32 melhores perguntas e respostas da entrevista de datastage
- Mais de 20 perguntas e respostas da entrevista em .NET