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...
Main Author: | |
---|---|
Other Authors: | |
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 |