SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Predição de Bugs
Apresentado por

Reinildo Souza

Wagner Bittencourt
A Bug’s Life
Roteiro
●
●
●

Introdução
Predição de Bugs no Google
Descrição dos algoritmos
○
○
○

●

FixCache
Rahman
TWR

Características esperadas dos algoritmos
O que é Predição de Bugs?
O que é Predição de Bugs?
É a tentativa de prever futuros bugs, tendo como base dados de
bugs passados.
Predição de Bugs no
Predição de Bugs no

Milhares de engenheiros trabalhando na base de códigos todo dia.
50% deste código muda a cada mês.
Predição de Bugs no
Como assegurar que toda essa base de código permaneça saudável?
Predição de Bugs no
Como assegurar que toda essa base de código permaneça saudável?
■ Testes de unidade
■ Revisão de código
■ Criar novos testes de unidade para novas
funcionalidades
Predição de Bugs no

“Looks Good To Me”
O revisor de códigos analisa se os testes ficaram verdes e se faz o
que deveria. Então carimba com L.G.T.M.
Predição de Bugs no

Hot Spots
Códigos que criam problemas várias e várias
vezes quando desenvolvedores tentam
consertá-lo.
Resistentes aos testes de unidade.
Predição de Bugs no

Identificando hot spots
machine learnings + análises estatísticas
Predição de Bugs no

FixCache
Bug tracker que analisa a partir de uma fonte de logs de commits.
Ajuda a identificar os hot spots e alertar os desenvolvedores.
Predição de Bugs no

Rahman
Encontrou um algoritmo simples que funciona tão bem quanto
algoritmos de predição de bugs mais complexos.
Predição de Bugs no

Rahman
Rankeia os arquivos pelo número de vezes que foi modificado
para bug-fixing. Mostra onde estão os hot spots.
Predição de Bugs funciona com
desenvolvedores humanos?
Descobrindo a partir de um caso de estudo do Google
Algoritmos são baseados em aspectos
de como o código foi desenvolvido e
várias métricas que o código exibe, em
vez da análise tradicional
Objetivo da pesquisa

Investigar como desenvolvedores
respondem a algoritmos de predição de
bugs a partir de 3 questões da
pesquisas:
Objetivo da pesquisa

Q 1: Quantos arquivos propensos a bug
eles achariam e qual o algoritmo
preferido?
Objetivo da pesquisa

Q 2: Quais caracterísiticas desejáveis
que um algoritmo de predição de bugs
deveria ter?
Objetivo da pesquisa

Q 3: Os desenvolvedores mudaram seus
comportamentos quando apresentados
aos resultados de predição de bugs?
Resultado da pesquisa

Para responder as perguntas foi feita uma
parceria com o depto. de Engenheiros de
Ferramentas para avaliar vários algoritmos
e desenvolver um no Google
Resultado da pesquisa
As questões foram direcionas de 3 maneiras:
Q 1 - Estudo de usuário formal
Q 2 - Discussão informal entre desenvolvedores
Q 3 - Dados quantitativos do sistema de code review do
Google
Resultado da pesquisa

Desenvolvedores preferem algoritmos
de predição que mostram arquivos com
um grande número de bugs encerrados
Resultado da pesquisa

...e que apresentam um número de
características desejáveis que um
algoritmo de predição deveria ter.
Escolha do algoritmo

FixCache
Um dos mais populares no meio
acadêmico, é um algoritmo que usa a
ideia de “localidade” de bug.
Escolha do algoritmo

FixCache
Utilizando várias localidades, cria um
cache de arquivos que foram sinalizados
como potenciais bugs.
Escolha do algoritmo

FixCache
Quando um arquivo encontra uma
dessas localidades críticas, entra na
cache, e um novo arquivo é substituído
pela política de L.R.U.
Escolha do algoritmo

Rahman
Concluiu que a densidade de bugs de
arquivos na cache é geralmente maior
que fora da cache.
Escolha do algoritmo

Rahman
Utiliza os números de bugs
encerradospara rankear arquivos de
mais propensos a bug ao menos
propenso a bug.
Escolha do algoritmo

FixCache + Rahman
Performance + simplicidade
um completa o outro
Estudo de usuários

Analisando Q 1
utiliza o conhecimento do desenvolvedor para descobrir se os
arquivos sinalizados como bugs batem com a intuição do
desenvolvedor
Estudo de usuários

Analisando Q 2
Entrevistas:
Foram secionados dois projetos A e B, e o grupo de entrevistados
também foram dividos em 2.
Cada um recebeu 3 listas com 20 arquivos. Eles deviam marcar se
os arquivos eram propensos a bugs.
Estudo de usuários

