Teste de fluxo de dados

O teste de fluxo de dados (do inglês data flow testing), é um teste de caixa-branca usado para verificação de softwares que visa exercitar caminhos do programa (executar sequências de linhas de código) com base nas definições e usos de cada variável.[1].

Definição e uso

Para realizar este teste, atribui-se um valor inteiro único para cada linha de código (normalmente, enumera-se cada linha com valores inteiros consecutivos, atribuindo o valor 1 para a primeira linha, 2 para a segunda e assim sucessivamente) e definem-se, para cada variável de interesse x {\displaystyle x} , os conjuntos

D( x {\displaystyle x} ) = { k : a linha k faz uma definição de x {\displaystyle x} }

e

U( x {\displaystyle x} ) = { k : a linha k usa a variável x {\displaystyle x} }.


Execução do teste

A execução do teste se dá com base nos caminhos do grafo de fluxo do programa e nos conjuntos D( x {\displaystyle x} ) e U( x {\displaystyle x} ).

Teste def-use

Um teste de fluxo de dados simples é o teste def-use: neste teste são escolhidos valores de entrada para o programa que exercitem todos os caminhos DU da variável testada. Os caminhos DU são caminhos em que passam por alguma linha na qual a variável é definida e por alguma linha em que a variável é usada.

De uma forma mais rigorosa, tenta-se executar todos os caminhos c 1 c 2 . . . c M {\displaystyle c_{1}-c_{2}-...-c_{M}} , onde cada c k {\displaystyle c_{k}} é um comando, que tenham dos comandos c i {\displaystyle c_{i}} e c j {\displaystyle c_{j}} tais que ( c i , c j ) {\displaystyle (c_{i},c_{j})\in } D( x {\displaystyle x} ) X U( x {\displaystyle x} ).

Um pequeno refinamento neste teste elimina os caminhos em que a variável é redefinida antes de ser usada. Por exemplo, digamos que o primeiro comando, chamado de c 1 {\displaystyle c_{1}} , defina a variável x {\displaystyle x} e o vigésimo comando, c 20 {\displaystyle c_{20}} , use a variável x {\displaystyle x} , mas um comando intermediário, c 10 {\displaystyle c_{10}} também defina x {\displaystyle x} , então, não é necessário exercitar um caminho para o par ( c 1 , c 20 ) {\displaystyle (c_{1},c_{20})} . Ao invés disso, executa-se apenas um teste para o caminho ( c 10 , c 20 ) {\displaystyle (c_{10},c_{20})} .

Caminhos que não contenham redefinições como no exemplo anterior, são chamados de caminhos vivos.


Referências

  1. Pressman, Roger S. (2001). Software Engineering: A practitioner's approach. [S.l.]: McGraw-Hill. ISBN 0073655783 


Ver também

  • Teste de caixa-preta
  • Teste de software
  • v
  • d
  • e
Teste de software
Técnicas funcionais
Técnicas não funcionais
Fases
Artefatos
Assuntos relacionados