• Nenhum resultado encontrado

Critérios de teste de integração baseados na dependência

4 Critérios de Testes: Definição e Análise de Propriedades

4.3 Os Critérios Intra-Modulares

4.3.2 Critérios aplicados ao teste de integração intra-modular

4.3.2.2 Critérios de teste de integração baseados na dependência

O fluxo de dados ocasionado pelas variáveis tabela é considerado o mais importante em ABDR, tendo em vista a sua persistência. A variável tabela definida por uma unidade de programa mantém-se viva ao longo do tempo, determinando a existência de uma associação def-t-uso entre duas UPs executadas em momentos distintos, sem a necessidade de um comando de chamada de uma para outra. Dizemos que uma associação def-t-uso existe, se uma variável t definida em UPA tem um t-uso em UPB.

Exemplo: Sejam duas unidades UPA e UPB pertencentes ao mesmo Módulo Modi.

Um dado colocado em uma tabela t pela unidade UPA pode ocasionar um resultado não

esperado na unidade UPB (em outro momento de execução), durante um uso de t; esse tipo

de falha só é observável pela execução seqüenciada de UPA e UPB, exigida pelos critérios

de integração baseados em dependência de dados .

As associações definição-t-uso de integração são exercitadas com seqüências de execuções para pares de unidades (UPd, unidade que define t; UPu, unidade que usa t). Neste caso, é importante definir uma estratégia que exercite essas associações utilizando os mesmos valores, tanto para a execução de UPd como para a de UPu.

Depois que todas as unidades de programa são associadas aos pares, para o exercício das variáveis persistentes, algumas associações podem não ter sido exercitadas, devido à dependência de dados existente entre uma variável tabela t e outra variável tabela

t’. Neste caso, existe a necessidade de acrescentar uma unidade que define a variável t’

exigindo-se um ciclo a mais de execução para exercitar a associação referente à variável t.

Critérios baseados no fluxo de dados intra-modular

Estes critérios baseiam-se nas dependências de dados existentes entre os procedimentos de um mesmo Módulo de Programa com relação a uma variável tabela da base de dados e requerem a mesma tupla para satisfazer a associação definição-t-uso. Cada unidade UPA que contém uma definição persistente da variável t é associada a outra

Capítulo 4 – Critérios de Teste: Definição e Análise de Propriedades

unidade UPB que contém um uso de t (t-uso); os pares (UPA, UPB) são requeridos pelo

critério com um ciclo de execução (denomina-se de ciclo1)

Considere que G(UPA) e G(UPB) sejam os grafos das unidades A e B,

respectivamente, envolvidas na integração e Π seja o conjunto dos caminhos completos em G(UPA) e G(UPB) e Γ o conjunto de tuplas. (πa, πb) ∈Π implica que existe a concatenação

πa, πb, onde πa G(UPA) e πb G(UPB).

Todas os t-usos-ciclo1-intra: Π e Γ satisfazem o critério (todos os t-usos-ciclo1- intra) para o par de unidades UPA e UPB pertencentes ao mesmo módulo se, para todos os

pares de caminhos (πa, πb) ∈Π, πa inclui o par de nós <l,i> G(UPA) tal que defT<l,i>

φ c.r.a. t, e existir um caminho livre de definição c.r.a. t de <l, i> até nout de G(UPA); e πb

inclui o arco (j, k) G(UPB) onde j fdsu(t,i) e existe um t-uso em (j, k), e existir um

caminho livre de definição persistente c.r.a. t de nin até o arco (j, k); a associação é

satisfeita se for exercitada através da mesma tupla τ.

Uma associação-t-uso-ciclo1-intra é representada pela quíntupla: [zUPA , <l, i>, zUPB , (j, k) , t]

Todos os dtu-caminhos-intra: Π e Γ satisfazem o critério (todos os dtu-caminhos- intra) para o par de unidades UPA e UPB pertencentes ao mesmo módulo se, para todos os

pares de caminhos (πa, πb) ∈ Π, πa incluir um dtu-caminho do nó l até o nó nout de

G(UPA) passando pelo par de nós <l, i> G(UPA) onde defT<l,i> ≠ φ c.r.a. t, através da

