Métricas e automatização 
do controle de qualidade 
Guilherme Silveira 
www.alura.com.br 
www.caelum.com.br
Prelude
Meu cenário
Copa 2014
Copa 2014
Copa 2014
Meu cenário 
• equipe técnica pequena (3 pessoas) 
• garantir que funciona 
• garantir que continua desenvolvendo
Meu cenário 
• equipe de negócios pequena (3 pessoas) 
• aumentar a venda 
• aumentar a felicidade
"Essa história vai melhorar as vendas.” 
“Essa refatoração vai melhorar a manutenção”. 
Será?
Hoje eu tô mais feliz! 
• Comer maçã deixa mais feliz? 
• Palhaço deixa mais feliz? 
• O que é feliz? O que é mais feliz?
“convincing methods of 
measurement"
Queremos saber 
• Meu código é bom? 
• funciona em produção 
• Meu cliente comprou mais? 
• testes com cliente
Parte 1
Meu código tá bom 
• O que é bom? 
• vai dar erro? 
• digitar menos? 
• permitir mudanças? 
• complexidade? 
• erros?
O que é bom? 
• vai dar erro? compilador. 
• digitar menos? IDE. 
• permitir mudanças? testes + compilador + IDE 
• complexidade? medir com compl. ciclomática. 
• erros? log
(complexidade ciclomática)
Meu código tá bom 
www.aniche.com.br/publications
O que vamos fazer? 
• Erros em produção!!!! O que fazer???
Se meu editor mostrasse…
Meu código tá bom 
• Capturando dados 
• Complexidade por commit 
• Erros por deploy
Salvando complexidade 
• commit + complexidade => salva o número
Salvando complexidade
Salvando métrica
Visualizando a métrica
Code Sheriff 
chefe no topo = suspeito
Code Sheriff
Code Sheriff
Code Sheriff
Code Sheriff 
“Efeitos da Prática de Revisão de Código na Caelum: 
Um Estudo de Caso Preliminar” 
quinta feira, 11:30 com Maurício Aniche e Chico Sokol
Bugs por deploy 
• deploy + exception line => acumular as linhas
Commit => Tag
Metric + Metrics
value / array
armazenar a quantidade!
Visualizando a métrica
Bônus 
• independente de linguagem 
• gratuito (thanks heroku) 
• todo: providers de log, hot spots etc
Resumindo 
• melhor que TXT 
• melhor que dashboard 
• é a SUA tela de desenvolvedor
Parte 2
Garantias 
• compilação 
• refatoração (IDE, não editor) 
• teste 
• produção em sua IDE
Meu cliente comprou mais 
• O que é mais? 
• 0.1%? 5%? 10%? 1000%? 
• O que é comprar? 
• comprar é anomalia? 
• 0.0001% => 0.01% 
• 1 compra para 100 compras?
Testes A/B 
• Evitar algumas variações de variáveis 
• Mas mesmo assim não evita tudo
Amostra: teste a/b 
• Testei clientes no A: 10 compras 
• Testei clientes no B: 100 compras 
• Uhu! B é 10 x mais efetivo 
• Será?
Amostra: teste a/b 
• Testei 100 clientes no A: 10 compras 
• Testei 10000 clientes no B: 100 compras 
• Coco! A é 10 x mais efetivo 
• Será?
Faço o teste novamente 
• Resultando completamente trocado 
• A/B => A ganha, A/B => B ganha 
• A/A’ => A ganha 
• qual a margem de erro?
Amostra: teste a/b 
• Capturando os dados 
• opção mostrada 
• resultado da ação (comprou/não comprou)
Amostra: teste a/b 
• nos testes que fazemos se usarmos 
• 2 sigma => 95.4% 
• 4.6% de chance de eu errar 
• é suficiente?
Amostra: teste 
• Mas os físicos usam isso Guilherme 
• Boson de Higgs 
• Sim, com 5 sigma 
• 3 x 10 -7 => 0.00007%
Amostra: teste a/b 
• Visualizando 
• mostrando se está dentro ou fora do erro 
• conclusivo ou não
Não adianta fazer 1000 
testes e 1 só dar certo! 
• 1000 testes vai dar caca 
• Você VAI achar um certo. E ele está errado. 
• Meta meta erro 
• Correção de Bonferroni
google analytics 
statistical significance
google analytics 
statistical significance
z-test plugin
quer testar? 
statistical significance 
experian.com/blogs/marketing-forward/2012/12/27/statistical-significance-http://code.google.com/p/r-google-analytics/ 
lunametrics.com/blog/2014/05/27/statistical-significance-chrome-extension 
http://www.michaelwhitaker.com/2013/12/17/z-test-google-analytics/
Exemplo 1 
• 20 mil visitantes/mês 
• A: 10mil, B: 10 mil 
• A converte 1% 
• B converte 30% a mais (??????) 
• 1 mês depois, 95% ok
Exemplo 2 
• 20 mil visitantes/mês 
• A: 10mil, B: 10 mil 
• A converte 1% 
• B converte 10% a mais 
• 6 meses depois, 95% ok
Fechando
Resumindo 
• Capture 
• Armazene 
• Mostre 
• Acompanhe no dia a dia 
• Desconfie do resultado
O que eu quero 
• garantias ao digitar 
• garantias ao refatorar 
• garantias ao rodar local 
• garantias ao rodar remoto 
• garantias ao mudar o processo
O que eu gosto 
• garantias ao digitar: compilador Java, Panettone 
• garantias ao refatorar: Eclipse 
• garantias ao rodar local: testes 
• garantias ao rodar remoto: testes 
• garantias ao mudar o processo: dados de 
produção
Métricas e automatização 
do controle de qualidade 
Guilherme Silveira 
www.alura.com.br 
www.caelum.com.br

Métricas e a automatização do controle de qualidade