QA · Leitura de 7 min

Testes funcionais vs não funcionais: o que cada um mede

O botão funcionar é funcional. Ele aguentar 5.000 usuários ao mesmo tempo é não funcional. Um produto pode passar em tudo que é funcional e ainda assim ser inutilizável em produção.

A diferença cabe em uma única frase: os testes funcionais verificam o que o sistema faz; os não funcionais verificam como ele faz. Se um botão de "Pagar" cobra o valor correto, isso é funcional. Se esse mesmo botão responde em menos de um segundo com 5.000 pessoas comprando ao mesmo tempo, isso é não funcional. Um produto pode passar em cada teste funcional e ainda assim cair no dia do lançamento porque ninguém mediu a segunda parte.

Esse é o erro caro. As equipes preenchem planilhas de casos que verificam regras de negócio (funcional) e dão como certo que "funciona". Mas funcionar na máquina do desenvolvedor, com um único usuário e dados limpos, não é o mesmo que funcionar em produção com carga real, redes lentas e usuários que usam leitor de tela. Este artigo separa os dois eixos e mostra por que você precisa dos dois.

01 · o quêTestes funcionais: verificam o comportamento

Um teste funcional confirma que uma função do produto faz o que a sua especificação diz. Você dá uma entrada, espera uma saída concreta e compara. Se a regra diz "um carrinho com mais de três produtos recebe 10 % de desconto", o teste coloca quatro produtos e verifica que o total caia esses 10 %. Não importa quanto demorou nem quanta memória gastou: importa que o resultado seja o correto.

O padrão internacional de qualidade de produto de software, a ISO/IEC 25010, agrupa isso sob adequação funcional (functional suitability): que as funções estejam completas, sejam corretas e sejam apropriadas para a tarefa [1]. Na prática, quase tudo o que um analista de QA escreve como "caso de teste" com passos e resultado esperado é funcional.

Funcional responde a uma única pergunta: dado isto, o sistema devolve o que deveria?

Exemplos típicos de testes funcionais:

Figura 1 · los dos ejes de la calidad
FUNCIONAL · o que faz? NÃO FUNCIONAL · como faz? Cobra o valor correto Responde em menos de 1 s com 5.000 usuários ao mesmo tempo
O mesmo botão "Pagar" vive nos dois eixos. Que cobre bem é funcional; que aguente a carga é não funcional. Passar em um não garante o outro.

02 · o comoTestes não funcionais: verificam a qualidade de serviço

Um teste não funcional não pergunta se o resultado é correto, mas se o sistema é bom enquanto o entrega: rápido, estável, seguro, usável, acessível. São as qualidades que o usuário sente mesmo sem nunca nomeá-las. Ninguém diz "que boa adequação funcional"; as pessoas dizem "isto voa" ou "isto cai o tempo todo".

A ISO/IEC 25010 nomeia essas características de qualidade além do funcional. Entre as mais usadas em QA [1]:

A acessibilidade merece a sua própria linha. Um produto pode passar em todo teste funcional e ser inutilizável para alguém que navega com teclado ou com leitor de tela. As diretrizes WCAG do W3C dão critérios verificáveis (contraste de cor, texto alternativo, foco visível, ordem de tabulação) que transformam "acessível" em algo mensurável e não em uma opinião [3].

O funcional diz se o produto serve. O não funcional diz se ele sobrevive ao contato com usuários reais.

Por que os não funcionais são esquecidos

São mais difíceis de escrever. "O sistema deve ser rápido" não é um teste: não diz quanto nem sob que carga. Um teste não funcional útil exige um número (um oráculo): "95 % das respostas do checkout devem demorar menos de 800 ms com 2.000 usuários simultâneos". Sem esse limite, não há como dizer se passou ou falhou, e por isso muitas equipes os pulam.

Figura 2 · un requisito no funcional necesita un número
Vago (não verificável) "O checkout deve ser rápido." Mensurável (com oráculo) "95 % abaixo de 800 ms com 2.000 usuários."
Sem um limite concreto, "rápido" é uma opinião. Com um número e uma condição de carga, é um teste que passa ou falha sem discussão.

03 · juntosPor que você precisa dos dois eixos, não de um

A armadilha mental é tratá-los como níveis: "primeiro o funcional e, se sobrar tempo, o não funcional". Não são níveis, são eixos independentes. Um produto ocupa um ponto em ambos ao mesmo tempo. Você pode ter funcionalidade perfeita e desempenho desastroso, ou o contrário: algo velocíssimo que calcula mal o imposto.

Pense em um caixa eletrônico. Funcional: entrega o valor exato que você pediu e atualiza o seu saldo. Não funcional: faz essa operação em poucos segundos, não revela a sua senha, e continua funcionando mesmo que centenas de pessoas o usem no dia do pagamento. Se o eixo funcional falha, ele te dá dinheiro a mais ou a menos. Se o não funcional falha, demora cinco minutos, trava no horário de pico ou vaza a sua senha. Nenhuma das duas falhas é aceitável, e nenhuma quantidade de testes de um eixo detecta as falhas do outro.

O ISTQB, o corpo de certificação de referência em testes de software, classifica explicitamente os tipos de teste em funcionais, não funcionais, de caixa branca e de confirmação/regressão, justamente para que um plano de testes cubra ambos os eixos de forma deliberada e não por acaso [2].

Uma regra prática para saber diante de qual você está: se o teste pode ser descrito com "dado X, o sistema deve devolver Y", é funcional. Se é descrito com um advérbio ou uma qualidade ("rapidamente", "de forma segura", "sem cair", "de maneira acessível"), é não funcional, e então falta atribuir-lhe um número.

A lição para qualquer um que construa produto: passar em todos os casos funcionais é condição necessária, mas não suficiente. No dia em que o seu produto crescer, a carga, a segurança e a acessibilidade deixam de ser detalhes e passam a ser o que decide se as pessoas ficam ou vão embora. Meça-os antes que a produção o faça por você.

Fuentes

  1. ISO/IEC 25010:2011, Systems and software engineering. Systems and software Quality Requirements and Evaluation (SQuaRE). System and software quality models. International Organization for Standardization (ISO). Define o modelo de qualidade de produto e suas características (adequação funcional, eficiência de desempenho, segurança, confiabilidade, usabilidade, entre outras).
  2. ISTQB, Certified Tester Foundation Level (CTFL) Syllabus, International Software Testing Qualifications Board. Classifica os tipos de teste em funcionais, não funcionais, de caixa branca e de confirmação/regressão.
  3. W3C, Web Content Accessibility Guidelines (WCAG) 2.1, World Wide Web Consortium. Recomendação com critérios de conformidade verificáveis para acessibilidade web.

Aprenda mais sobre IA

Ver tudo Aprenda IA