Questão
ID 67581Disciplina: Tecnologia da Informação
Assuntos: Unidade, Componente, Módulo, Usuário
Ano: 2025 Banca: PERFIL - ENADE Órgão: Quarto Simulado Pnd
Em uma disciplina de Engenharia de Software, o professor está ensinando sobre a importância de testes automatizados e a diferença entre os níveis de teste. Ele apresenta a 'Pirâmide de Testes', de Mike Cohn, que sugere uma distribuição ideal de esforços: uma base larga de **Testes de Unidade**, uma camada intermediária menor de **Testes de Integração** (ou de Serviço), e um topo estreito de **Testes de Interface do Usuário (UI)** (ou End-to-End). Ele explica: "Os **Testes de Unidade** verificam a menor parte testável de uma aplicação, como uma função ou um método, de forma isolada. Eles são rápidos, baratos e fáceis de escrever. Os **Testes de Integração** verificam se diferentes unidades do sistema funcionam bem juntas (ex: se a aplicação consegue se comunicar corretamente com o banco de dados). Os **Testes de UI** simulam um usuário real interagindo com a aplicação através da interface gráfica. Eles são lentos, frágeis (quebram com pequenas mudanças na UI) e caros de manter." Ele então propõe o cenário de uma função Python que deveria somar dois números, mas contém um bug.
Função com bug: `def somar(a, b): return a - b`
Qual tipo de teste automatizado seria o mais apropriado, rápido e eficaz para detectar este bug?