Conceitos

Pontuação Apdex: o que é e como calcular

7 min de leitura

Uma pontuação Apdex é um número entre 0 e 1 que diz qual parte das requisições foi rápida o bastante para quem esperava por elas. Você escolhe um tempo-alvo T: respostas até T contam inteiras, respostas até quatro vezes T contam pela metade e as mais lentas contam zero. Um resultado de 1 significa que todas as requisições atingiram o alvo, e 0 que todas foram lentas demais.

ZonaTempo de respostaPeso na pontuação
Satisfeito (satisfied)até T1
Tolerável (tolerating)acima de T, até 4T0,5
Frustrado (frustrated)acima de 4T0

Os fatos abaixo vêm da documentação e do código-fonte das ferramentas, conferidos em 19 de outubro de 2026.

Como calcular uma pontuação Apdex?

Some as requisições satisfeitas com metade das toleráveis e divida pelo total. O resultado sempre fica entre 0 e 1.

Apdex(T) = (satisfied + tolerating / 2) / total

A documentação de Apdex da New Relic resolve um exemplo com T em 500 ms: de 200 requisições, 170 terminaram em até 500 ms, 20 levaram entre 500 ms e 2 segundos, e 10 falharam ou demoraram mais. Isso dá (170 + 20 / 2) / 200 = 0,90 (conferido em 19 de outubro de 2026).

Um segundo exemplo mostra por que a pontuação é útil num teste de carga. Digamos que uma execução envie 10.000 requisições com T em 300 ms: 8.200 terminam em 300 ms, 1.300 entre 300 ms e 1,2 segundo, e 500 demoram mais. O Apdex é (8.200 + 650) / 10.000 = 0,885. A mesma execução pode mostrar sem problema uma média de 280 ms, que parece boa sozinha e esconde as 500 requisições acima de um segundo.

De onde vem o Apdex?

Apdex, sigla de Application Performance Index, é um padrão aberto de um grupo de empresas chamado Apdex Alliance. Peter Sevcik, da NetForecast, fundou a Alliance em 2004.

O artigo da Wikipédia sobre Apdex cita o artigo de Sevcik de 2005 e traz a regra de 4T. O Apdex Users Group diz hoje que as regras dos limites T e F “se tornaram flexíveis” (conferido em 19 de outubro de 2026), e as ferramentas usam essa liberdade.

Como JMeter, Artillery e LoadFocus calculam a pontuação?

As três partem de T = 500 ms. Elas diferem em onde termina a zona tolerável e no que fazem com as requisições com falha, então a mesma execução pode dar três valores um pouco diferentes.

FerramentaT padrãoTolerável atéRequisições com falha
Dashboard HTML do JMeter500 ms1.500 mscontam como frustradas
Plugin apdex do Artillery500 ms4T (2.000 ms)só respostas recebem nota
Página de resultados da LoadFocus500 ms, fixo4T (2.000 ms)classificadas pelo tempo de resposta
New Relic APMdefinido por aplicação4Terros de servidor são frustrados

JMeter. O relatório do dashboard tem uma tabela APDEX por transação. Os padrões são jmeter.reportgenerator.apdex_satisfied_threshold=500 e apdex_tolerated_threshold=1500, então a zona tolerável termina em 3T a menos que você mude, e apdex_per_transaction define limites diferentes por sampler. Em ApdexSummaryConsumer, uma amostra com falha entra no total e nunca nas satisfeitas ou toleráveis, então cada falha derruba a pontuação (conferido em 19 de outubro de 2026).

Artillery. O plugin apdex só funciona com o motor HTTP e publica os contadores apdex.satisfied, apdex.tolerated e apdex.frustrated. O código em artillery-plugin-apdex 1.24.0 classifica cada resposta pelo tempo total em relação a T e 4T e depois imprime a pontuação com um rótulo: excellent a partir de 0,94, good a partir de 0,85, fair a partir de 0,70, poor a partir de 0,49 e unacceptable abaixo disso. Uma requisição que nunca recebe resposta nunca é classificada (conferido em 19 de outubro de 2026). Nossa análise do Artillery trata da ferramenta em si.

A LoadFocus, que publica este site, mostra a pontuação Apdex na aba Insights do resultado de um teste de carga, ao lado de um histograma de tempos de resposta. T é fixo em 500 ms e a zona tolerável termina em 2.000 ms; não dá para mudar T. Cada amostra é classificada pelo tempo de resposta, com as partes satisfeita, tolerável e frustrada ao lado da pontuação.

