Testes e Qualidade

O que são testes de software?

Testes de software são atividades planejadas para avaliar comportamentos, encontrar informações sobre riscos e aumentar a confiança de que o sistema atende ao que foi combinado.

Pessoa revisando código e qualidade de software.

Introdução

Testar não é apenas clicar até encontrar um erro antes da publicação. É investigar se o software se comporta de maneira coerente em cenários importantes e aprender onde ainda existe risco. Um teste pode confirmar um comportamento esperado ou revelar que uma suposição estava errada.

Também é importante entender que nenhum conjunto de testes prova que um sistema não tem defeitos. Ele oferece evidências, e a qualidade depende de requisitos claros, revisão, design, implementação, operação e aprendizado.

O que um teste procura?

Um teste começa com uma pergunta. O cadastro rejeita dados obrigatórios ausentes? Uma pessoa sem permissão é impedida de consultar um documento? Um relatório mantém os filtros escolhidos? Uma falha de integração produz uma mensagem compreensível?

Para responder, defina contexto, entrada, ação e resultado esperado. Inclua casos normais, limites e situações inválidas. O objetivo é escolher cenários que representem o risco do produto, não acumular passos sem propósito.

Níveis de teste

Teste unitário

Verifica uma unidade pequena de comportamento, como uma função ou regra, com dependências controladas. É rápido e ajuda a localizar a origem de uma falha. Muitas vezes, essa unidade é um método de uma classe descrita no diagrama de classes.

Teste de integração

Avalia a interação entre partes, como serviço e banco de dados ou sistema e provedor externo. Pode revelar problemas de contrato, configuração e tratamento de erro. Um diagrama de sequência ajuda a enxergar quais mensagens e retornos entre essas partes precisam ser verificados.

Teste de sistema

Examina um fluxo mais completo em condições próximas do uso. Ajuda a verificar se componentes colaboram para entregar uma capacidade.

Teste de aceitação

Relaciona o comportamento ao objetivo do negócio e às expectativas das pessoas usuárias. Pode envolver exemplos revisados com quem solicitou a funcionalidade. Os fluxos principal e alternativos de um caso de uso são boas fontes para esses cenários.

Tipos e estratégia de testes

Os níveis indicam a abrangência da verificação; os tipos indicam o que está sendo investigado. Testes funcionais verificam comportamentos, testes de regressão procuram impactos de mudanças, testes exploratórios usam investigação guiada e testes não funcionais avaliam qualidades como desempenho, acessibilidade ou segurança.

Uma estratégia proporcional combina técnicas. Um fluxo de pagamento pode exigir teste unitário para regras de cálculo, integração com o provedor, teste de sistema do fluxo completo e aceite com o critério de negócio. O risco e o impacto ajudam a decidir onde investir mais.

Pirâmide de testes

A pirâmide é uma orientação: ter mais verificações rápidas na base costuma reduzir o custo de feedback, enquanto testes amplos continuam importantes para riscos de integração e negócio.

Como escrever um caso de teste claro

  1. Relacione o teste a um requisito, regra ou risco.
  2. Descreva o contexto inicial e os dados relevantes.
  3. Use uma ação objetiva e um resultado observável.
  4. Inclua pelo menos um cenário de exceção quando ele for importante.
  5. Evite depender de detalhes visuais que não fazem parte do comportamento.

Uma forma curta de escrever é “dado que, quando, então”: dado que o documento já existe, quando a pessoa tentar salvar outro registro com o mesmo valor, então o sistema deve impedir a duplicidade e explicar o motivo.

Para cenários com mais detalhes, vale separar cada parte. Veja um exemplo completo:

Requisito: uma pessoa atendente não pode criar duas reservas para o mesmo recurso no mesmo horário.

  • Pré-condição: existe uma reserva confirmada para o recurso A entre 14h e 15h;
  • Entrada: tentar criar nova reserva para o recurso A no mesmo intervalo;
  • Resultado esperado: o sistema recusa a operação, explica o conflito e mantém a primeira reserva;
  • Variação: uma reserva para 15h deve ser aceita quando não houver outra restrição.

O mesmo comportamento pode ser verificado manualmente em uma validação exploratória e automaticamente em uma suíte de regressão.

Requisitos e evidências

Um requisito precisa de uma forma de verificação, seja ele funcional ou não funcional. Se o requisito diz que apenas pessoas autorizadas podem exportar dados, o caso de teste deve incluir um perfil permitido e um perfil sem permissão. Se diz que uma busca deve responder em até dois segundos, o teste precisa registrar volume, ambiente e condição de medição.

Essa relação pode ser documentada em uma matriz simples entre requisito, cenário, resultado esperado e evidência. Ela facilita a revisão de mudanças e mostra o que ainda não foi verificado.

Quando automatizar?

Automação é valiosa quando o teste é repetido, importante e possui resultado verificável. Testes automatizados podem proteger regras centrais e detectar regressões a cada alteração. Mas nem todo teste precisa ser automatizado: exploração, usabilidade e algumas avaliações visuais dependem de investigação humana.

O glossário do ISTQB é uma referência confiável para a terminologia de testes. Na prática, escolha uma estratégia proporcional ao risco e ao contexto.

Conclusão

Testes de software aumentam a qualidade porque transformam expectativas em perguntas verificáveis. Eles ajudam a encontrar defeitos, compreender riscos e dar confiança para evoluir. Comece por comportamentos importantes e crie exemplos que outra pessoa consiga entender e repetir.

Leia também

Voltar à Engenharia de Software