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

Post on 02-Jul-2015

581 views 0 download

description

"Essa história vai melhorar as vendas. Essa refatoração vai melhorar a manutenção". Será? Se queremos escolher histórias e manter um produto melhor para o cliente final, essa decisão deve ser baseada em alguma medida. Complexidade do código? Coesão? Aguentar altas cargas? Diminuir taxas de erro? Efetuar mais compras? Para entender qualquer uma delas é preciso medir: veremos nessa palestra como pegar um projeto cujo build mínimo está automatizado, mediremos a complexidade do código, o desempenho em relação a erros, a vendas e a percepção do usuário final. Mantemos um rastreamento dessas métricas com o passar do tempo: encontrando os commits responsáveis pela quebra nas regras estabelecidas. A decisão se algo é bom ou não deixa de ser romântico e passa a ser algo lógico.

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

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)

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

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