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

Predição de bugs

  • 1.
    Predição de Bugs Apresentadopor Reinildo Souza Wagner Bittencourt A Bug’s Life
  • 2.
    Roteiro ● ● ● Introdução Predição de Bugsno 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.
  • 5.
  • 6.
    Predição de Bugsno Milhares de engenheiros trabalhando na base de códigos todo dia. 50% deste código muda a cada mês.
  • 7.
    Predição de Bugsno Como assegurar que toda essa base de código permaneça saudável?
  • 8.
    Predição de Bugsno 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 Bugsno “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 Bugsno 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 Bugsno Identificando hot spots machine learnings + análises estatísticas
  • 12.
    Predição de Bugsno 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 Bugsno Rahman Encontrou um algoritmo simples que funciona tão bem quanto algoritmos de predição de bugs mais complexos.
  • 14.
    Predição de Bugsno 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 Bugsfunciona com desenvolvedores humanos? Descobrindo a partir de um caso de estudo do Google
  • 16.
    Algoritmos são baseadosem 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 Investigarcomo desenvolvedores respondem a algoritmos de predição de bugs a partir de 3 questões da pesquisas:
  • 18.
    Objetivo da pesquisa Q1: Quantos arquivos propensos a bug eles achariam e qual o algoritmo preferido?
  • 19.
    Objetivo da pesquisa Q2: Quais caracterísiticas desejáveis que um algoritmo de predição de bugs deveria ter?
  • 20.
    Objetivo da pesquisa Q3: Os desenvolvedores mudaram seus comportamentos quando apresentados aos resultados de predição de bugs?
  • 21.
    Resultado da pesquisa Pararesponder 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 Asquestõ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 Desenvolvedorespreferem algoritmos de predição que mostram arquivos com um grande número de bugs encerrados
  • 24.
    Resultado da pesquisa ...eque apresentam um número de características desejáveis que um algoritmo de predição deveria ter.
  • 25.
    Escolha do algoritmo FixCache Umdos mais populares no meio acadêmico, é um algoritmo que usa a ideia de “localidade” de bug.
  • 26.
    Escolha do algoritmo FixCache Utilizandovárias localidades, cria um cache de arquivos que foram sinalizados como potenciais bugs.
  • 27.
    Escolha do algoritmo FixCache Quandoum 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 Concluiuque a densidade de bugs de arquivos na cache é geralmente maior que fora da cache.
  • 29.
    Escolha do algoritmo Rahman Utilizaos 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 AnalisandoQ 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 AnalisandoQ 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 AnalisandoQ 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.
  • 34.
  • 35.
  • 36.
    Algoritmo Time -WeightedRisk Derivado do algoritmo de Rahman, tem o objetivo de marcar os arquivos com propensão de bugs.
  • 37.
    Algoritmo Time -WeightedRisk 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 -WeightedRisk, exemplo passo a passo.
  • 39.
  • 40.
  • 41.
    Conclusão A predição debugs não proporciona resultados totalmente precisos e seu público-alvo deve ser a equipe de qualidade de software.
  • 42.
    Referências ● ● Bug Prediction atGoogle - 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