On the interplay between developer knowledge diversity and test code quality: understanding and addressing test smells in software development. - Silva, Denivan do Carmo Campos da (2024)
Projetos de software open-source resultam de contribuições de pessoas com todos os níveis de habilidade. O desenvolvimento de software é uma atividade colaborativa, social e intensiva em conhecimento, e aspectos centrados no ser humano, como comunicação e personalidade, podem impactar projetos de software. Esses fatores são essenciais para a diversidade da equipe. Existem três tipos de diversidade de equipe: diversidade informacional (ou de conhecimento), social e de valores. Nesse contexto, temos notado muito interesse na comunidade de Engenharia de Software sobre a relação entre fatores humanos e a qualidade do código. Investigar se a diversidade de conhecimento (aspectos humanos) afeta a qualidade do código de teste é importante. A literatura apresenta vários estudos que investigam a qualidade do código de teste. Ainda assim, existem poucas evidências empíricas sobre os efeitos da diversidade de conhecimento (por exemplo, formação educacional, nível de experiência profissional, expertise e habilidades) e a qualidade do código de teste. Se considerarmos a prevalência de ``test smells'' na pesquisa atual de testes de software, o número é ainda mais limitado. Test smells são implementações ruins inseridas por desenvolvedores e podem prejudicar a compreensibilidade e a manutenibilidade dos conjuntos de testes. Estudos recentes discutem as percepções dos desenvolvedores sobre test smells e seu impacto na melhoria da qualidade, mas há pouca evidência acerca dos efeitos da diversidade de conhecimento nessa direção, especialmente no que diz respeito à colaboração interdisciplinar e à troca de experiências entre equipes. Neste contexto, esta tese tem como objetivo reunir evidências empíricas sobre a relação entre a diversidade de conhecimento dos desenvolvedores e a qualidade do código de teste, particularmente o efeito que os test smells podem trazer na qualidade do software. Inicialmente, construímos uma base de conhecimento considerando os principais conceitos de testes de software, manutenção, evolução, test smells, refatoração de software, classificação de desenvolvedores e suporte ferramental. Em seguida, para alcançar nosso objetivo de pesquisa, utilizamos uma abordagem de métodos mistos, que englobou o planejamento e a execução de surveys, entrevistas e mineração de repositórios do GitHub. Organizamos as descobertas como um conjunto de diretrizes para apoiar os desenvolvedores na prevenção da inserção de test smells durante a criação de casos de teste de unidade.