• Nenhum resultado encontrado

Modelo de Fluxo de Dados Intra-Modular

5 Os Modelos de Implementação dos Critérios de Teste

5.4 Modelo de Fluxo de Dados

5.4.1 Modelo de Fluxo de Dados Intra-Modular

Para o teste de unidade foram escolhidos para ilustração os critérios Potenciais Usos [MAL91], implementados na POKE-TOOL. O grafo_def é gerado pela POKE-TOOL a partir da ocorrência de definição das variáveis do programa de aplicação. O grafo_def informa as definições e referências ocorridas em cada nó do programa c.r.a. variáveis de programa e variáveis host, cujas ocorrências foram estudadas na Seção 3.2.1.

A passagem de valores entre procedimentos através de parâmetros pode ser feita por: valor, referência ou nome. Se a variável for passada por referência ou por nome considera-se que seja um parâmetro de saída. As definições decorrentes de possíveis definições em chamadas de procedimentos são distinguidas das demais e são ditas definidas por referência; esta distinção é utilizada na geração do grafo(i) [MAL91], ou seja, na determinação dos caminhos livres de definição para cada variável definida em i.

Da mesma forma, as ocorrências das variáveis tabela foram estudadas na Seção 3.2.1. Para a construção do grafo_def é apenas indicada a ocorrência da definição por referência de t no nó onde existir um comando de manipulação da SQL. As Figuras 5.11 e 5.12 sintetizam os conceitos e hipóteses para a determinação do grafo_def a partir do modelo de fluxo de controle dos principais comandos da SQL na linguagem LI.

Capítulo 5 – Os Modelos de Implementação dos Critérios de Teste

O nó k contém o conjunto de variáveis definidas no bloco de comandos associados a este nó que envolve o comando declarativo da SQL WHENEVER, o qual é responsável pelo fluxo de controle no comando de manipulação da SQL colocado no nó i. O nó l contém o conjunto de variáveis definidas no bloco de comandos da linguagem hospedeira, associado a este nó. O nó i contém o conjunto de variáveis tabela associadas a um dos comandos de manipulação da

SQL (INSERT, DELETE, UPDATE), contendo uma definição por referência

neste nó, a qual é atribuída uma definição por valor se o comando COMMIT estiver no subgrafo l conforme mostram os fluxos de controles acima.

Comandos de Manipulação da SQL INSERT, DELETE, UPDATE

INSERT DELETE UPDATE i k l r f l k f INSERT DELETE UPDATE i INSERT DELETE UPDATE i k l r INSERT DELETE UPDATE i k l

Figura 5.11: Diretrizes para a Expansão do Grafo de Programa para Obtenção do Grafo def: Comandos de Manipulação da Base de Dados (SQL)

<WHENEVER>::=<whenever_atm> <cond_atm> <act_atm>

STOP CONTINUE GOTO <rotulo> DO <FUNC>

<INSERT>::=<ins_atm><tab_atm>

[{<atr_atm>}]<values_atm> {<val_atm>} <DELETE>::= <del_from_atm><tab_atm> <where_atm> [<cond_atm>/<cur_atm>]

<UPDATE>::=<up_ atm><tab_atm> <set_atm> {<stat_atm>} <where_atm> [<cond_atm>/<cur_atm>]

Para obter as informações referentes aos critérios que exercitam as variáveis persistentes, foi necessário criar uma relação que identifique os pontos do programa onde ocorrem os comandos de manipulação da SQL (INSERT, DELETE, UPDATE) seguido do

O nó k contém o conjunto de variáveis definidas no bloco de comandos associados a este nó que envolve o comando declarativo da SQL WHENEVER, o qual é responsável pelo fluxo de controle no comando de seleção da SQL colocado no nó i. O nó l contém o conjunto de variáveis definidas no bloco de comandos, da linguagem hospedeira, associado a este nó. O nó i contém também o conjunto de variáveis host associadas ao comando de seleção da SQL (SELECT) na cláusula <into> <var_host>.

Comandos de Manipulação da SQL SELECT SELECT i k l r f l k f SELECT i SELECT i k l r SELECT i k l

Figura 5.12: Diretrizes para a Expansão do Grafo de Programa para Obtenção do Grafo def: Comandos de Seleção da Base de Dados (SQL)

<WHENEVER>::=<whenever_atm> <cond_atm> <act_atm>

STOP CONTINUE GOTO <rotulo> DO <FUNC>

<SELECT>::=<sel_ atm>{<col_atm>} [<into_atm> <var_atm>]

<from_atm> {<tab_atm>}

Capítulo 5 – Os Modelos de Implementação dos Critérios de Teste

comando COMMIT para caracterizar a definição persistente de uma tabela t e dos comandos que caracterizam um uso persistente da tabela t (INSERT, DELETE, UPDATE e SELECT). Este arquivo, denominado Tabdtu.tes, é gerado para cada tabela utilizada no programa da aplicação. Este arquivo indica o número da Unidade de Programa que contém um uso ou uma definição da tabela t mostrando o número do nó onde ocorre uma definição e um uso persistente de t. A partir deste arquivo são construídas as associações definição-t- uso para cada tabela envolvida no programa. Essas informações são utilizadas para a geração dos elementos requeridos para o teste de unidade e integração referentes aos critérios exclusivos de ABDR.

Para exemplificar foi utilizado o Módulo Mod3.pc que relaciona 5 variáveis tabela.

Para a variável EMPLOYEE foi gerado o arquivo Tabdtu.tes mostrado na Figura 5.13. O número (3001) do arquivo Tabdtu.tes representa o número da Unidade. Defp indica os números dos nós onde ocorrem as definições persistentes; o primeiro número representa ol referente ao comando de manipulação da SQL e o número que antecede o zero representa o nó i referente ao comando COMMIT da SQL. Já os números de uso representam os nós que contêm um dos comandos de manipulação ou de alteração da SQL que caracterizam um t-uso. O número zero (0) indica que não existe nenhum nó para defp ou uso.

Arquivo Tabdtu.tes - EMPLOYEE 3001 defp: 2 3 0 uso: 2 0 3006 defp: 2 3 0 uso: 2 0 3011 defp: 2 3 0 uso: 2 0 3016 defp: 0 uso: 3 6 9 12 0