Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — VUNESP 2023
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
vu196435
Banca
VUNESP
Órgão
Pref Pindamonhangaba
Ano
2023
Cargo
WDes (Pref Pinda)
O teste unitário ou de unidade de um software consiste
Aem executar testes do software integrado, com a ressalva de ser o primeiro teste de uma série.
Bem executar testes em componentes ou módulos de software que sejam considerados a menor unidade de projeto do software.
Cem executar testes de software em um ambiente especial de simulação conhecido como TestOne.
Dno fato de que apenas um membro da equipe de testes realize todos os testes previstos para o software como um todo.
Eno fato de que todo o conjunto de testes do software seja executado em um período máximo de uma semana.
Revelar gabarito e comentário▾
GabaritoB — em executar testes em componentes ou módulos de software que sejam considerados a menor unidade de projeto do software.
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”.
Teste unitário em Engenharia de Software
Gabarito: letra B. O teste unitário (ou de unidade) consiste em executar testes sobre os componentes ou módulos de software que representam a menor unidade de projeto do software — como funções, métodos ou classes —, isolando cada parte para verificar se ela funciona conforme especificado. Essa é a definição clássica adotada pela Engenharia de Software, presente em referências como Pressman e Sommerville, e é exatamente o que a alternativa B descreve.
O teste unitário é um dos níveis de teste de software, ao lado do teste de integração, do teste de sistema e do teste de aceitação. Ele foca na menor unidade testável do código: uma função, um método, uma classe ou um módulo isolado. O objetivo é garantir que cada unidade, individualmente, produza as saídas esperadas para as entradas fornecidas, sem considerar a interação com outras unidades. Por isso, o teste unitário é normalmente executado de forma isolada, utilizando-se mocks, stubs ou drivers para simular as dependências externas da unidade sob teste.
A importância do teste unitário está na detecção precoce de defeitos: como cada unidade é testada isoladamente, erros de lógica, de cálculo ou de tratamento de dados são encontrados logo no início do desenvolvimento, antes que o componente seja integrado a outros. Isso reduz o custo de correção, pois defeitos descobertos tardiamente (na integração ou no sistema) são muito mais caros de corrigir. Além disso, o teste unitário serve como documentação viva do comportamento esperado de cada unidade e facilita a refatoração, pois garante que mudanças no código não quebrem funcionalidades já testadas.
Na prática, um teste unitário segue o padrão Triple A (Arrange, Act, Assert): prepara-se o ambiente e os dados de entrada (Arrange), executa-se a unidade sob teste (Act) e verifica-se se o resultado obtido é o esperado (Assert). Por exemplo, em uma função calcularICMS(valor, aliquota), um teste unitário verificaria se, ao passar valor = 1000 e aliquota = 0.18, o retorno é 180. Se o resultado for diferente, o teste falha, indicando um defeito na função.
A distinção que importa aqui é entre o teste unitário e o teste de integração. Enquanto o unitário testa cada unidade isoladamente, o teste de integração verifica a interação entre unidades ou módulos, garantindo que eles se comuniquem corretamente. O teste de sistema, por sua vez, testa o software como um todo, em um ambiente que simula o de produção, e o teste de aceitação valida se o sistema atende aos requisitos do cliente. A banca explora exatamente essa fronteira: alternativas que descrevem o teste de integração, o teste de sistema ou características de outros níveis são distratores.
A pegadinha desta questão está em alternativas que confundem o teste unitário com outros níveis de teste ou com características organizacionais (como quem executa ou em quanto tempo). O candidato que não domina a definição precisa do teste unitário pode ser induzido a escolher uma alternativa que descreve o teste de integração ou o teste de sistema. Guarde a fronteira: teste unitário = menor unidade isolada; teste de integração = interação entre unidades; teste de sistema = software completo. É exatamente nessa fronteira que as alternativas se dividem.
Níveis de teste: Unitário (Menor unidade isolada (função, método, classe), Uso de mocks, stubs e drivers); Integração (Interação entre unidades/módulos); Sistema (Software completo, ambiente de produção); Aceitação (Requisitos do cliente)
Alternativa A — ❌ Incorreta
Descreve o teste de integração, não o unitário. O teste de integração é que executa o software com os módulos já integrados, verificando a interação entre eles. O teste unitário, ao contrário, testa cada unidade isoladamente, antes da integração. A alternativa também menciona "ser o primeiro teste de uma série", o que não é uma característica definidora do teste unitário — embora ele seja, cronologicamente, o primeiro nível de teste, essa não é a essência do conceito.
Alternativa B — ✅ Correta ⟵ GABARITO
Esta é a definição precisa de teste unitário: executar testes em componentes ou módulos de software que são a menor unidade de projeto do software. A alternativa espelha exatamente o conceito — a unidade testada é a menor parte testável, como uma função, método ou classe. É a definição adotada pela Engenharia de Software e cobrada pelas bancas.
Alternativa C — ❌ Incorreta
Inventa um ambiente de simulação chamado "TestOne", que não existe na Engenharia de Software. Não há nenhum conceito ou ferramenta com esse nome. A alternativa é um distrator puro, sem fundamento técnico.
Alternativa D — ❌ Incorreta
Confunde o teste unitário com uma característica organizacional da equipe de testes. O teste unitário não tem relação com o número de membros da equipe que executam os testes. Ele é definido pelo escopo (menor unidade), não por quem o executa. Na prática, o teste unitário é geralmente executado pelo próprio desenvolvedor, mas isso não é parte da definição.
Alternativa E — ❌ Incorreta
Introduz um prazo arbitrário de "uma semana" para a execução de todo o conjunto de testes, o que não corresponde a nenhuma definição de teste unitário. O teste unitário não é definido por um período de tempo, mas pelo escopo da unidade testada. A alternativa é um distrator sem fundamento técnico.
PEGA ESSA DICA!
Para diferenciar os níveis de teste na prova, foque no escopo de cada um: unitário testa a menor unidade isolada; integração testa a interação entre unidades; sistema testa o software completo; aceitação valida os requisitos do cliente. Se a alternativa falar em "menor unidade", "função", "método" ou "classe", é teste unitário. Se falar em "interação entre módulos", é integração. Se falar em "software como um todo", é sistema.