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.