Capa do Ebook gratuito Qualidade de Software com Métricas: Do Bug ao Indicador de Processo

Qualidade de Software com Métricas: Do Bug ao Indicador de Processo

Novo curso

20 páginas

Interpretação estatística sem distorções e leituras equivocadas

Capítulo 12

Tempo estimado de leitura: 0 minutos

+ Exercício

O que significa interpretar estatisticamente “sem distorções”

Interpretar estatisticamente sem distorções é transformar números em decisões sem forçar narrativas, sem confundir correlação com causalidade, sem ignorar incerteza e sem “escolher” recortes que favoreçam uma conclusão prévia. Em métricas de qualidade de software, isso significa ler indicadores como sinais imperfeitos de um processo complexo, onde há variabilidade natural, mudanças de contexto e efeitos de medição. A leitura correta não é “o número subiu, então piorou”, mas “o número mudou; qual parte é variação esperada, qual parte é mudança real, e qual parte pode ser artefato de coleta, segmentação ou sazonalidade?”.

Uma interpretação estatística responsável tem três compromissos: (1) explicitar a pergunta de decisão (o que você pretende decidir com a métrica), (2) quantificar incerteza (o quão confiável é a diferença observada) e (3) preservar contexto (comparar coisas comparáveis, com o mesmo denominador, janela e população). Quando esses compromissos falham, surgem leituras equivocadas que parecem “objetivas” por estarem em números, mas na prática distorcem prioridades e geram incentivos ruins.

Erros comuns que geram leituras equivocadas

1) Confundir variação natural com mudança real (ruído vs. sinal)

Métricas operacionais variam mesmo quando nada “mudou” no processo. Se você reage a cada oscilação semanal, cria um ciclo de decisões reativas, mudanças desnecessárias e perda de foco. A pergunta correta é: a oscilação está dentro do esperado para esse indicador ou ultrapassa o padrão histórico?

Exemplo prático: uma taxa semanal de falhas em deploys oscila entre 2% e 6% há meses. Uma semana aparece 6,5%. Sem um critério de variação esperada, alguém declara “piora”. Com um critério, você pode concluir que 6,5% ainda está dentro do comportamento normal e que não há evidência forte de mudança estrutural.

2) Comparar períodos com volumes diferentes sem normalizar

Comparar “número de incidentes” de um mês para outro sem considerar volume de tráfego, número de deploys, tamanho do produto ou quantidade de usuários é uma fonte clássica de distorção. O correto é usar taxas (por unidade de exposição) ou, no mínimo, apresentar o denominador junto.

Continue em nosso aplicativo

Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

ou continue lendo abaixo...
Download App

Baixar o aplicativo

Exemplo: 20 incidentes em janeiro e 25 em fevereiro. Se fevereiro teve 2× mais deploys, a taxa por deploy pode ter melhorado, mesmo com mais incidentes absolutos.

3) Misturar populações diferentes (mudança de mix)

Quando a composição muda, a métrica agregada pode mudar sem que nenhum subgrupo tenha mudado. Esse é um caso típico do paradoxo de Simpson. Em qualidade, isso acontece quando você agrega serviços críticos e não críticos, times com maturidades diferentes, ou tipos de mudança (configuração vs. código) em um único número.

Exemplo: a taxa de falha total subiu, mas ao segmentar por tipo de mudança você descobre que mudanças de baixo risco melhoraram e as de alto risco pioraram; ou ainda, que o volume de mudanças de alto risco aumentou e “puxou” a média para cima.

4) Usar média quando a distribuição é assimétrica

Muitas métricas de engenharia têm caudas longas (poucos casos muito altos). Nesses casos, a média é instável e pode ser dominada por outliers. Mediana e percentis (p75, p90, p95) costumam representar melhor a experiência típica e a experiência “ruim” (cauda).

Exemplo: tempos de atendimento de incidentes: 90% resolvidos em até 2 horas, mas 10% levam 2 dias. A média pode sugerir “muitas horas”, escondendo que a maioria é rápida e que o problema real está na cauda.

5) “Cherry-picking” de janelas e recortes

