BDD (Cucumber): Uma equipe de automação de testes está utilizando o Cucumber para testar um sistema bancário que envolve transferências de dinheiro entre contas de diferentes bancos. Durante os testes em ambientes de integração contínua (CI), o comportamento intermitente ocorre devido ao processamento assíncrono das transações pela API de backend. O time decide melhorar a robustez dos testes, mas com um foco em soluções mais sofisticadas, que envolvem técnicas adequadas de sincronização de testes em ambientes de CI. Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas: I. O uso de hooks no Cucumber (como @Before ou @After) pode ser útil para preparar o ambiente de teste e limpar o estado entre execuções, mas a falha persistente nos testes é causada pela dependência da execução assíncrona da API, que não garante que as transações sejam processadas antes da validação. Portanto, o uso de hooks não resolve o problema de sincronização entre os passos do teste e a execução da API. PORQUE II. A solução mais apropriada seria implementar um mecanismo de espera explícita utilizando WebDriverWait ou uma abordagem customizada para aguardar a confirmação de que a transação foi processada, como uma chamada assíncrona que verifique o status da transação antes de continuar com o passo de validação. Além disso, a utilização de práticas como Thread.sleep() é desaconselhada, pois introduz incertezas no tempo de execução dos testes, além de não escalar bem em ambientes de CI. Com base nas asserções acima, assinale a alternativa correta:

Questão

Uma equipe de automação de testes está utilizando o Cucumber para testar um sistema bancário que envolve transferências de dinheiro entre contas de diferentes bancos. Durante os testes em ambientes de integração contínua (CI), o comportamento intermitente ocorre devido ao processamento assíncrono das transações pela API de backend. O time decide melhorar a robustez dos testes, mas com um foco em soluções mais sofisticadas, que envolvem técnicas adequadas de sincronização de testes em ambientes de CI.

Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:

I. O uso de hooks no Cucumber (como @Before ou @After) pode ser útil para preparar o ambiente de teste e limpar o estado entre execuções, mas a falha persistente nos testes é causada pela dependência da execução assíncrona da API, que não garante que as transações sejam processadas antes da validação. Portanto, o uso de hooks não resolve o problema de sincronização entre os passos do teste e a execução da API.

PORQUE

II. A solução mais apropriada seria implementar um mecanismo de espera explícita utilizando WebDriverWait ou uma abordagem customizada para aguardar a confirmação de que a transação foi processada, como uma chamada assíncrona que verifique o status da transação antes de continuar com o passo de validação. Além disso, a utilização de práticas como Thread.sleep() é desaconselhada, pois introduz incertezas no tempo de execução dos testes, além de não escalar bem em ambientes de CI.

Com base nas asserções acima, assinale a alternativa correta:

Alternativas

a. As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

92%

b. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

c. A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

d. As asserções I e II são falsas

e. A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

Explicação

Vamos avaliar cada asserção e depois a relação de causa (PORQUE).

I. Hooks do Cucumber como @Before e @After são úteis para:

  • preparar massa/estado inicial,
  • isolar cenários,
  • limpar efeitos colaterais (dados, sessão, arquivos, etc.).

Porém, o problema descrito é intermitência causada por processamento assíncrono: o teste valida um resultado antes do backend concluir a transferência. Hooks não sincronizam automaticamente o momento entre “ação” e “efeito” no backend; eles executam apenas antes/depois de cenários (ou steps), não “esperam” a transação finalizar. Logo, a conclusão de que hooks não resolvem o problema de sincronização está correta. I é verdadeira.

II. Para lidar com assincronia, o correto é usar uma estratégia de sincronização, por exemplo:

  • espera explícita/polling até uma condição ser verdadeira (ex.: status da transação = “CONFIRMADA”),
  • implementação customizada de retry com timeout,
  • em UI, esperas explícitas do Selenium (ex.: WebDriverWait) para aguardar uma condição observável.

E de fato Thread.sleep() é desaconselhado porque:

  • fixa o tempo (pode ser curto demais → flakiness; longo demais → testes lentos),
  • piora o tempo total e a variabilidade em CI,
  • não reage ao momento real em que a condição fica pronta.

Logo, II é verdadeira.

Relação (II justifica I): II explica por que hooks não resolvem o problema: o que falta é sincronização baseada em condição/estado (espera explícita/polling), não apenas preparação/limpeza do ambiente. Portanto, a II funciona como justificativa da I.

Alternativa correta: (a).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.