Analisando Q 3
Classificação das respostas adquiridas.
●
●
●

Bug-prone: ao menos 3 respostas devem indicar como propenso a bug.
Não bug-prone: mesmo método é usado de forma reversa
O arquivo não é classificado, e se receber 5 respostas que indicam não saber o
arquivo é classificado como desconhecido.
Resultados
Resultados
Algoritmo Time -Weighted Risk
Derivado do algoritmo de Rahman, tem o
objetivo de marcar os arquivos com
propensão de bugs.
Algoritmo Time -Weighted Risk
i → commit de correção de bug.
n → número de commits de
correções.
ti → tempo normalizado do
commit para correção de bug.
w →define o quão forte a
decadência deve ser.
Algoritmo Time -Weighted Risk, exemplo
passo a passo.
Algoritmo Time -Weighted Risk, exemplo.
Algoritmo Time -Weighted Risk, exemplo.
Conclusão
A predição de bugs não proporciona
resultados totalmente precisos e seu
público-alvo deve ser a equipe de qualidade
de software.
Referências
●
●

Bug Prediction at Google - http://google-engtools.blogspot.com.br/2011/12/bug-prediction- atgoogle.html
Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, E. James Whitehead Jr.
“Does Bug Prediction Support Human Developers? Findings From a Google Case Study”,
http://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/ 41145.pdf
Imagens
●
●
●
●
●

A Bug’s Life - http://prod.entertainment.telly.sky.com/image/unscaled/2013/03/07/A-Bugs-Life-CW-02.
jpg
Logo Google 2013 Official - http://pt.wikipedia.org/wiki/Ficheiro:Logo_Google_2013_Official.svg
Thumbs up answer - http://images.sodahead.com/polls/001083119/thumbsup_answer_4_xlarge.jpeg
Hot spots on dogs - http://www.petmd.com/sites/default/files/hotspot3.jpg
Budget + Goals - http://1.bp.blogspot.com/-tU6IeBU_1sc/UGTRgpypdI/AAAAAAAAAD0/KNFQaoAPXQ Q/s1600/Budget+Goals.png

Mais conteúdo relacionado

Mais procurados

Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Inspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilInspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilAgile_Clinic
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Renato Groff
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 
Como aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuaisComo aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuaisMarcelo Galvão
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustStefan Teixeira
 
Introdução a Programação Orientada a testes
Introdução a Programação Orientada a testesIntrodução a Programação Orientada a testes
Introdução a Programação Orientada a testesAndré Luiz Forchesatto
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 

Mais procurados (20)

Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Inspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilInspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágil
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Pylint
PylintPylint
Pylint
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Avaliacao2017
Avaliacao2017Avaliacao2017
Avaliacao2017
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 
Como aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuaisComo aumentar a eficiência dos seus testes manuais
Como aumentar a eficiência dos seus testes manuais
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
Pep8 pylint
Pep8 pylintPep8 pylint
Pep8 pylint
 
Introdução a Programação Orientada a testes
Introdução a Programação Orientada a testesIntrodução a Programação Orientada a testes
Introdução a Programação Orientada a testes
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 

Destaque (20)

Motocontinuum fisl15
Motocontinuum fisl15Motocontinuum fisl15
Motocontinuum fisl15
 
LA CRÓNICA 575
LA CRÓNICA 575LA CRÓNICA 575
LA CRÓNICA 575
 
Plataforma Tecnológica do clicRBS
Plataforma Tecnológica do clicRBSPlataforma Tecnológica do clicRBS
Plataforma Tecnológica do clicRBS
 
Caderno 7 e 8 pnaic 12 nov
Caderno 7  e 8 pnaic 12 novCaderno 7  e 8 pnaic 12 nov
Caderno 7 e 8 pnaic 12 nov
 
Apresentação tot. 5.1
Apresentação tot. 5.1Apresentação tot. 5.1
Apresentação tot. 5.1
 
A história dos massuia de monte aprazível, pietro carlo mazzuia terceira ed...
A história dos massuia de monte aprazível, pietro carlo mazzuia   terceira ed...A história dos massuia de monte aprazível, pietro carlo mazzuia   terceira ed...
A história dos massuia de monte aprazível, pietro carlo mazzuia terceira ed...
 
Cálculo da multa trabalhista
Cálculo da multa trabalhistaCálculo da multa trabalhista
Cálculo da multa trabalhista
 
Saladas
SaladasSaladas
Saladas
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
lellyevacountry.blogspot.com
lellyevacountry.blogspot.comlellyevacountry.blogspot.com
lellyevacountry.blogspot.com
 