Escolher uma janela específica (por exemplo, “últimos 7 dias”) porque ela confirma uma hipótese é uma distorção comum. O mesmo vale para trocar a janela quando o resultado não agrada. A prática correta é definir janelas e critérios antes de olhar o resultado (ou, se for exploratório, declarar que é exploratório).

6) Confundir correlação com causalidade

Dois indicadores podem se mover juntos por causa de um terceiro fator (sazonalidade, mudança de produto, campanha de marketing, alteração de tráfego). A interpretação correta exige hipóteses causais explícitas e, quando possível, validação por desenho de experimento, análise de intervenção ou comparação com grupo de controle.

7) Ignorar múltiplas comparações (p-hacking informal)

Quando você testa muitas segmentações (por time, por serviço, por linguagem, por tipo de mudança) é provável encontrar “algo significativo” por acaso. Mesmo sem testes formais, isso gera narrativas falsas. A mitigação é priorizar poucas hipóteses, registrar o que foi testado e buscar replicação em janelas futuras.

8) Métricas como alvo (Goodhart) e efeitos de incentivo

Quando um número vira meta, as pessoas otimizam o número, não o fenômeno. Isso não é “estatística”, mas é uma distorção de interpretação: você passa a acreditar que o indicador representa qualidade, quando na verdade representa comportamento adaptado ao indicador.

Exemplo: se “quantidade de bugs fechados” vira meta, pode haver fragmentação artificial de tickets, fechamento prematuro ou reclassificação, fazendo o indicador subir sem melhora real.

Ferramentas estatísticas práticas para evitar distorções

Distribuição, não apenas um ponto

Antes de interpretar, olhe a distribuição: histograma, boxplot ou ao menos percentis. Pergunte: há cauda longa? há multimodalidade (dois “picos” sugerindo populações diferentes)? há outliers legítimos (casos raros) ou erros de medição?

Intervalos de confiança e incerteza

Diferenças pequenas podem ser apenas ruído. Intervalos de confiança (IC) ajudam a comunicar incerteza. Para proporções (ex.: taxa de falha), um IC aproxima o intervalo plausível da taxa real dado o volume observado. Para médias/medianas, bootstrap é uma técnica simples e robusta para estimar IC sem assumir normalidade.

Regra prática: quanto menor o volume (denominador), maior a incerteza. Uma taxa de 10% com 10 observações (1/10) é muito menos confiável do que 10% com 1000 observações (100/1000).

Gráficos de controle (SPC) para separar ruído de sinal

Gráficos de controle (como I-MR para medidas contínuas ou p-chart para proporções) ajudam a identificar “causas especiais” (mudanças reais) versus variação comum. Você não precisa ser especialista para usar o conceito: defina uma linha central (média/mediana histórica) e limites baseados na variabilidade. Pontos fora dos limites ou padrões (tendências longas) sugerem mudança real.

Segmentação orientada a hipótese

Segmentar “por tudo” gera achados espúrios. Segmente com base em hipóteses: “mudou o mix de serviços?”, “mudou o tipo de mudança?”, “mudou o horário de deploy?”. Documente a hipótese e o resultado. Se a segmentação explica a mudança, você ganha um caminho de ação; se não explica, você evita narrativas fáceis.

Normalização por exposição

Escolha denominadores que representem exposição ao risco: por deploy, por mudança, por usuário ativo, por requisição, por componente. A escolha depende da pergunta. Se a pergunta é “o processo de mudança está mais arriscado?”, por deploy ou por mudança é mais adequado do que por mês.

Tratamento de outliers com critério explícito

Outliers podem ser o problema real (ex.: incidentes graves) ou podem ser erro de coleta. Remover outliers “porque atrapalham” distorce. Defina critérios: (1) se é erro de medição, corrija/remova e registre; (2) se é evento real raro, reporte separadamente (por exemplo, p95 e p99) e investigue como classe de evento.

Passo a passo prático: como analisar uma mudança em um indicador sem cair em armadilhas

Este roteiro serve para qualquer indicador de qualidade/processo que você acompanhe ao longo do tempo.

Passo 1 — Declare a pergunta de decisão

