A respeito de testes automatizados, no contexto de DevOps e DevSecOps, assinale a opção correta.
- A)Em um teste unitário, os métodos da classe sendo testada e suas dependências podem ter relação com recursos externos.
Errada, porque teste unitário deve isolar a unidade testada e evitar dependência de recursos externos reais.
- B)Os bugs são detectados no final do ciclo de desenvolvimento, o que pode aumentar o tempo na criação de novos produtos.
Errada, porque a proposta de testes automatizados em DevOps é detectar falhas cedo, não só no fim do ciclo.
- C)Os testes unitários são testes de caixa preta com cada função que compõe o software.
Errada, porque teste unitário não é caixa preta por definição; ele normalmente é associado a verificação de unidades internas do código.
- D)O TDD (Test Driven Development) eleva o nível dos testes unitários e tem como característica criar a classe de testes antes da classe de produção, de forma que os testes guiem o código a ser implementado.
Certa, porque o TDD consiste em escrever primeiro os testes e depois o código de produção, guiando a implementação.
- E)Os testes de integração são caracterizados pela verificação de partes internas do sistema, que se inter-relacionam entre si, conforme definido pelos clientes.
Errada, porque teste de integração verifica a interação entre componentes ou módulos, não a análise de partes internas conforme critérios do cliente.
Gabarito: D
Em testes automatizados, especialmente em ambientes de DevOps e DevSecOps, a ideia central é ganhar velocidade, repetibilidade e feedback rápido. Em vez de esperar o sistema inteiro ficar pronto para descobrir defeitos, os testes entram cedo no processo e acompanham a entrega contínua, ajudando a reduzir retrabalho e risco. Isso conversa bem com a lógica de integração contínua e entrega contínua: detectar erro o quanto antes custa menos e dói menos no cronograma. Os testes unitários, em regra, focam uma menor parte do código, como um método ou uma classe, isolando dependências com mocks ou stubs. Por isso, eles não devem depender de recursos externos reais, como banco de dados, rede ou serviços terceiros. Se começam a depender disso, o teste perde isolamento e deixa de ser um bom teste unitário. É aí que a alternativa D acerta: TDD (Test Driven Development) é justamente o desenvolvimento guiado por testes. Primeiro você escreve o teste, depois implementa o código para fazê-lo passar, e só então refatora. Na prática, isso ajuda a dar mais qualidade ao código e a organizar melhor a construção da funcionalidade, com testes unitários como peça central. Na visão de prova, o CESPE gosta de misturar conceitos próximos, mas com um detalhe errado aqui e ali. Então guarde a lógica: teste unitário isola, integração verifica interação entre módulos, e TDD usa o teste como guia da implementação. Essa é a trilha segura para não cair em pegadinha.