Notas de Teste de Software - Parte 2 Teste Estrutural
Benefícios:
- Os critérios de teste em geral possuem uma abordagem sistemática e teoricamente fundamentada para conduzir uma atividade de teste. Aumentam a garantia de que os casos de testes irão revelar defeitos. Cada técnica depende da origem dos dados para criar os casos de testes. A técnica estrutural tem como base a implementação.
- Complementa outras técnicas: depuração, manutenção e avaliação da confiabilidade.
Limitações:
- Não existe um procedimento de teste de proprósito geral para provar a correção de um programa. É indecidível se dois ou mais programas computam a mesma função; se dois caminhos de um mesmo programa, ou de programas diferentes, computam a mesma função; e se um dado caminho é executável e se existe um conjunto de dados de entrada que leve à execução desse caminho.
- Caminhos ausentes durante a execução do teste e correção coincidente.
Geralmente o teste estrutural é representado utilizando um Grafo de Fluxo de Controle (GFC).
Diretrizes
| |
Caminho
|
seqüência de vértices conectados por arestas.
|
Caminho Simples
|
Caminho em que um nó não se repete, exceto o primeiro e último.
|
Caminho Livre de Laço
|
Caminho em que um nó não se repete.
|
Caminho Completo
|
caminho que inicia no nó de entrada e termina em um nó de saída.
|
Caminho não executável
|
Se existe algum nó ou vertice não executado de acordo com um dado de entrada.
|
Caminho Livre de Definição
|
Não contém redefinição uma varíavel ao longo do caminho
|
Definição Global
|
Ou contém um caminho livre de definição para um nó ou existe C-USO ou P-USO da varíavel em um arco.
|
Definições
|
C-USO – uso computacional
|
P-USO – uso predicativo
|
USO- quando a referência não define valor a uma variável
|
Indefinição – Quando variável não tem referência à memória.
|
(2,3,4,5,6,7) caminho simples e livre de laços.
(1,2,3,4,5,7,4,8,9,11) caminho completo.
(1,3,4,8,9) caminho não executável.
|
- Todos-Nós exige que a execução do programa passe, ao menos uma vez, em cada vértice do grafo de fluxo, ou seja, que cada comando do programa seja executado pelo menos uma vez.
- Todos-Arcos requer que cada aresta do grafo, ou seja, cada desvio de fluxo de controle do programa, seja exercitada pelo menos uma vez.
- Todos-Caminhos requer que todos os caminhos possíveis do programa sejam executados.
- Todas-Definições: requer que cada definição de variável seja exercitada pelo menos uma vez, não importa se por um c-uso ou por um p-uso.
- Todos-Usos: requer que todas as associações entre uma definição de variável e seus subseqüentes usos (c-usos e p-usos) sejam exercitadas pelos casos de teste, através de pelo menos um caminho livre de definição, ou seja, um caminho onde a variável não é redefinida.
Teste estrutural pode ser aplicado para teste de unidade pelo próprio desenvolvedor entre as fases e caminhos dentro das unidades, entre as unidades, subsistemas e sistemas.
Teste Estrutural – Teste de Fluxo de Dados
- Teste de fluxo de dados possui intenção de revelar defeitos em decorrência de valores incorretos na codificação.
- Princípio da definição dos critérios: sequência das ações realizadas sobre as variáveis mais onde elas são definidas e utilizadas.
Anomalias do Fluxo de Dados
|
Uso de variável não inicializada.
|
Atribuição de valor a uma variável mais de uma vez sem que tenha havido uma referência a essa variável entre essas atribuições.
|
Liberação ou reinicialização de uma variável antes que ela tenha sido criada ou inicializada.
|
Liberação ou reinicialização de uma variável antes que ela tenha sido usada.
|
Atribuir novo valor a um ponteiro sem que a variável tenha sido liberada.
|
Notação
|
Significado
|
~
|
Não existe variável
|
d
|
Definição da variável
|
u
|
Uso da variável
|
K
|
Destruição da variável
|
~d
|
Variável não existe e é definida (correto)
|
~u
|
Variável não existe e é usada (incorreto)
|
~k
|
Variávelnão existe e é destruída
|
dd
|
Definida e redefinida (incorreto se global)
|
du
|
Definida e usada (correto)
|
dk
|
Definida e destruída (incorreto)
|
ud
|
Usada e definida (aceitável)
|
uu
|
Usada e reusada (aceitável)
|
uk
|
Usada e destruída (aceitável)
|
kd
|
Destruída e redefinida (aceitável)
|
ku
|
Destruída e usada (incorreto)
|
Kk
|
Destruída e destruída novamente (incorreto)
|
Diretrizes
| |
c-use(i)
|
Variáveis com uso global no bloco i
|
def(i)
|
Variáveis com definição global no bloco i
|
p-use(i,j)
|
Variáveis com p-usos no arco i,j
|
dcu(x,i)
|
Existe um caminho livre de definição do nó i até nó j
|
dpu(x,i)
|
Existe um caminho livre de definição do nó i até arco j
|
du-caminho(x)
|
Existe uma definição global de x, (tem um c-uso e existe um caminho simples livre de definição) ou (existe um p-uso e existe um caminho livre de definição e livre de laço.
|
Associação definição c-uso
|
é uma tripla (i,j,x) onde i é um nó que contém uma definição global de x e j pertence a dcu(x,i)
|
Associação definição p-uso
|
é uma tripla (i,(j,k),x) onde i é um nó que contém uma definição global de x e j pertence a dpu(x,i)
|
TodasDefinições
|
requer que cada definição de variável seja exercitada pelo menos uma vez, não importa se por um c-uso ou por um p-uso.
|
TodosUsos
|
requer que todas as associações entre uma definição de variável e seus subsequentes usos (c-usos e p-usos) sejam exercitadas pelos casos de teste, através de pelo menos um caminho livre de definição, ou seja, um caminho onde a variável não é redefinida.
|
TodosDuCaminhos
|
requer que toda associação entre uma definição de variável e subsequentes p-usos ou c-usos dessa variável seja exercitada por todos os caminhos livres de definição e livres de laço que cubram essa associação.
|
Associação definição-uso
|
é uma tripla (var,def,uso) onde var é uma variável com a definição-uso, def é um nó que contém uma definição de var e uso contém um nó ou arco com c-uso ou p-uso de var.
|
Potencial-associação
|
Associações são estabelecidas sem a necessidade de um uso explícito.
|
Potencial definição-uso
|
é uma tripla (var,def,uso) onde var é uma variável com a definição-uso, def é um nó que contém uma definição de var e uso c-uso ou p-uso possível de var em um nó ou arco.
|
Preenchem a lacuna entre os critérios GFC todos os nós e todos os arcos, porque considera a inclusão de todos os usos (c-usos e p-usos) das variáveis.
0 comments:
Postar um comentário