Questão de Engenharia de Software — Teste de Software — CESPE / CEBRASPE 2023
Engenharia de Software›Teste de Software
Código
ce151505
Banca
CESPE / CEBRASPE
Órgão
AGER - Mato Grosso
Ano
2023
Nível
Superior
Cargo
Analista Regulador - Ciências da Computação e ou Sistemas de Informação
Assinale a opção que corresponde ao método de teste de software adotado, sob a perspectiva do desenvolvedor, a partir de casos de teste do código, escritos em linguagem técnica, para testar as funcionalidades antes da implementação da solução desenvolvida.
Aunit testing
BTDD
CBDD
DATDD
Eteste de caixa preta
Revelar gabarito e comentário▾
GabaritoB — TDD
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
TDD (Test-Driven Development)
Gabarito: letra B (TDD). A descrição no enunciado — "método de teste adotado sob a perspectiva do desenvolvedor, a partir de casos de teste do código, escritos em linguagem técnica, para testar as funcionalidades antes da implementação" — corresponde exatamente ao Test-Driven Development (TDD). No TDD, o desenvolvedor primeiro escreve testes de unidade (em linguagem técnica, geralmente código) que falham, e então implementa o código para fazê-los passar.
A banca testa o conhecimento dos diferentes métodos de desenvolvimento orientados a testes. Enquanto TDD foca em testes de unidade escritos pelo desenvolvedor, outras abordagens como BDD e ATDD envolvem linguagem natural e participação de stakeholders não-técnicos.
Método
Perspectiva
Linguagem dos Testes
Quando os Testes São Escritos
Foco Principal
TDD
Desenvolvedor
Técnica (código)
Antes da implementação
Testes de unidade guiando a implementação
Unit Testing
Desenvolvedor
Técnica (código)
Pode ser antes ou depois
Testar unidades individuais do código
BDD
Desenvolvedor + Stakeholders
Próxima do natural (Given/When/Then)
Antes da implementação
Comportamento do sistema
ATDD
Desenvolvedor + Cliente
Próxima do natural
Antes da implementação
Testes de aceitação do cliente
Teste de Caixa Preta
Testador (não necessariamente desenvolvedor)
Não técnica (requisitos)
Após a implementação
Funcionalidades sem conhecimento interno
Desenvolvimento orientado a testes: TDD (Test-Driven Development) (Desenvolvedor, Testes de unidade, Antes da implementação, Linguagem técnica (código)); BDD (Behavior-Driven) (Linguagem natural (Given/When/Then), Envolve stakeholders não-técnicos); ATDD (Acceptance Test-Driven) (Testes de aceitação, Colaboração com cliente); Unit testing (Não implica escrever antes)
Alternativa A — ❌ Incorreta
Unit testing refere-se a testes de unidade, que são sim escritos em linguagem técnica, mas não implica necessariamente que sejam escritos antes da implementação. O enunciado destaca o aspecto temporal ("antes da implementação") e a perspectiva do desenvolvedor, que é a essência do TDD. Unit testing é um componente do TDD, mas não define o método completo.
Alternativa B — ✅ Correta ⟵ GABARITO
TDD (Test-Driven Development) é exatamente o método descrito: o desenvolvedor escreve casos de teste automatizados (normalmente unitários) em uma linguagem de programação (técnica) antes de escrever o código de produção. Os testes guiam a implementação das funcionalidades. Conforme o texto de apoio: "os testes de unidade são escritos primeiro (TDD), por engenheiros de software. Antes da implementação da unidade em questão, o teste falha. Então o código é escrito..."
Alternativa C — ❌ Incorreta
BDD (Behavior-Driven Development) utiliza uma linguagem próxima do natural (ex.: Given/When/Then) para descrever comportamentos, não sendo escrita em linguagem técnica de código, e envolve a participação de analistas de negócio. O enunciado fala em "linguagem técnica" e "código", o que contrasta com a abordagem do BDD.
Alternativa D — ❌ Incorreta
ATDD (Acceptance Test-Driven Development) foca em testes de aceitação, que são escritos em colaboração com o cliente e geralmente em linguagem de domínio, não exclusivamente técnica. Embora também ocorra antes da implementação, o foco não é a unidade de código, mas sim os critérios de aceitação da funcionalidade como um todo, o que diverge do enunciado.
Alternativa E — ❌ Incorreta
Teste de caixa preta testa as funcionalidades sem conhecimento do código interno, a partir de especificações. O enunciado menciona "casos de teste do código" e "escritos em linguagem técnica", indicando que o testador tem acesso à estrutura do código, o que é característica de teste de caixa branca (ou testes de unidade). Além disso, o teste de caixa preta não é um método de desenvolvimento, mas uma técnica de teste que pode ser aplicada após a implementação.
NÃO CAIA NESSA!
A banca pode levar o candidato a confundir TDD com simples "unit testing", pois ambos usam testes de unidade. A diferença fundamental está na ordem: no TDD, os testes são escritos antes do código de produção. A alternativa A (unit testing) é tentadora, mas não captura a parte "antes da implementação", que é o cerne da questão.