Scalable data-flow testing

Data-flow (DF) testing was introduced more than thirty years ago aiming at verifying a program by extensively exploring its structure. It requires tests that traverse paths in which the assignment of a value to a variable (a definition) and its subsequent reference (a use) is verified. This rela...

Full description

Bibliographic Details
Main Author: Roberto Paulo Andrioli de Araujo
Other Authors: Marcos Lordello Chaim
Language:English
Published: Universidade de São Paulo 2014
Subjects:
Online Access:http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/
id ndltd-IBICT-oai-teses.usp.br-tde-14112014-155259
record_format oai_dc
spelling ndltd-IBICT-oai-teses.usp.br-tde-14112014-1552592019-01-22T00:28:14Z  Scalable data-flow testing Teste de fluxo de dados escalável Roberto Paulo Andrioli de Araujo Marcos Lordello Chaim Sudipto Ghosh Plinio Roberto Souza Vilela Análise de cobertura em tempo de execução Instrumentação de programas Teste de fluxo de dados Coverage analysis at run-time Data-flow testing Program instrumentation Data-flow (DF) testing was introduced more than thirty years ago aiming at verifying a program by extensively exploring its structure. It requires tests that traverse paths in which the assignment of a value to a variable (a definition) and its subsequent reference (a use) is verified. This relationship is called definition-use association (dua). While control-flow (CF) testing tools have being able to tackle systems composed of large and long running programs, DF testing tools have failed to do so. This situation is in part due to the costs associated with tracking duas at run-time. Recently, an algorithm, called Bitwise Algorithm (BA), which uses bit vectors and bitwise operations for tracking intra-procedural duas at run-time, was proposed. This research presents the implementation of BA for programs compiled into Java bytecodes. Previous DF approaches were able to deal with small to medium size programs with high penalties in terms of execution and memory. Our experimental results show that by using BA we are able to tackle large systems with more than 250 KLOCs and 300K required duas. Furthermore, for several programs the execution penalty was comparable with that imposed by a popular CF testing tool. Teste de fluxo de dados (TFD) foi introduzido há mais de trinta anos com o objetivo de criar uma avaliação mais abrangente da estrutura dos programas. TFD exige testes que percorrem caminhos nos quais a atribuição de valor a uma variável (definição) e a subsequente referência a esse valor (uso) são verificados. Essa relação é denominada associação definição-uso. Enquanto as ferramentas de teste de fluxo de controle são capazes de lidar com sistemas compostos de programas grandes e que executam durante bastante tempo, as ferramentas de TFD não têm obtido o mesmo sucesso. Esta situação é, em parte, devida aos custos associados ao rastreamento de associações definição-uso em tempo de execução. Recentemente, foi proposto um algoritmo --- chamado \\textit (BA) --- que usa vetores de bits e operações bit a bit para monitorar associações definição-uso em tempo de execução. Esta pesquisa apresenta a implementação de BA para programas compilados em Java. Abordagens anteriores são capazes de lidar com programas pequenos e de médio porte com altas penalidades em termos de execução e memória. Os resultados experimentais mostram que, usando BA, é possível utilizar TFD para verificar sistemas com mais de 250 mil linhas de código e 300 mil associações definição-uso. Além disso, para vários programas, a penalidade de execução imposta por BA é comparável àquela imposta por uma popular ferramenta de teste de fluxo de controle. 2014-09-15 info:eu-repo/semantics/publishedVersion info:eu-repo/semantics/masterThesis http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/ eng info:eu-repo/semantics/openAccess Universidade de São Paulo Sistemas de Informação USP BR reponame:Biblioteca Digital de Teses e Dissertações da USP instname:Universidade de São Paulo instacron:USP
collection NDLTD
language English
sources NDLTD
topic Análise de cobertura em tempo de execução
Instrumentação de programas
Teste de fluxo de dados
Coverage analysis at run-time
Data-flow testing
Program instrumentation
spellingShingle Análise de cobertura em tempo de execução
Instrumentação de programas
Teste de fluxo de dados
Coverage analysis at run-time
Data-flow testing
Program instrumentation
Roberto Paulo Andrioli de Araujo
 Scalable data-flow testing
description Data-flow (DF) testing was introduced more than thirty years ago aiming at verifying a program by extensively exploring its structure. It requires tests that traverse paths in which the assignment of a value to a variable (a definition) and its subsequent reference (a use) is verified. This relationship is called definition-use association (dua). While control-flow (CF) testing tools have being able to tackle systems composed of large and long running programs, DF testing tools have failed to do so. This situation is in part due to the costs associated with tracking duas at run-time. Recently, an algorithm, called Bitwise Algorithm (BA), which uses bit vectors and bitwise operations for tracking intra-procedural duas at run-time, was proposed. This research presents the implementation of BA for programs compiled into Java bytecodes. Previous DF approaches were able to deal with small to medium size programs with high penalties in terms of execution and memory. Our experimental results show that by using BA we are able to tackle large systems with more than 250 KLOCs and 300K required duas. Furthermore, for several programs the execution penalty was comparable with that imposed by a popular CF testing tool. === Teste de fluxo de dados (TFD) foi introduzido há mais de trinta anos com o objetivo de criar uma avaliação mais abrangente da estrutura dos programas. TFD exige testes que percorrem caminhos nos quais a atribuição de valor a uma variável (definição) e a subsequente referência a esse valor (uso) são verificados. Essa relação é denominada associação definição-uso. Enquanto as ferramentas de teste de fluxo de controle são capazes de lidar com sistemas compostos de programas grandes e que executam durante bastante tempo, as ferramentas de TFD não têm obtido o mesmo sucesso. Esta situação é, em parte, devida aos custos associados ao rastreamento de associações definição-uso em tempo de execução. Recentemente, foi proposto um algoritmo --- chamado \\textit (BA) --- que usa vetores de bits e operações bit a bit para monitorar associações definição-uso em tempo de execução. Esta pesquisa apresenta a implementação de BA para programas compilados em Java. Abordagens anteriores são capazes de lidar com programas pequenos e de médio porte com altas penalidades em termos de execução e memória. Os resultados experimentais mostram que, usando BA, é possível utilizar TFD para verificar sistemas com mais de 250 mil linhas de código e 300 mil associações definição-uso. Além disso, para vários programas, a penalidade de execução imposta por BA é comparável àquela imposta por uma popular ferramenta de teste de fluxo de controle.
author2 Marcos Lordello Chaim
author_facet Marcos Lordello Chaim
Roberto Paulo Andrioli de Araujo
author Roberto Paulo Andrioli de Araujo
author_sort Roberto Paulo Andrioli de Araujo
title  Scalable data-flow testing
title_short  Scalable data-flow testing
title_full  Scalable data-flow testing
title_fullStr  Scalable data-flow testing
title_full_unstemmed  Scalable data-flow testing
title_sort  scalable data-flow testing
publisher Universidade de São Paulo
publishDate 2014
url http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/
work_keys_str_mv AT robertopauloandriolidearaujo scalabledataflowtesting
AT robertopauloandriolidearaujo testedefluxodedadosescalavel
_version_ 1718921749769224192