• Nenhum resultado encontrado

Os critérios baseados nas associações de interação são incomparáveis entre si Prova: Os critérios propostos buscam exercitar aspectos disjuntos de um conjunto de

Critérios de Teste Baseados na Interação entre Regras Ativas

Teorema 5.10: Os critérios baseados nas associações de interação são incomparáveis entre si Prova: Os critérios propostos buscam exercitar aspectos disjuntos de um conjunto de

regras, tornando-os incomparáveis entre si. Para realizar a demonstração do teorema, considere os elementos requeridos para os critérios todos-dusos-AA, todos-dusos-AC,

todos-dusos-AE, todos-dusos-AA de chamada, todos-dusos-AA de retorno e todos-dusos- AC de chamada apresentados nas Figuras 5.7 a 5.12, respectivamente. As análises a

seguir são realizadas de acordo com o alcance sintático de caminhos, analisando critérios dois-a-dois; não se objetiva realizar um exame completo dos critérios, comparando cada critério com todos os outros, mas apresentar algumas evidências que levem à inferência da validade do teorema.

Critérios de Teste Baseados na Interação entre Regras Ativas 115 • Os critérios todos-dusos-AA e todos-dusos-AC são incomparáveis: o primeiro pode

ser satisfeito sem o disparo da regra trg005, condição necessária à satisfação do segundo (requisitos (49) e (50)); o segundo pode ser satisfeito a partir do exercício dos caminhos (1 2 3 5 6 7 8 10 15 16 20 21 22 24 25)trg001 . (1 2 3 4)trg005 e (1 2 3 5 6 7 8 10 15 16 20 21 22 24 25)trg001 . (1 2 4)trg005, os quais não inclui o nó 9 da regra trg001,

cujo exercício é necessário à cobertura das associações (5), (6) e (7), as quais são requeridas pelo primeiro.

• Os critérios todos-dusos-AC e todos-dusos-AC de chamada são incomparáveis: o primeiro critério pode ser satisfeito pela execução dos caminhos (1 2 3 5 6 7 11 13 14

15 16 20 21 22 24 25)trg001 . (1 2 3 4)trg005 e (1 2 3 5 6 7 11 13 14 15 16 20 21 22 24 25)trg001 . (1 2 4)trg005, mas não cobre as associações (85) e (86), requeridas pelo

segundo critério, que exigem o disparo da regra trg005 a partir da execução da operação atribuída ao nó 12 da regra trg001; o segundo critério pode ser satisfeito pela execução dos caminhos (1 2 3 5 6 7 11 12) trg001 . (1 2 4)trg005 . (14 15 16 20 21 22 24 25)trg001 e (1 2 3 5 6 7 11 12) trg001 . (1 2 3 4)trg005 . (14 15 16 20 21 22 24 25)trg001, mas

não executa qualquer subcaminho final de trg001 iniciado no nó 2, exigido para a cobertura das associações (49) e (50), as quais são requeridas pelo primeiro.

• Os critérios todos-dusos-AA de chamada e todos-dusos-AA de retorno são

incomparáveis: o primeiro critério requer o exercício do uso de dados persistentes nos

arcos (2,3) e (2,9) da regra trg002 (requisitos (55) a (60)) cujo exercício pode ser alcançado sem passar pelos nós 4 e 7 da regra trg002, os quais são necessários à cobertura dos requisitos do segundo critério (requisitos (61) a (84)); por outro lado os nós 4 e 7 da regra trg002 podem ser exercitados sem incluir o arco (2,9), o qual é exigido pelas associações (56), (58) e (60) requeridas pelo primeiro critério.

Dessa forma, pode-se estabelecer cenários de fluxo de controle que demonstrem que os critérios baseados na interação entre regras são incomparáveis entre si.

A complexidade de um critério é um conceito pertinente à atividade de teste, sobretudo para apoiar a estimativa do custo de aplicação do critério. A complexidade é estabelecida pelo número de casos de teste exigidos pelo critério para o pior caso, embora, na prática, este cenário seja pouco provável de ocorrer. Dados um critério de interação entre regras C e qualquer

conjunto de regras R e especificação S, se existir um conjunto de casos de teste Λ que seja C–

adequado para (R, S), então existe um conjunto de casos de teste Λ’ tal que a cardinalidade de Λ

é menor ou igual à complexidade do critério C.

Y

commit insert tab001 3 6 5 7 1 2 4 2 4 3 8 1 select tab001 X

Figura 5.14: Exemplo de grafo de fluxo de controle entre duas unidades de programa (X e Y), usando a notação de Spoto (2000).

Segundo Maldonado (1991), a complexidade dos critérios todos os usos é 2t, onde a estrutura que maximiza o número de casos de testes é dada por um grafo de programa que representa uma seqüência de t comandos if-then-else dentro de um laço. As análises realizadas pelo autor também determinaram que a complexidade dos critérios potenciais usos é da ordem de

