Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software
Autor(a) principal: | |
---|---|
Data de Publicação: | 2023 |
Tipo de documento: | Tese |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da USP |
Texto Completo: | https://www.teses.usp.br/teses/disponiveis/55/55134/tde-19122023-151021/ |
Resumo: | A atividade de teste de software é fundamental para garantir a qualidade de um produto de software. No entanto, encontrar um conjunto de casos de teste que satisfaça um determinado critério de teste não é uma tarefa simples, pois o domínio de entrada em geral é vasto e diferentes conjuntos de teste podem ser derivados, com eficácia diferente. No contexto de testes estruturais, a não executabilidade (ou requisitos de teste não executáveis) é uma característica presente na maioria dos programas, o que aumenta o custo e o esforço da atividade de teste. Quando programas concorrentes são testados, novos desafios são enfrentados, principalmente relacionados ao não-determinismo. O não-determinismo pode resultar em diferentes saídas de teste possíveis para a mesma entrada de teste, tornando importante testar todas as situações possíveis. No entanto, a não executabilidade torna-se ainda mais complexa nesse contexto. Para mitigar esse problema, foi desenvolvida uma abordagem chamada Nonexec, que permite a utilização automatizada de propriedades baseadas em código fonte capazes de revelar requisitos de teste não executáveis. Um dos primeiros resultados foi a definição de três conjuntos que classificam os requisitos em: requisitos possivelmente não executáveis, não executáveis e dificilmente executáveis. O processo de detecção das propriedades em código fonte ocorreu sem a utilização de dados de entrada. A abordagem obteve sucesso na identificação das propriedades e conseguiu relacionar a ocorrência de uma propriedade a como ela afeta os requisitos de teste requeridos por um critério de teste. Durante a avaliação experimental da abordagem, foi utilizado um benchmark de programas concorrentes. Foram utilizados os critérios Todos-usos e Todas-sincronizações. Os resultados indicaram que a abordagem auxiliou o testador na atividade de teste estrutural e, com base na taxa de cobertura do critério Todas-sincronizações, a abordagem conseguiu melhorias estatisticamente significativas. Em conclusão, a abordagem proposta auxilia os profissionais de teste na identificação de requisitos de teste que possam apresentar o problema da não executabilidade. As principais contribuições deste trabalho incluem a elaboração de um catálogo de propriedades, a definição da abordagem Nonexec, a implementação da ferramenta Fi-paths e a integração da ferramenta Valipar. Além disso, foram definidos novos termos relacionados ao problema da não executabilidade, tais como requisito de teste possivelmente não executável e requisito de teste dificilmente executável. |
id |
USP_3d637490b947214b6ed5cd5fbb1e89af |
---|---|
oai_identifier_str |
oai:teses.usp.br:tde-19122023-151021 |
network_acronym_str |
USP |
network_name_str |
Biblioteca Digital de Teses e Dissertações da USP |
repository_id_str |
2721 |
spelling |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de softwareAn approach to support the identification of non-executability in structural software testingConcurrent programsNon-executability problemProblema da não executabilidadeProgramas concorrentesSoftware testingStructural testingTeste de softwareTeste estruturalA atividade de teste de software é fundamental para garantir a qualidade de um produto de software. No entanto, encontrar um conjunto de casos de teste que satisfaça um determinado critério de teste não é uma tarefa simples, pois o domínio de entrada em geral é vasto e diferentes conjuntos de teste podem ser derivados, com eficácia diferente. No contexto de testes estruturais, a não executabilidade (ou requisitos de teste não executáveis) é uma característica presente na maioria dos programas, o que aumenta o custo e o esforço da atividade de teste. Quando programas concorrentes são testados, novos desafios são enfrentados, principalmente relacionados ao não-determinismo. O não-determinismo pode resultar em diferentes saídas de teste possíveis para a mesma entrada de teste, tornando importante testar todas as situações possíveis. No entanto, a não executabilidade torna-se ainda mais complexa nesse contexto. Para mitigar esse problema, foi desenvolvida uma abordagem chamada Nonexec, que permite a utilização automatizada de propriedades baseadas em código fonte capazes de revelar requisitos de teste não executáveis. Um dos primeiros resultados foi a definição de três conjuntos que classificam os requisitos em: requisitos possivelmente não executáveis, não executáveis e dificilmente executáveis. O processo de detecção das propriedades em código fonte ocorreu sem a utilização de dados de entrada. A abordagem obteve sucesso na identificação das propriedades e conseguiu relacionar a ocorrência de uma propriedade a como ela afeta os requisitos de teste requeridos por um critério de teste. Durante a avaliação experimental da abordagem, foi utilizado um benchmark de programas concorrentes. Foram utilizados os critérios Todos-usos e Todas-sincronizações. Os resultados indicaram que a abordagem auxiliou o testador na atividade de teste estrutural e, com base na taxa de cobertura do critério Todas-sincronizações, a abordagem conseguiu melhorias estatisticamente significativas. Em conclusão, a abordagem proposta auxilia os profissionais de teste na identificação de requisitos de teste que possam apresentar o problema da não executabilidade. As principais contribuições deste trabalho incluem a elaboração de um catálogo de propriedades, a definição da abordagem Nonexec, a implementação da ferramenta Fi-paths e a integração da ferramenta Valipar. Além disso, foram definidos novos termos relacionados ao problema da não executabilidade, tais como requisito de teste possivelmente não executável e requisito de teste dificilmente executável.Software testing activity is essential to ensure the quality of a software product. However, finding a set of test cases that satisfies a specific test criterion is not a simple task, as the input domain is generally vast, and different test sets can be derived with different effectiveness. In the context of structural testing, non-executability (or non-executable test requirements) is a feature present in most programs, increasing the testing activitys cost and effort. New challenges are faced when concurrent programs are tested, mainly related to non-determinism. Non-determinism can result in different possible test outputs for the same test input, making it important to test all possible situations, and, therefore, the non-executability becomes even more complex in this context. To mitigate this problem, an approach called Nonexec was developed, which allows for the automated use of source code-based properties capable of revealing non-executable test requirements. One of the first results was the definition of three sets that classify the requirements as possibly non-executable, non-executable, and hardly executable. The process of detecting source code properties occurred without the use of input data. The approach successfully identified the properties and related the occurrence of a property to how it affects the test requirements of each test criterion. During the experimental evaluation of the approach, a benchmark of concurrent programs was analyzed with the all-uses and all-sync testing criteria. The results indicated that the approach assisted the tester in the structural testing activity and, based on the coverage rate of the all-sync criterion, the approach achieved statistically significant improvements. In conclusion, the proposed approach collaborates testing professionals in identifying test requirements that may present the non-executability problem. The main contributions of this work include the development of a catalog of properties, the definition of the Nonexec approach, the Fi-paths tool, and the integration of the Valipar testing tool. In addition, new terms related to the non-executability problem were defined, such as \"possibly non-executable test requirement\" and \"hardly executable test requirement\".Biblioteca Digitais de Teses e Dissertações da USPLopes, Thelma Elita ColanziSouza, Simone do Rocio Senger deChoma Neto, João2023-08-24info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfhttps://www.teses.usp.br/teses/disponiveis/55/55134/tde-19122023-151021/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesspor2023-12-19T17:17:03Zoai:teses.usp.br:tde-19122023-151021Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212023-12-19T17:17:03Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false |
dc.title.none.fl_str_mv |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software An approach to support the identification of non-executability in structural software testing |
title |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
spellingShingle |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software Choma Neto, João Concurrent programs Non-executability problem Problema da não executabilidade Programas concorrentes Software testing Structural testing Teste de software Teste estrutural |
title_short |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
title_full |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
title_fullStr |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
title_full_unstemmed |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
title_sort |
Uma abordagem para apoiar a identificação de não executabilidade no teste estrutural de software |
author |
Choma Neto, João |
author_facet |
Choma Neto, João |
author_role |
author |
dc.contributor.none.fl_str_mv |
Lopes, Thelma Elita Colanzi Souza, Simone do Rocio Senger de |
dc.contributor.author.fl_str_mv |
Choma Neto, João |
dc.subject.por.fl_str_mv |
Concurrent programs Non-executability problem Problema da não executabilidade Programas concorrentes Software testing Structural testing Teste de software Teste estrutural |
topic |
Concurrent programs Non-executability problem Problema da não executabilidade Programas concorrentes Software testing Structural testing Teste de software Teste estrutural |
description |
A atividade de teste de software é fundamental para garantir a qualidade de um produto de software. No entanto, encontrar um conjunto de casos de teste que satisfaça um determinado critério de teste não é uma tarefa simples, pois o domínio de entrada em geral é vasto e diferentes conjuntos de teste podem ser derivados, com eficácia diferente. No contexto de testes estruturais, a não executabilidade (ou requisitos de teste não executáveis) é uma característica presente na maioria dos programas, o que aumenta o custo e o esforço da atividade de teste. Quando programas concorrentes são testados, novos desafios são enfrentados, principalmente relacionados ao não-determinismo. O não-determinismo pode resultar em diferentes saídas de teste possíveis para a mesma entrada de teste, tornando importante testar todas as situações possíveis. No entanto, a não executabilidade torna-se ainda mais complexa nesse contexto. Para mitigar esse problema, foi desenvolvida uma abordagem chamada Nonexec, que permite a utilização automatizada de propriedades baseadas em código fonte capazes de revelar requisitos de teste não executáveis. Um dos primeiros resultados foi a definição de três conjuntos que classificam os requisitos em: requisitos possivelmente não executáveis, não executáveis e dificilmente executáveis. O processo de detecção das propriedades em código fonte ocorreu sem a utilização de dados de entrada. A abordagem obteve sucesso na identificação das propriedades e conseguiu relacionar a ocorrência de uma propriedade a como ela afeta os requisitos de teste requeridos por um critério de teste. Durante a avaliação experimental da abordagem, foi utilizado um benchmark de programas concorrentes. Foram utilizados os critérios Todos-usos e Todas-sincronizações. Os resultados indicaram que a abordagem auxiliou o testador na atividade de teste estrutural e, com base na taxa de cobertura do critério Todas-sincronizações, a abordagem conseguiu melhorias estatisticamente significativas. Em conclusão, a abordagem proposta auxilia os profissionais de teste na identificação de requisitos de teste que possam apresentar o problema da não executabilidade. As principais contribuições deste trabalho incluem a elaboração de um catálogo de propriedades, a definição da abordagem Nonexec, a implementação da ferramenta Fi-paths e a integração da ferramenta Valipar. Além disso, foram definidos novos termos relacionados ao problema da não executabilidade, tais como requisito de teste possivelmente não executável e requisito de teste dificilmente executável. |
publishDate |
2023 |
dc.date.none.fl_str_mv |
2023-08-24 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://www.teses.usp.br/teses/disponiveis/55/55134/tde-19122023-151021/ |
url |
https://www.teses.usp.br/teses/disponiveis/55/55134/tde-19122023-151021/ |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
|
dc.rights.driver.fl_str_mv |
Liberar o conteúdo para acesso público. info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Liberar o conteúdo para acesso público. |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.coverage.none.fl_str_mv |
|
dc.publisher.none.fl_str_mv |
Biblioteca Digitais de Teses e Dissertações da USP |
publisher.none.fl_str_mv |
Biblioteca Digitais de Teses e Dissertações da USP |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da USP instname:Universidade de São Paulo (USP) instacron:USP |
instname_str |
Universidade de São Paulo (USP) |
instacron_str |
USP |
institution |
USP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da USP |
collection |
Biblioteca Digital de Teses e Dissertações da USP |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP) |
repository.mail.fl_str_mv |
virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br |
_version_ |
1815257140501151744 |