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 relation...

Full description

Bibliographic Details
Main Author: Araujo, Roberto Paulo Andrioli de
Other Authors: Chaim, Marcos Lordello
Format: Others
Language:en
Published: Biblioteca Digitais de Teses e Dissertações da USP 2014
Subjects:
Online Access:http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/
id ndltd-usp.br-oai-teses.usp.br-tde-14112014-155259
record_format oai_dc
spelling ndltd-usp.br-oai-teses.usp.br-tde-14112014-1552592019-05-09T19:36:59Z  Scalable data-flow testing Teste de fluxo de dados escalável Araujo, Roberto Paulo Andrioli de Análise de cobertura em tempo de execução Coverage analysis at run-time Data-flow testing Instrumentação de programas Program instrumentation Teste de fluxo de dados 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. Biblioteca Digitais de Teses e Dissertações da USP Chaim, Marcos Lordello 2014-09-15 Dissertação de Mestrado application/pdf http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/ en Liberar o conteúdo para acesso público.
collection NDLTD
language en
format Others
sources NDLTD
topic Análise de cobertura em tempo de execução
Coverage analysis at run-time
Data-flow testing
Instrumentação de programas
Program instrumentation
Teste de fluxo de dados
spellingShingle Análise de cobertura em tempo de execução
Coverage analysis at run-time
Data-flow testing
Instrumentação de programas
Program instrumentation
Teste de fluxo de dados
Araujo, Roberto Paulo Andrioli de
 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 Chaim, Marcos Lordello
author_facet Chaim, Marcos Lordello
Araujo, Roberto Paulo Andrioli de
author Araujo, Roberto Paulo Andrioli de
author_sort Araujo, Roberto Paulo Andrioli de
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 Biblioteca Digitais de Teses e Dissertações da USP
publishDate 2014
url http://www.teses.usp.br/teses/disponiveis/100/100131/tde-14112014-155259/
work_keys_str_mv AT araujorobertopauloandriolide scalabledataflowtesting
AT araujorobertopauloandriolide testedefluxodedadosescalavel
_version_ 1719062562784411648