Recital poesía
Recital poesíaRecital poesía
Recital poesía
 
Feliz aniversario
Feliz aniversarioFeliz aniversario
Feliz aniversario
 
mpa_sergio y felipe
mpa_sergio y felipempa_sergio y felipe
mpa_sergio y felipe
 
Colores del arco iris
Colores del arco irisColores del arco iris
Colores del arco iris
 
Creio na igreja catolica
Creio na igreja catolicaCreio na igreja catolica
Creio na igreja catolica
 
mpa_joaquin y oscar
mpa_joaquin y oscarmpa_joaquin y oscar
mpa_joaquin y oscar
 
Evaluaciongrupfuncorreg
EvaluaciongrupfuncorregEvaluaciongrupfuncorreg
Evaluaciongrupfuncorreg
 
Joy final
Joy finalJoy final
Joy final
 
Prova (por fazer)_2ª_lei_de_mendel_3º_ano
Prova (por fazer)_2ª_lei_de_mendel_3º_anoProva (por fazer)_2ª_lei_de_mendel_3º_ano
Prova (por fazer)_2ª_lei_de_mendel_3º_ano
 
Feliz aniversario
Feliz aniversarioFeliz aniversario
Feliz aniversario
 

Semelhante a Predição de Bugs no Google

Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidaderzauza
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de softwareJoyce Bastos
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de softwareAlex Camargo
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?Kamilla Queiroz Xavier
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...Leandro Ugioni
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
 
Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de softwareluacal
 
Desenvolvimento em Comunidade
Desenvolvimento em ComunidadeDesenvolvimento em Comunidade
Desenvolvimento em ComunidadePedro Dias
 

Semelhante a Predição de Bugs no Google (20)

Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de software
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Dba Testes Gerentes B2
Dba Testes Gerentes B2Dba Testes Gerentes B2
Dba Testes Gerentes B2
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
Melhoria da qualidade e padrões de código fonte utilizando ferramentas de aná...
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Es2 modelo de processo de software
Es2 modelo de processo de softwareEs2 modelo de processo de software
Es2 modelo de processo de software
 
Desenvolvimento em Comunidade
Desenvolvimento em ComunidadeDesenvolvimento em Comunidade
Desenvolvimento em Comunidade
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 

