Test case prioritization: a case study in the evolution of a real system.
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFCG |
Texto Completo: | 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. |
id |
UFCG_786a13e1ed3e0f10bb8798a3994b97b7 |
---|---|
oai_identifier_str |
oai:localhost:riufcg/16776 |
network_acronym_str |
UFCG |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository_id_str |
4851 |
spelling |
Test case prioritization: a case study in the evolution of a real system.Priorização de casos de teste: um estudo de caso na evolução de um sistema real.Engenharia de SoftwareTeste de RegressãoPriorização de Casos de TesteSoftware EngineeringRegression TestPrioritizing Test CasesCiência da ComputaçãoA 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.The software maintenance can introduce new bugs in the system. Therefore, it is crucial to check the impacts caused on the rest of the code. One widely used methodology for validating program changes is regression testing. It consists of running the old tests on the new version of the system to check that there have been no changes in behavior. However, this process can be expensive and time-consuming. The Test Case Prioritization (TCP) is one of the strategies developed to help solve this problem. It rearranges the test suite based on a given criterion so that priority test cases are performed first. There are many TCP techniques available in the literature. And still, some developer’s teams still find their own ways of going through the regression costs. In this work, we conducted a case study on a large evolving system to evaluate and compare the effectiveness of six prioritization techniques, which use coverage information, with what happens in practice during software development. The developers of this system perform tests at two moments: before integrating the code, where it is required to run the entire suite, and during development, where they usually choose the tests to run to save time. Our objective in this work is to analyze the possible use of TCP techniques during the process of developing and integrating the code in this system. There are only a few industrial case studies involving real faults and evaluating TCP techniques that use coverage information in a system with a continuous integration environment. Our results showed that: 1) the modification-based techniques are the most effective in fault detection and reduction of the spread rate of failed tests, among the evaluated TCP techniques. 2) In the scenario where all the tests need to be performed, all the TCP techniques presented a better result than the original order. 3) Although TCP techniques had better results than the original order when all the tests need to be run, they were not more effective at fault detection than developer selection when time constraints are higher. They usually select the same number, or less, of failed tests using the same execution time. 4) The developer selection is maybe more effective because he almost always selects changed/added tests, which are the ones that usually fail, whereas the techniques do not prioritize these tests. Added or altered tests should always be considered when proposing a new prioritization technique.CNPqUniversidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGMASSONI, Tiago Lima.MASSONI, T. L.http://lattes.cnpq.br/3563923906851611MACHADO, Patrícia Duarte de Lima.MACHADO, P. D. L.http://lattes.cnpq.br/2495918356675019ALVES , Everton Leandro Galdino.IYODA, Juliano Manabu.CAVALCANTE, Isabelly Santos.2020-10-132020-12-21T12:44:14Z2020-12-212020-12-21T12:44:14Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/16776CAVALCANTE, I. S. Test case prioritization: a case study in the evolution of a real system. 2020. 55 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2020.enginfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2020-12-21T12:44:14Zoai:localhost:riufcg/16776Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512020-12-21T12:44:14Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
dc.title.none.fl_str_mv |
Test case prioritization: a case study in the evolution of a real system. Priorização de casos de teste: um estudo de caso na evolução de um sistema real. |
title |
Test case prioritization: a case study in the evolution of a real system. |
spellingShingle |
Test case prioritization: a case study in the evolution of a real system. CAVALCANTE, Isabelly Santos. Engenharia de Software Teste de Regressão Priorização de Casos de Teste Software Engineering Regression Test Prioritizing Test Cases Ciência da Computação |
title_short |
Test case prioritization: a case study in the evolution of a real system. |
title_full |
Test case prioritization: a case study in the evolution of a real system. |
title_fullStr |
Test case prioritization: a case study in the evolution of a real system. |
title_full_unstemmed |
Test case prioritization: a case study in the evolution of a real system. |
title_sort |
Test case prioritization: a case study in the evolution of a real system. |
author |
CAVALCANTE, Isabelly Santos. |
author_facet |
CAVALCANTE, Isabelly Santos. |
author_role |
author |
dc.contributor.none.fl_str_mv |
MASSONI, Tiago Lima. MASSONI, T. L. http://lattes.cnpq.br/3563923906851611 MACHADO, Patrícia Duarte de Lima. MACHADO, P. D. L. http://lattes.cnpq.br/2495918356675019 ALVES , Everton Leandro Galdino. IYODA, Juliano Manabu. |
dc.contributor.author.fl_str_mv |
CAVALCANTE, Isabelly Santos. |
dc.subject.por.fl_str_mv |
Engenharia de Software Teste de Regressão Priorização de Casos de Teste Software Engineering Regression Test Prioritizing Test Cases Ciência da Computação |
topic |
Engenharia de Software Teste de Regressão Priorização de Casos de Teste Software Engineering Regression Test Prioritizing Test Cases Ciência da Computação |
description |
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. |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020-10-13 2020-12-21T12:44:14Z 2020-12-21 2020-12-21T12:44:14Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/16776 CAVALCANTE, I. S. Test case prioritization: a case study in the evolution of a real system. 2020. 55 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2020. |
url |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/16776 |
identifier_str_mv |
CAVALCANTE, I. S. Test case prioritization: a case study in the evolution of a real system. 2020. 55 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2020. |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
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 |
publisher.none.fl_str_mv |
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 |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
instname_str |
Universidade Federal de Campina Grande (UFCG) |
instacron_str |
UFCG |
institution |
UFCG |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
_version_ |
1809744474984677376 |