Como escolher o limite T?

Escolha T pelo que os usuários daquela página ou daquele endpoint esperam, e defina por transação quando a ferramenta permitir. Um único T para a aplicação inteira mistura um endpoint de busca rápido e uma exportação de relatório lenta num número só.

Algumas regras práticas:

  • Comece de uma meta real. Se você já tem uma meta de latência como “95% das chamadas de checkout abaixo de 400 ms”, T = 400 ms faz o Apdex e a meta contarem a mesma história.
  • Mantenha o mesmo T entre execuções. Um Apdex só se compara com outro medido no mesmo T. Escreva Apdex(0.4) ou “Apdex com T = 400 ms” para ninguém comparar limites diferentes.
  • Ajuste também a zona tolerável. O padrão do JMeter para em 3T e os outros em 4T. Antes de comparar um relatório do JMeter com outra ferramenta, coloque apdex_tolerated_threshold em quatro vezes T.
  • Não mexa em T para uma versão passar. Mudar T depois de uma execução ruim troca a régua, e a tendência que você acompanhava se perde.

O que é uma boa pontuação Apdex?

O plugin do Artillery chama de excellent 0,94 ou mais, de good 0,85 a 0,94 e de poor ou pior tudo abaixo de 0,70. Esses rótulos só significam algo se T foi escolhido com honestidade.

Um Apdex de 0,95 com T = 2 segundos pode descrever um serviço mais lento que 0,80 com T = 200 ms. Ao definir um critério para liberar uma versão, escreva o limite e a pontuação juntos (“Apdex(0.5) de pelo menos 0,9”) e confira ao lado de um limite de percentil, porque os dois pegam problemas diferentes.

O que o Apdex esconde?

Ele espreme toda a distribuição de tempos de resposta em três faixas, então não diz quão lentas foram as requisições frustradas. Uma requisição de 2,1 segundos e outra de 30 segundos baixam a pontuação exatamente o mesmo tanto.

Por isso ele funciona melhor ao lado de outros números:

  • Percentis mostram quão lentas são as requisições lentas. Nosso guia sobre latência de cauda explica por que o percentil 99 importa assim que uma página chama vários serviços.
  • A taxa de erros pega falhas que sua ferramenta talvez não pontue. O Artillery nunca pontua requisições sem resposta e a New Relic conta erros de servidor como frustrados, então leia o número de erros à parte.
  • O tamanho da amostra importa: a New Relic avisa que abaixo de umas 100 requisições por minuto a pontuação fica instável.
  • O viés de medição também pesa. Um gerador de carga que espera as respostas lentas envia menos requisições nos períodos lentos, e o Apdex parece melhor que a realidade; veja coordinated omission.

Como usar o Apdex num teste de carga?

Use como resumo para quem não vai ler um histograma, e deixe a decisão de aprovar ou reprovar com limites explícitos.

Uma rotina que funciona:

  1. Defina T por transação importante a partir da sua meta de latência.
  2. Rode o teste e anote o Apdex nesse T, junto com os percentis 95 e 99 e a taxa de erros.
  3. Compare o Apdex com a execução anterior no mesmo T. Uma queda de 0,93 para 0,86 é um sinal claro até para quem é de fora do time.
  4. Faça o build falhar por limites de percentil e de erros, como descreve nosso guia de critérios de aprovação de um teste de carga, e reporte o Apdex ao lado.

FAQ

Uma pontuação Apdex mais alta é melhor? Sim. 1,0 significa que todas as requisições terminaram dentro de T, e 0 que todas passaram do limite tolerável ou contaram como frustradas.

Qual é o limite Apdex padrão no JMeter? O dashboard HTML usa 500 ms para satisfeito e 1.500 ms para tolerável. Mude com jmeter.reportgenerator.apdex_satisfied_threshold e apdex_tolerated_threshold.

O Apdex inclui os erros? Depende da ferramenta. O JMeter conta amostras com falha como frustradas e a New Relic faz o mesmo com erros de servidor, enquanto o plugin do Artillery só pontua requisições que receberam resposta.

Dá para comparar pontuações Apdex de duas ferramentas? Só quando T, o limite tolerável e o tratamento de erros coincidem. Caso contrário, compare os percentis e as taxas de erros que estão por trás.

Leituras relacionadas


As afirmações técnicas deste artigo não foram revisadas de forma independente.

LoadFocus team
Escrito pela equipe da LoadFocus, as pessoas por trás de um serviço de teste de carga na nuvem.