Predição de Bugs no Google

  • 1. Predição de Bugs Apresentado por Reinildo Souza Wagner Bittencourt A Bug’s Life
  • 2. Roteiro ● ● ● Introdução Predição de Bugs no Google Descrição dos algoritmos ○ ○ ○ ● FixCache Rahman TWR Características esperadas dos algoritmos
  • 3. O que é Predição de Bugs?
  • 4. O que é Predição de Bugs? É a tentativa de prever futuros bugs, tendo como base dados de bugs passados.
  • 6. Predição de Bugs no Milhares de engenheiros trabalhando na base de códigos todo dia. 50% deste código muda a cada mês.
  • 7. Predição de Bugs no Como assegurar que toda essa base de código permaneça saudável?
  • 8. Predição de Bugs no Como assegurar que toda essa base de código permaneça saudável? ■ Testes de unidade ■ Revisão de código ■ Criar novos testes de unidade para novas funcionalidades
  • 9. Predição de Bugs no “Looks Good To Me” O revisor de códigos analisa se os testes ficaram verdes e se faz o que deveria. Então carimba com L.G.T.M.
  • 10. Predição de Bugs no Hot Spots Códigos que criam problemas várias e várias vezes quando desenvolvedores tentam consertá-lo. Resistentes aos testes de unidade.
  • 11. Predição de Bugs no Identificando hot spots machine learnings + análises estatísticas
  • 12. Predição de Bugs no FixCache Bug tracker que analisa a partir de uma fonte de logs de commits. Ajuda a identificar os hot spots e alertar os desenvolvedores.
  • 13. Predição de Bugs no Rahman Encontrou um algoritmo simples que funciona tão bem quanto algoritmos de predição de bugs mais complexos.
  • 14. Predição de Bugs no Rahman Rankeia os arquivos pelo número de vezes que foi modificado para bug-fixing. Mostra onde estão os hot spots.
  • 15. Predição de Bugs funciona com desenvolvedores humanos? Descobrindo a partir de um caso de estudo do Google
  • 16. Algoritmos são baseados em aspectos de como o código foi desenvolvido e várias métricas que o código exibe, em vez da análise tradicional
  • 17. Objetivo da pesquisa Investigar como desenvolvedores respondem a algoritmos de predição de bugs a partir de 3 questões da pesquisas:
  • 18. Objetivo da pesquisa Q 1: Quantos arquivos propensos a bug eles achariam e qual o algoritmo preferido?
  • 19. Objetivo da pesquisa Q 2: Quais caracterísiticas desejáveis que um algoritmo de predição de bugs deveria ter?
  • 20. Objetivo da pesquisa Q 3: Os desenvolvedores mudaram seus comportamentos quando apresentados aos resultados de predição de bugs?
  • 21. Resultado da pesquisa Para responder as perguntas foi feita uma parceria com o depto. de Engenheiros de Ferramentas para avaliar vários algoritmos e desenvolver um no Google
  • 22. Resultado da pesquisa As questões foram direcionas de 3 maneiras: Q 1 - Estudo de usuário formal Q 2 - Discussão informal entre desenvolvedores Q 3 - Dados quantitativos do sistema de code review do Google
  • 23. Resultado da pesquisa Desenvolvedores preferem algoritmos de predição que mostram arquivos com um grande número de bugs encerrados
  • 24. Resultado da pesquisa ...e que apresentam um número de características desejáveis que um algoritmo de predição deveria ter.
  • 25. Escolha do algoritmo FixCache Um dos mais populares no meio acadêmico, é um algoritmo que usa a ideia de “localidade” de bug.
  • 26. Escolha do algoritmo FixCache Utilizando várias localidades, cria um cache de arquivos que foram sinalizados como potenciais bugs.
  • 27. Escolha do algoritmo FixCache Quando um arquivo encontra uma dessas localidades críticas, entra na cache, e um novo arquivo é substituído pela política de L.R.U.
  • 28. Escolha do algoritmo Rahman Concluiu que a densidade de bugs de arquivos na cache é geralmente maior que fora da cache.
  • 29. Escolha do algoritmo Rahman Utiliza os números de bugs encerradospara rankear arquivos de mais propensos a bug ao menos propenso a bug.
  • 30. Escolha do algoritmo FixCache + Rahman Performance + simplicidade um completa o outro
  • 31. Estudo de usuários Analisando Q 1 utiliza o conhecimento do desenvolvedor para descobrir se os arquivos sinalizados como bugs batem com a intuição do desenvolvedor
  • 32. Estudo de usuários Analisando Q 2 Entrevistas: Foram secionados dois projetos A e B, e o grupo de entrevistados também foram dividos em 2. Cada um recebeu 3 listas com 20 arquivos. Eles deviam marcar se os arquivos eram propensos a bugs.
  • 33. Estudo de usuários Analisando Q 3 Classificação das respostas adquiridas. ● ● ● Bug-prone: ao menos 3 respostas devem indicar como propenso a bug. Não bug-prone: mesmo método é usado de forma reversa O arquivo não é classificado, e se receber 5 respostas que indicam não saber o arquivo é classificado como desconhecido.
  • 36. Algoritmo Time -Weighted Risk Derivado do algoritmo de Rahman, tem o objetivo de marcar os arquivos com propensão de bugs.
  • 37. Algoritmo Time -Weighted Risk i → commit de correção de bug. n → número de commits de correções. ti → tempo normalizado do commit para correção de bug. w →define o quão forte a decadência deve ser.
  • 38. Algoritmo Time -Weighted Risk, exemplo passo a passo.
  • 39. Algoritmo Time -Weighted Risk, exemplo.
  • 40. Algoritmo Time -Weighted Risk, exemplo.
  • 41. Conclusão A predição de bugs não proporciona resultados totalmente precisos e seu público-alvo deve ser a equipe de qualidade de software.
  • 42. Referências ● ● Bug Prediction at Google - http://google-engtools.blogspot.com.br/2011/12/bug-prediction- atgoogle.html Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, E. James Whitehead Jr. “Does Bug Prediction Support Human Developers? Findings From a Google Case Study”, http://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/ 41145.pdf
  • 43. Imagens ● ● ● ● ● A Bug’s Life - http://prod.entertainment.telly.sky.com/image/unscaled/2013/03/07/A-Bugs-Life-CW-02. jpg Logo Google 2013 Official - http://pt.wikipedia.org/wiki/Ficheiro:Logo_Google_2013_Official.svg Thumbs up answer - http://images.sodahead.com/polls/001083119/thumbsup_answer_4_xlarge.jpeg Hot spots on dogs - http://www.petmd.com/sites/default/files/hotspot3.jpg Budget + Goals - http://1.bp.blogspot.com/-tU6IeBU_1sc/UGTRgpypdI/AAAAAAAAAD0/KNFQaoAPXQ Q/s1600/Budget+Goals.png