Fundamentos de Teste de Software (Cap. 1 CTFL)
Por que o teste de software é necessário?
Sistemas de software estão presentes em praticamente todas as áreas da vida moderna — saúde, aviação, finanças, comunicação. Quando esses sistemas falham, as consequências podem ir de mero inconveniente a perdas financeiras enormes ou até riscos à vida humana.
O teste de software existe para reduzir o risco de falhas em produção. Ele não garante que o software é perfeito — isso seria impossível na prática — mas aumenta a confiança de que o sistema funciona conforme o esperado para os casos mais importantes.
Além de encontrar defeitos, o teste contribui para a qualidade de outras formas: fornece informações para decisões de liberação, verifica que requisitos foram atendidos e ajuda a cumprir requisitos contratuais e regulatórios.
🎬 Por que o teste de software é necessário?
Os 7 Princípios do Teste
O CTFL v4.0 define 7 princípios fundamentais que guiam como o teste deve ser abordado:
- O teste demonstra a presença de defeitos, não a ausência. Testes encontram problemas, mas não provam que não existem outros.
- Testes exaustivos são impossíveis. Testar todas as combinações possíveis de entradas seria impraticável — priorizamos com base em risco.
- O teste inicial economiza tempo e dinheiro. Defeitos encontrados cedo custam muito menos para corrigir.
- Os defeitos se agrupam. A maioria dos problemas costuma estar concentrada em poucos módulos do sistema (Princípio de Pareto).
- Os testes se desgastam. Rodar os mesmos testes indefinidamente reduz sua eficácia — é necessário variar as abordagens.
- O teste depende do contexto. O que é adequado para um app bancário pode ser excessivo para um site institucional.
- A ausência de defeitos é uma falácia. Um sistema sem bugs ainda pode ser inútil se não atender às necessidades reais do usuário.
🎬 Os 7 Princípios do Teste
Erro, Defeito e Falha: terminologia essencial
Uma das principais fontes de questões no exame CTFL é a distinção precisa entre esses três termos:
- Erro (Error): uma ação humana que produz um resultado incorreto. É o que acontece na cabeça do desenvolvedor — um equívoco de raciocínio, um descuido, uma interpretação errada do requisito.
- Defeito (Defect / Bug): a manifestação do erro no artefato — no código, no documento, na configuração. É o que existe no sistema antes de ser executado.
- Falha (Failure): o comportamento incorreto observado quando o software é executado. É o sintoma visível ao usuário ou ao testador.
A cadeia é: erro → defeito → falha. Um desenvolvedor comete um erro que introduz um defeito no código. Quando o código é executado, o defeito pode causar uma falha. Importante: nem todo defeito sempre causa falha — pode depender de condições específicas de execução.
🎬 Erro, Defeito e Falha: terminologia essencial
Atividades e papéis no processo de teste
O processo de teste do CTFL é composto por atividades principais:
- Planejamento de teste: definir objetivos, estratégia, recursos e cronograma.
- Monitoramento e controle: acompanhar o progresso e tomar ações corretivas.
- Análise de teste: identificar o que testar com base em bases de teste (requisitos, código, etc.).
- Modelagem de teste: definir como testar — criar casos de teste, dados e ambiente.
- Implementação de teste: preparar o ambiente e automatizar quando aplicável.
- Execução de teste: rodar os testes e registrar os resultados.
- Conclusão de teste: arquivar artefatos, gerar relatório final, compartilhar lições aprendidas.
Os papéis centrais são o Testador (executa testes, relata defeitos, cria casos de teste) e o Líder/Gerente de Teste (planeja, coordena, reporta). Em times ágeis, esses papéis são frequentemente compartilhados entre o time.
🎬 Atividades e papéis no processo de teste
🧠 Teste seus conhecimentos
Segundo o CTFL, qual é o objetivo principal do teste de software?