Escreva em uma frase: “Que decisão eu quero suportar com este indicador?”. Exemplos: “precisamos priorizar redução de falhas em deploy?” ou “houve degradação real após uma mudança no pipeline?”. Sem isso, qualquer variação vira motivo para debate improdutivo.

Passo 2 — Verifique comparabilidade (mesma definição, mesma coleta, mesma população)

  • Houve mudança de instrumentação, regras de contagem, ou deduplicação?
  • O período comparado tem a mesma duração e o mesmo fuso/horário de corte?
  • A população mudou (novos serviços, novos clientes, mudança de tráfego)?

Se algo mudou, registre e, se possível, reprocessar o histórico com a mesma regra. Se não for possível, marque uma “quebra de série” e evite comparar diretamente antes/depois como se fosse contínuo.

Passo 3 — Olhe volume e denominador antes do percentual

Para taxas, sempre anote numerador e denominador. Exemplo: “taxa de falha 8% (4/50)” é diferente de “8% (80/1000)”. Se o denominador é pequeno, trate como sinal fraco e evite decisões fortes.

Passo 4 — Visualize a série temporal com contexto

Plote pelo menos 8–12 pontos (semanas ou sprints) e marque eventos relevantes (release grande, mudança de infra, feriados, incidentes maiores). Evite interpretar apenas dois pontos (“antes vs. depois”) sem ver a tendência e a variabilidade.

Passo 5 — Separe ruído de sinal com um critério simples

Escolha um método:

  • Gráfico de controle: identifique pontos fora dos limites e padrões de tendência.
  • Comparação com IC: calcule IC para a taxa/mediana e veja se os intervalos se sobrepõem muito.
  • Teste simples (quando aplicável): para proporções, um teste de duas proporções; para distribuições, Mann-Whitney. Use com cautela e sempre com contexto.

O objetivo não é “provar” com p-valor, mas evitar decisões baseadas em flutuação normal.

Passo 6 — Segmente para testar hipóteses (sem explodir em recortes)

Faça 2–4 segmentações que tenham relação causal plausível. Exemplos:

  • Por tipo de mudança (configuração, dependência, código)
  • Por criticidade do serviço
  • Por horário/dia (mudança de janela de deploy)
  • Por equipe responsável (quando há ownership claro)

Se a mudança aparece concentrada em um segmento, você tem um alvo. Se aparece em todos, pode ser mudança sistêmica (pipeline, plataforma, política).

Passo 7 — Procure explicações alternativas e fatores de confusão

Liste 3–5 hipóteses alternativas que poderiam explicar o movimento do indicador sem mudança real de qualidade. Exemplos: aumento de tráfego, mudança de mix de clientes, alteração de severidade de classificação, campanha que elevou uso de uma funcionalidade instável.

Para cada hipótese, defina um dado de verificação. Exemplo: “se foi tráfego, a taxa por requisição deveria ficar estável; se foi mix, a taxa por segmento deve mudar”.

Passo 8 — Transforme achado em ação com critério de acompanhamento

Defina uma ação e como você vai saber se funcionou. Exemplo: “adicionar validação automática X” e acompanhar a taxa no segmento afetado por 4–6 semanas. Sem esse fechamento, a análise vira apenas narrativa.

Exemplos práticos de leituras equivocadas e como corrigir

Exemplo A — “A taxa dobrou” com denominador pequeno

Você vê: taxa de falha semanal passou de 2% para 4%. Parece grave (“dobrou”). Ao olhar os números: semana 1 foi 1 falha em 50 deploys; semana 2 foi 2 falhas em 50 deploys. A diferença absoluta é 1 evento. Com esse volume, a incerteza é alta; a ação correta é observar mais semanas, verificar se há padrão e investigar se as falhas têm causa comum.

Exemplo B — Média piorou, mas a maioria melhorou

Tempo de resolução médio subiu de 6h para 9h. Ao olhar percentis: p50 caiu de 3h para 2h, p90 subiu de 20h para 30h. Interpretação correta: o processo típico melhorou, mas a cauda piorou; o foco deve ser reduzir casos extremos (talvez dependências externas, handoffs, ou incidentes de alta severidade).

