O documento apresenta três algoritmos de predição de bugs utilizados no Google: FixCache, Rahman e Time-Weighted Risk. FixCache e Rahman foram os algoritmos preferidos pelos desenvolvedores, pois mostram arquivos com muitos bugs corrigidos no passado. O estudo mostrou que os desenvolvedores mudaram seus comportamentos para inspecionar arquivos sinalizados pelos algoritmos.
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
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.
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.
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