2t. Apesar dos critérios baseados nas associações de interação serem, em sua essência, uma extensão dos critérios todos os usos para o contexto de interação entre regras ativas escritas em SQL, eles não herdam a complexidade dos critérios todos os usos, conforme demonstrado abaixo. Na Subseção 5.3.5, serão discutidos alguns dos resultados de um experimento para a aplicação dos critérios propostos. É importante realçar a constatação de que casos de teste reveladores de defeito estão relacionados à cobertura de associações de interação nas diversas precisões de fluxo de dados. Tal constatação vai ao encontro do objetivo primário da atividade de teste – revelar a presença de defeitos – e representa uma contribuição importante às iniciativas de

Critérios de Teste Baseados na Interação entre Regras Ativas 117

pesquisa que buscam estender abordagens de teste baseadas em fluxo de dados para o contexto de bancos de dados relacionais.

Considere os grafos de regras ativas da Figura 5.15, que possuem exemplos para iniciar uma discussão sobre a complexidade dos critérios baseados na interação entre regras. No contexto de teste de unidade, no grafo exibido na Figura 5.15(a) são estabelecidas 32 associações de interação para a variável persistente tab001. Vale ressaltar que o comando representado pelo nó 3 não caracteriza uma redefinição dos dados persistentes definidos no nó 2, pois o requisito

(critério, granularidade) não é satisfeito apenas pelo exercício de caminhos. Note que o limite 2t

para os critérios baseados em fluxo de dados é dado em função da estrutura de controle, sem considerar os dados persistentes definidos e usados em conseqüência da aplicação de casos de teste. Em 5.15(b), procura-se realçar que associações de interação são estabelecidas somente para entidades de banco de dados e que a presença de estruturas de seleção de controle não determina a existência de associações dessa natureza. Não são observadas associações de interação para a variável persistente tab003, devido à ausência de ocorrências de definição de dados persistentes, mesmo existindo uma ocorrência do comando select no nó 2.

Para demonstrar a complexidade dos critérios propostos, considere trechos dos grafos das regras X e Y, não necessariamente distintas, mostrados na Figura 5.16. Os nós representam comandos de manipulação de dados; a seta tracejada em negrito constitui a ocorrência de disparo entre regras, as outras setas tracejadas representam os arcos para as exceções ocorridas na execução de comandos de manipulação, as setas pontilhadas denotam a continuidade da seqüência de nós e as demais setas complementam o fluxo de controle intra-regra; e, por fim, as linhas que unem os nós das regras X e Y indicam a existência de interação entre regras baseada em fluxo de dados persistentes, onde o sentido desse fluxo é indicado na parte inferior de cada grafo.

É importante ressaltar que os critérios baseados na interação entre regras não possuem sua complexidade diretamente atrelada ao fluxo de controle intra-regra, pois: (i) cada elemento requerido é uma associação de interação, cuja cobertura é alcançada por algum caminho livre de definição (não são requeridos du-caminhos); (ii) em geral, a redefinição de dados persistentes não é determinada pelo exercício de um nó (ou de um caminho), pois a definição e o uso de dados persistentes são sensíveis aos dados de teste; e (iii) os caminhos completos que não incluem quaisquer nós representativos de comandos de manipulação não são em geral exercitados por

casos de teste reveladores de defeito. Nesse sentido, os grafos da Figura 5.16 não objetivam evidenciar qual estrutura de fluxo de controle intra-regra apóia a maximização do número de elementos requeridos (tal fluxo é tratado de forma genérica), mas explorar a interação entre regras que maximiza o número de associações de interação.

update tab001 (a) update tab001 1 3 2 update tab001 update tab001 5 4 n select tab003 2 5 3 1 4 (b)

Figura 5.15: Exemplos para a discussão sobre a complexidade dos critérios baseados na interação entre regras.

(a) ddef – duso X Y duso – ddef X Y ddef – duso X Y (b) (c)

Figura 5.16: Exemplos para a discussão sobre a complexidade dos critérios baseados na interação entre regras, com fluxo de controle intra-regra genérico.

Critérios de Teste Baseados na Interação entre Regras Ativas 119

Visando a maximizar o número de associações de interação, considere que todo nó nos grafos da Figura 5.16 constitui um comando de manipulação que caracteriza uso e definição de dados (por exemplo, comando update); devido a esse enfoque, são abstraídas associações de interação entre a definição que há no próprio nó e os usos existentes em seus arcos de saída, onde, por exemplo, sua cobertura possivelmente ocorrerá em disparos seqüenciais da regra que possui o nó. Para introduzir a complexidade dos critérios propostos, seja m o número de nós que possuem definição e uso de dados persistentes para uma dada entidade de banco de dados.

Teorema 5.11: Os critérios baseados nas associações de interação possuem complexidade de