Pular para o conteúdo principal

Questão de Engenharia de Software — Teste de Software — CESPE / CEBRASPE 2023

Engenharia de SoftwareTeste 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.
  1. Aunit testing
  2. BTDD
  3. CBDD
  4. DATDD
  5. 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

1TDD (Test-Driven Development)
Desenvolvedor
Testes de unidade
Antes da implementação
Linguagem técnica (código)
2BDD (Behavior-Driven)
Linguagem natural (Given/When/Then)
Envolve stakeholders não-técnicos
3ATDD (Acceptance Test-Driven)
Testes de aceitação
Colaboração com cliente
4Unit testing
Não implica escrever antes
Desenvolvimento orientado a testes
LEVELsoulevel.com.br
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.

Gabarito: letra B (TDD).

Link permanente: /questoes/ce151505