Geral
Gerência e Qualidade de Software
Semana 5
0

Questão

Durante o desenvolvimento de um sistema web para uma rede de farmácias, a equipe decidiu adotar a Integração Contínua (CI) como estratégia para reduzir falhas e acelerar o ciclo de entrega. O projeto é sensível a mudanças frequentes, especialmente por lidar com integrações com APIs de estoque em tempo real e com dados sensíveis de clientes.
Nas últimas semanas, no entanto, a equipe tem enfrentado alguns problemas:
  • Em alguns momentos, o pipeline de CI demora mais de 20 minutos para validar uma simples modificação.
  • Desenvolvedores estão criando branches longas e fazendo merges em lote ao final da semana.
  • Os erros no sistema só são percebidos após o deploy em produção, apesar da existência de testes e integração.

Considerando os princípios da Integração Contínua, observe as afirmativas abaixo:
  1. A demora na execução do pipeline pode comprometer a efetividade da CI, pois desestimula commits frequentes e dificulta feedback rápido.
  2. O uso de branches longas e merges em lote compromete a CI, já que aumenta o risco de conflitos e dificulta a identificação da origem de falhas.
  3. Ignorar testes automatizados pontualmente, mesmo sendo uma prática ruim, é aceitável dentro da filosofia da CI quando os prazos estão apertados.
  4. O fato de erros só serem detectados após o deploy indica que a CI está sendo mal aplicada, especialmente se há testes automatizados no pipeline.

Está correto o que se afirma em:
A)

I e II, apenas.

B)

I, II e IV, apenas.

C)

I, III e IV, apenas.

D)

I, II, III e IV.

E)

II, III e IV, apenas.

function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/1530/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': 'aZWuaO1wqmut5oVfQicKmkv0YGHtC4tJycAGzYJsA9ajOBHoOBAQpocxYomotSh5' }, body: JSON.stringify({ value: value }) }) .then(response => response.json()) .then(data => { if (data.success) { document.getElementById(`score-${questaoId}`).textContent = data.score; const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`); const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`); upBtn.classList.remove('active-up'); downBtn.classList.remove('active-down'); if (data.user_vote === 1) upBtn.classList.add('active-up'); if (data.user_vote === -1) downBtn.classList.add('active-down'); } }); }