Post on 02-Jul-2015
description
Métricas e automatização
do controle de qualidadeGuilherme 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)
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
http://www.lunametrics.com/blog/2014/05/27/statistical-significance-chrome-extension
http://code.google.com/p/r-google-analytics/
http://www.experian.com/blogs/marketing-forward/2012/12/27/statistical-significance-in
quer testar?
statistical significance
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 qualidadeGuilherme Silveira
www.alura.com.br
www.caelum.com.br