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.
| Zona | Tempo de resposta | Peso na pontuação |
|---|---|---|
| Satisfeito (satisfied) | até T | 1 |
| Tolerável (tolerating) | acima de T, até 4T | 0,5 |
| Frustrado (frustrated) | acima de 4T | 0 |
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.
| Ferramenta | T padrão | Tolerável até | Requisições com falha |
|---|---|---|---|
| Dashboard HTML do JMeter | 500 ms | 1.500 ms | contam como frustradas |
Plugin apdex do Artillery | 500 ms | 4T (2.000 ms) | só respostas recebem nota |
| Página de resultados da LoadFocus | 500 ms, fixo | 4T (2.000 ms) | classificadas pelo tempo de resposta |
| New Relic APM | definido por aplicação | 4T | erros 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_thresholdem 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:
- Defina T por transação importante a partir da sua meta de latência.
- Rode o teste e anote o Apdex nesse T, junto com os percentis 95 e 99 e a taxa de erros.
- 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.
- 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
- Latência de cauda: o que é e como medir
- Critérios de aprovação de um teste de carga: como definir
- Coordinated omission: o que é e como evitar
- Vazão vs latência: como se relacionam sob carga
- Teste de carga com Artillery: análise da ferramenta Node.js
- SLO vs SLA: a diferença, os SLIs e o orçamento de erros
As afirmações técnicas deste artigo não foram revisadas de forma independente.