tupla τ e πb incluir um dtu-caminho c.r.a t do nó nin de G(UPB) até o arco (j, k) G(UPB)

sendo j fdsu(t,i) e existe um t-uso em (j, k), através da mesma tupla τ e existir um caminho livre de definição persistente que vai do par <l, i> em UPA até o arco (j, k) em

UPB c.r.a t na composição dos caminhos πa . πb.

O elemento requerido pelo critério todos os dtu-caminhos-intra é representado pela n-upla abaixo, sendo z o número do módulo que contém as unidades A e B:

[zUPA l a1 ... an i ... nout - zUPB nin ... j k]

Onde zUPA é a unidade onde ocorre a definição de t e l a1 ... an i ... nout é o dtu-

an) livre de laço; zUPB é a unidade onde ocorre o uso de t e nin ... j k é o dtu-caminho que

vai do nó inicial até o arco (j, k) onde existe um t-uso c.r.a. t.

Existem dependências que não podem ser exercitadas com a execução de apenas duas unidades (uma de definição e outra de uso), mas necessitam da execução de outra unidade para satisfazer a associação. Isso ocorre quando existem dependências múltiplas, ou seja, para definir a variável t é necessário estar definida a variável t’ e, para isso, pode ser necessário executarmos a unidade que define a variável t’ para depois executarmos a unidade que define t e finalmente executarmos a UP que usa t. Observe que podem existir dependências múltiplas exigindo mais de dois ciclos de execução. A observação mais importante é que mesmo executando três unidades: UP1, UP2 e UP3, a associação é de UP1

para UP3 ou UP2 para UP3. A unidade UP1 ou a unidade UP2 tem a definição persistente de

uma variável t que é usada em UP3. Outro caso ocorre quando existem usos múltiplos em

UP3 e para satisfazê-los temos que executar duas ou mais unidades para definir as variáveis

tabelas referenciadas em UP3, ocasionando associações múltiplas (UP1, UP3) e (UP2, UP3)

e que podem ser satisfeitas com o critério de Ciclo2.

Todos os t-usos-ciclo2-intra: Π e Τ satisfazem o critério (todos os t-usos-ciclo2-

intra) para as unidades UPA, UPB e UPC pertencem ao mesmo módulo se, para todos os

caminhos (πa, πb, πc) ∈ Π, onde πa é o caminho que contém um par de nós <l′,i′> que

define a variável t’ pela tupla τ’; o caminho πb contém um par de nós <l,i> que define t

pela tupla τ podendo ou não ter uma dependência de t’, e o caminho πc possuir um nó que

contém um uso de t e ou t’ pela mesma tupla τ e/ou τ’, respectivamente, e o caminho πa

passar pelo par de nós <l′,i> G(UPA) com defT<l′,i> ≠ φ c.r.a. t’; existir um caminho

livre de definição c.r.a. t’ de i até nout de G(UPA); o caminho πa passar pelo par de nós

<l,i> G(UPB) onde defT<l,i> ≠ φ c.r.a. t; existir um caminho livre de definição c.r.a. t

de i até nout de G(UPB); o caminho πb passar pelo arco (j,k) G(UPC)/ existe um t-uso em

(j,k) e j fdsu(t,i)(sendo t e/ou t’) e existir um caminho livre de definição c.r.a. t e/ou t’ de nin até o arco (j,k). A associação [<l′,i>, UPA, <l,i>, UPB, (j,k), UPC, {t’, t}] é satisfeita se

e somente se a mesma tupla τ ( τ’) usada para satisfazer a definição de t ( t’) é também usada para satisfazer o uso.

Capítulo 4 – Critérios de Teste: Definição e Análise de Propriedades

Neste caso, os elementos requeridos são representados por uma sétupla do tipo: [zUPA , <l, i>, zUPB, <l’, i’>, zUPC , (j, k) , {t, t’}]

Dois enfoques podem ser considerados: Utilizar as mesmas tuplas para satisfazer os pares definição-uso na integração ou utilizar tuplas diferentes para satisfazer os elementos requeridos não cobertos com a mesma tupla. O primeiro enfoque é mais conservador e mostrou, na execução de um exemplo de aplicação, ser melhor para a detecção de defeitos do que o segundo.