A mesma regra, quatro perguntas diferentes
A Cantina Horizonte deve rejeitar quantidade 0.
Podemos perguntar se a função que valida quantidade está correta, se essa regra continua funcionando quando outras partes conversam, se o sistema completo rejeita a operação e, por fim, se o produto atende à necessidade real de quem vai utilizá-lo.
As perguntas se parecem, mas o alcance de cada uma é diferente.
Começando pelo menor pedaço
Imagine uma função responsável apenas por decidir se uma quantidade é válida.
Entrada: quantidade 0.
Esperado: a função deve informar que o valor é inválido.
Nesse caso, queremos observar uma parte pequena do software sem depender da interface, do banco de dados ou do restante do pedido.
Teste de unidade
Verifica uma pequena unidade de comportamento em isolamento, como uma função, método ou componente pequeno.
O significado de unidade pode variar conforme a tecnologia e o projeto. O importante é a ideia de testar uma parte pequena com poucas dependências externas.
Quando duas ou mais partes precisam trabalhar juntas
Agora suponha que a regra de quantidade esteja correta, mas o pedido precise consultar o estoque no banco antes de ser finalizado.
A pergunta deixa de ser apenas “a função calcula certo?” e passa a incluir:
Essas partes trocam informação corretamente quando trabalham juntas?
Teste de integração
Verifica a interação entre partes do sistema, como regra de negócio, servidor, banco de dados ou outros componentes que precisam se comunicar.
Mais adiante vamos praticar isso diretamente na comunicação entre a aplicação e sua interface de servidor.
Agora olhe para o sistema completo
Um cliente abre a Cantina Horizonte, escolhe um produto, informa quantidade 0, tenta adicioná-lo e observa a resposta.
Nesse momento várias partes podem participar: tela, JavaScript, servidor, regras e banco.
Teste de sistema
Verifica o sistema integrado como um todo, observando seu comportamento completo em um ambiente representativo.
Se o sistema completo aceita quantidade 0, existe um problema observável mesmo que alguma função isolada esteja correta.
E quando queremos saber se a solução atende ao uso real?
Imagine a equipe demonstrando uma versão à responsável pela cantina. Ela confirma se o fluxo de pedido, as mensagens e as regras atendem ao trabalho que precisa ser realizado.
Teste de aceitação
Ajuda a avaliar se a solução atende às necessidades e critérios combinados para seu uso. É comum envolver pessoas que representam o negócio, o cliente ou quem receberá o produto.
Não significa que todos os testes anteriores deixam de ser necessários. Cada nível responde perguntas diferentes.
Os níveis formam uma mudança de alcance
| Nível | Pergunta principal na Cantina Horizonte | Exemplo |
|---|---|---|
| Unidade | Uma pequena regra funciona isoladamente? | validar_quantidade(0) deve rejeitar. |
| Integração | Partes diferentes trabalham corretamente juntas? | Pedido consulta produto e atualiza estoque no banco. |
| Sistema | O produto completo se comporta como esperado? | Finalizar um pedido pelo sistema completo. |
| Aceitação | A solução atende ao uso e aos critérios combinados? | Responsável pela cantina valida o fluxo que será usado no atendimento. |
“Nível” não é a mesma coisa que “tipo”
Aqui existe uma confusão comum.
Nível de teste ajuda a responder em que alcance ou parte da solução estamos testando.
Já outra pergunta é:
Que aspecto da qualidade queremos avaliar?
Quando verificamos o que o sistema faz
Se testamos se o sistema calcula o total, rejeita quantidade inválida, aplica o cupom corretamente ou muda o status segundo a regra, estamos verificando comportamentos funcionais.
Teste funcional
Verifica funções, regras e comportamentos esperados: o que o sistema deve fazer diante de determinadas entradas e situações.
Quando a função pode estar certa, mas a qualidade ainda incomoda
Lembre das situações da Etapa 1:
Demora
O pedido é calculado corretamente, mas leva 15 segundos para confirmar.
Mensagem ruim
A operação é rejeitada, mas aparece apenas “Erro 1047”.
Tela estreita
No celular, parte do conteúdo fica escondida ou exige rolagem horizontal.
Dados desaparecem
Pedidos registrados não permanecem disponíveis depois.
Teste não funcional
Avalia características de qualidade que vão além de uma função específica, como desempenho, facilidade de uso, compatibilidade, confiabilidade, segurança e outras características relevantes ao contexto.
O nome não funcional não significa “menos importante”. Em alguns sistemas, desempenho, confiabilidade ou segurança são tão críticos quanto a função principal.
Uma prática simples de qualidade que já podemos fazer
Sem instalar ferramenta nova, faça três observações na Cantina Horizonte:
- reduza a largura da janela do navegador e verifique se as funções principais continuam utilizáveis;
- compare uma mensagem clara com uma mensagem genérica e diga qual ajuda mais a pessoa a corrigir a ação;
- finalize um pedido e observe se o retorno acontece em um tempo que faria sentido durante o intervalo.
Essa observação inicial não substitui medições profissionais. Ela apenas mostra que também podemos avaliar características além do resultado funcional.
Segurança aparece aqui, mas não vamos transformar QTS em outro módulo
Segurança é uma característica importante da qualidade. Ao longo de QTS podemos verificar comportamentos básicos, como não confiar apenas na validação da tela.
Mas assuntos como ataques, autenticação, criptografia e testes especializados de segurança exigem aprofundamento próprio e não serão o foco desta trilha.
Um teste pode combinar nível e tipo
Podemos ter, por exemplo:
| Situação | Nível | Aspecto |
|---|---|---|
| Função calcula subtotal de 2 salgados. | Unidade | Funcional |
| Pedido grava e reduz estoque no banco. | Integração | Funcional |
| Fluxo completo rejeita carrinho vazio. | Sistema | Funcional |
| Sistema completo continua utilizável em tela estreita. | Sistema | Não funcional |
Isso mostra por que “funcional” e “de sistema” não são categorias concorrentes. Uma expressão fala do aspecto; a outra fala do alcance.
Prática · diga qual pergunta está sendo feita
- Executar apenas a função que calcula o subtotal.
- Verificar se criar um pedido realmente altera o estoque salvo no banco.
- Usar a aplicação completa para comprar dois salgados.
- Medir se finalizar um pedido demora mais do que o aceitável.
- Pedir que a responsável pela cantina confirme se o fluxo atende ao trabalho real.
Em cada caso, tente explicar qual é o nível e, quando fizer sentido, qual aspecto da qualidade está sendo observado.
Agora nosso conjunto de testes cresceu bastante
Temos valores-limite, combinações de regras, transições de estado, diferentes níveis e características de qualidade.
Se tentarmos verificar tudo, em todos os níveis, com todos os dados e ambientes possíveis, o número de casos cresce rapidamente.
Se não dá para testar tudo, como decidir o que precisa de mais atenção?
Antes de seguir
Você deve conseguir explicar:
- a diferença básica entre testes de unidade, integração, sistema e aceitação;
- a diferença entre nível de teste e aspecto testado;
- o que caracteriza um teste funcional;
- por que testes não funcionais também precisam de situações observáveis.