Test case prioritization: a case study in the evolution of a real system.
Ano de defesa: | 2020 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | eng |
Instituição de defesa: |
Universidade Federal de Campina Grande
Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/16776 |
Resumo: | A manutenção de software pode introduzir novos bugs em um sistema. Por isso, é crucial verificar os impactos causados no restante do código. Uma metodologia amplamente usada para validar alterações no programa é o teste de regressão. Ele consiste em executar os testes antigos na nova versão do sistema para verificar se não houve alterações no comportamento. No entanto, esse processo pode ser caro e demorado. A Priorização de Casos de Teste (PCT) é uma das estratégias desenvolvidas para ajudar a resolver esse problema. Ela reordena o conjunto de testes com base em um determinado critério, para que os casos de teste prioritários sejam executados primeiro. Existem muitas técnicas de PCT disponíveis na literatura. E, ainda assim, algumas equipes de desenvolvedores ainda encontram suas próprias maneiras de passar pelos custos da regressão. Neste trabalho, realizamos um estudo de caso em um grande sistema em evolução para avaliar e comparar a eficácia de seis técnicas de priorização, que usam informação de cobertura, com o que ocorre na prática durante o desenvolvimento de um software. Os desenvolvedores deste sistema realizam testes em dois momentos: antes de integrar o código, onde é necessário executar o conjunto inteiro, e durante o desenvolvimento, onde geralmente escolhem os testes a serem executados para economizar tempo. Nosso objetivo neste trabalho é analisar o possível uso das técnicas de PCT durante o processo de desenvolvimento e integração do código nesse sistema. Existem apenas alguns estudos de caso industriais envolvendo faltas reais e avaliando técnicas de PCT que utilizam informações de cobertura em um sistema com integração contínua. Nossos resultados mostraram que: 1) as técnicas baseadas em modificação são as mais eficazes na detecção de faltas e na redução da taxa de dispersão de testes falhos, entre as técnicas de PCT avaliadas. 2) No cenário em que todos os testes precisam ser executados, todas astécnicas de PCT apresentaram um melhor resultado que a ordem original. 3) Embora as técnicas PCT tenham melhores resultados do que a ordem original quando todos os testes precisam ser executados, elas não foram mais eficazes na detecção de faltas do que a seleção do desenvolvedor quando as restrições de tempo são maiores. Eles geralmente selecionam o mesmo número, ou menos, de testes com falha usando o mesmo tempo de execução. 4) A seleção que o desenvolvedor faz é talvez mais eficaz, porque ele quase sempre seleciona testes lterados/adicionados, que são os que geralmente falham, enquanto as técnicas não priorizam esses testes. Testes adicionados ou alterados sempre devem ser considerados ao se propor uma nova técnica de priorização. |