Uma Análise da Co-Evolução de Teste em Projetos de Software no GitHub
Resumo
Os sistemas de software evoluem e essa evolução requer modificações em seu código-fonte para a realização de alterações, como correções de bugs, melhorias de desempenho ou adição de novas funcionalidades. Tendo em vista a importância da realização de testes para garantir a qualidade de um software, modificações no código-fonte devem ser acompanhadas de alterações e incrementos do código de teste. Entretanto, testes e a co-evolução desse muitas vezes são negligenciados no desenvolvimento de projetos de software, podendo resultar em maior esforço e custo para manter o projeto. Neste trabalho, através da análise de um grande dataset, composto pelo histórico de desenvolvimento de 3.000 projetos hospedados no Github, investigamos como artefatos de código-fonte e teste evoluem. Através da aplicação de técnicas de clusterização identificamos cinco padrões comuns de crescimento de teste. Adicionalmente, ao contrastar dados dos repositórios identificados com co-evolução e sem coevolução foi observado que os primeiros apresentam maiores níveis de contribuição (commits, colaboradores e forks).
Palavras-chave:
Co-evolução, teste, mineração de repositório de software, GitHub
Referências
Hudson Borges, Andre Hora, and Marco Tulio Valente. 2016. Understanding the factors that impact the popularity of GitHub repositories. In International Conference on Software Maintenance and Evolution (ICSME). IEEE, 334–344.
Flavio Figueiredo. 2013. On the prediction of popularity of trends and hits for user generated videos. In 6th International Conference on Web Search and Data Mining. 741–746.
Danielle Gonzalez, Joanna CS Santos, Andrew Popovich, Mehdi Mirakhorli, and Mei Nagappan. 2017. A large-scale study on the usage of testing patterns that address maintainability attributes: patterns for ease of modification, diagnoses, and comprehension. In 14th International Conference on Mining Software Repositories (MSR). IEEE, 391–401.
Janette Lehmann, Bruno Gonçalves, José J Ramasco, and Ciro Cattuto. 2012. Dynamical classes of collective attention in twitter. In 21st International Conference on World Wide Web. 251–260.
Stanislav Levin and Amiram Yehudai. 2017. The co-evolution of test maintenance and code maintenance through the lens of fine-grained semantic changes. In International Conference on Software Maintenance and Evolution (ICSME). 35–46.
Cosmin Marsavina, Daniele Romano, and Andy Zaidman. 2014. Studying finegrained co-evolution patterns of production and test code. In 14th International Working Conference on Source Code Analysis and Manipulation. IEEE, 195–204.
Patrick E McKnight and Julius Najab. 2010. Mann-Whitney U Test. The Corsini encyclopedia of psychology (2010), 1–1.
Daniel A Menasce and Virgilio Almeida. 2001. Capacity Planning forWeb Services: metrics, models, and methods. Prentice Hall PTR.
Tom Mens, Michel Wermelinger, Stéphane Ducasse, Serge Demeyer, Robert Hirschfeld, and Mehdi Jazayeri. 2005. Challenges in software evolution. In 8th International Workshop on Principles of Software Evolution (IWPSE). IEEE, 13–22.
Glenford J Myers, Tom Badgett, Todd M Thomas, and Corey Sandler. 2004. The art of software testing. Vol. 2. Wiley Online Library.
Ian Sommerville. 2011. Software engineering 9th Edition. Pearson.
László Vidács and Martin Pinzger. 2018. Co-evolution analysis of production and test code by learning association rules of changes. In Workshop on Machine Learning Techniques for Software Quality Evaluation (MaLTeSQuE). IEEE, 31–36.
Jaewon Yang and Jure Leskovec. 2011. Patterns of temporal variation in online media. In 4th International Conference on Web Search and Data Mining. 177–186.
Andy Zaidman, Bart Van Rompaey, Arie van Deursen, and Serge Demeyer. 2011. Studying the co-evolution of production and test code in open source and industrial developer test processes through repository mining. Empirical Software Engineering 16, 3 (2011), 325–364.
Flavio Figueiredo. 2013. On the prediction of popularity of trends and hits for user generated videos. In 6th International Conference on Web Search and Data Mining. 741–746.
Danielle Gonzalez, Joanna CS Santos, Andrew Popovich, Mehdi Mirakhorli, and Mei Nagappan. 2017. A large-scale study on the usage of testing patterns that address maintainability attributes: patterns for ease of modification, diagnoses, and comprehension. In 14th International Conference on Mining Software Repositories (MSR). IEEE, 391–401.
Janette Lehmann, Bruno Gonçalves, José J Ramasco, and Ciro Cattuto. 2012. Dynamical classes of collective attention in twitter. In 21st International Conference on World Wide Web. 251–260.
Stanislav Levin and Amiram Yehudai. 2017. The co-evolution of test maintenance and code maintenance through the lens of fine-grained semantic changes. In International Conference on Software Maintenance and Evolution (ICSME). 35–46.
Cosmin Marsavina, Daniele Romano, and Andy Zaidman. 2014. Studying finegrained co-evolution patterns of production and test code. In 14th International Working Conference on Source Code Analysis and Manipulation. IEEE, 195–204.
Patrick E McKnight and Julius Najab. 2010. Mann-Whitney U Test. The Corsini encyclopedia of psychology (2010), 1–1.
Daniel A Menasce and Virgilio Almeida. 2001. Capacity Planning forWeb Services: metrics, models, and methods. Prentice Hall PTR.
Tom Mens, Michel Wermelinger, Stéphane Ducasse, Serge Demeyer, Robert Hirschfeld, and Mehdi Jazayeri. 2005. Challenges in software evolution. In 8th International Workshop on Principles of Software Evolution (IWPSE). IEEE, 13–22.
Glenford J Myers, Tom Badgett, Todd M Thomas, and Corey Sandler. 2004. The art of software testing. Vol. 2. Wiley Online Library.
Ian Sommerville. 2011. Software engineering 9th Edition. Pearson.
László Vidács and Martin Pinzger. 2018. Co-evolution analysis of production and test code by learning association rules of changes. In Workshop on Machine Learning Techniques for Software Quality Evaluation (MaLTeSQuE). IEEE, 31–36.
Jaewon Yang and Jure Leskovec. 2011. Patterns of temporal variation in online media. In 4th International Conference on Web Search and Data Mining. 177–186.
Andy Zaidman, Bart Van Rompaey, Arie van Deursen, and Serge Demeyer. 2011. Studying the co-evolution of production and test code in open source and industrial developer test processes through repository mining. Empirical Software Engineering 16, 3 (2011), 325–364.
Publicado
27/09/2021
Como Citar
MIRANDA, Charles; AVELINO, Guilherme; SANTOS NETO, Pedro; DA SILVA, Victor.
Uma Análise da Co-Evolução de Teste em Projetos de Software no GitHub. In: WORKSHOP DE VISUALIZAÇÃO, EVOLUÇÃO E MANUTENÇÃO DE SOFTWARE (VEM), 9. , 2021, Joinville.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2021
.
p. 36-40.
DOI: https://doi.org/10.5753/vem.2021.17215.