Exemplo C — Agregado piorou por mudança de mix (Simpson)

Indicador agregado de falhas subiu. Segmentando por serviço: cada serviço manteve ou melhorou levemente, mas o volume migrou para um serviço que historicamente tem taxa maior. Interpretação correta: não houve piora intrínseca; houve mudança de mix. A ação pode ser reduzir risco do serviço mais demandado ou redistribuir tráfego, em vez de “cobrar” todos os times.

Exemplo D — “Melhorou após a mudança” sem controlar sazonalidade

Após uma alteração no processo, a taxa de incidentes cai. Porém, o período coincide com férias e redução de lançamentos. Ao normalizar por número de mudanças e comparar com períodos equivalentes (mesma época do ano), a queda desaparece. Interpretação correta: evidência fraca de causalidade; é preciso uma janela maior ou um desenho melhor (por exemplo, rollout gradual com comparação entre grupos).

Checklist de interpretação para revisões semanais de métricas

  • Definição: a métrica foi calculada do mesmo jeito? houve mudança de regra?
  • Denominador: qual é o volume? a taxa está baseada em quantos eventos?
  • Distribuição: estamos olhando média quando deveríamos olhar mediana/percentis?
  • Comparabilidade: estamos comparando populações equivalentes?
  • Variação: a mudança está fora do padrão histórico (critério explícito)?
  • Segmentação: qual recorte responde melhor à hipótese causal?
  • Alternativas: quais fatores externos poderiam explicar o movimento?
  • Ação: qual decisão será tomada e qual métrica confirmará efeito?

Modelos simples (com fórmulas) para apoiar leituras sem distorção

1) Taxa com intervalo aproximado

Para uma proporção p = x/n (x eventos em n oportunidades), uma aproximação rápida do erro padrão é:

SE ≈ sqrt( p * (1 - p) / n )

Um intervalo aproximado de 95% pode ser:

IC95 ≈ p ± 2 * SE

Use isso como “termômetro” de incerteza. Se n é pequeno, o intervalo fica largo, indicando que a taxa observada é um sinal fraco.

2) Comparação de duas taxas (efeito absoluto e relativo)

Ao comparar períodos, reporte:

  • Diferença absoluta: p2 − p1 (em pontos percentuais)
  • Razão: p2 / p1 (efeito relativo)

E sempre junto com (x1/n1) e (x2/n2). Isso evita a distorção de enfatizar “dobrou” quando a diferença absoluta é pequena.

3) Percentis para cauda longa

Para tempos e durações, reporte pelo menos:

  • p50 (mediana): experiência típica
  • p90 ou p95: experiência ruim
  • p99 (quando aplicável): eventos extremos

Isso reduz a chance de uma média “enganosa” dominar a narrativa.

Como comunicar resultados sem induzir interpretação errada

Use linguagem de evidência, não de certeza

Troque “piorou” por “há indícios de piora” quando a incerteza é alta. Troque “melhorou por causa de X” por “melhorou após X; precisamos validar causalidade”. Essa disciplina reduz decisões precipitadas e evita que o time “defenda” números como se fossem verdades absolutas.

Mostre o número e o contexto mínimo

Um bom cartão de métrica em review inclui: valor atual, histórico recente, numerador/denominador, segmentação principal e nota de eventos relevantes. Isso diminui a chance de alguém tirar conclusões a partir de um único ponto.

Declare limitações

Se houve quebra de série, baixa amostra, mudança de mix ou suspeita de erro de coleta, declare explicitamente. A transparência é parte da interpretação estatística correta: esconder limitações é uma forma de distorção.

Agora responda o exercício sobre o conteúdo:

Em uma revisão semanal de métricas, qual prática ajuda a interpretar mudanças sem distorções?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Uma leitura responsável evita narrativas forçadas: explicita a decisão, garante comparabilidade, analisa numerador/denominador e quantifica incerteza para separar ruído de sinal antes de agir.

Próximo capitúlo

Trade-offs entre velocidade, estabilidade e custo de qualidade

Arrow Right Icon
Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.