• Nenhum resultado encontrado

Definições de Critérios de Teste

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

5.1 Definições de Critérios de Teste

Nesta seção, é definida uma família de critérios de teste baseados na interação entre regras ativas. Nesse sentido, um critério C (critério de adequação) é uma função que, para um dado conjunto de regras R, especificação S e conjunto de teste T, determina se T é C-adequado para (R,

S); ou seja, determina se R foi adequadamente testado com respeito a S por T de acordo com C.

Para a definição de critérios de teste ligados às associações de interação que exploram o fluxo de controle resultante do disparo entre regras – associação-ddef-duso-AE, associação-ddef-

duso-AC de chamada, associação-ddef-duso-AA de chamada e associação-ddef-duso-AA de retorno – considere que a aplicação de um conjunto de casos de teste proporciona a dupla <Π, Γ >, onde: Π é o conjunto de caminhos resultantes, tal que Π = { π1, ..., πp }, p > 0; e Γ determina

os dados persistentes definidos e usados ao longo de cada caminho de Π. Considere um conjunto de regras R com especificação S; sejam duas regras r’ e r’’ de R, não necessariamente distintas, descritas pelos grafos G(r’) = (N’, A’, e’, x’) e G(r’’) = (N’’, A’’, e’’, x’’), respectivamente; então qualquer πk ∈Π é composto por (e’, ..., m) . (e’’, ..., x’’) . (succ(m), ..., x’), onde m é o nó

que representa a operação de r’ que provocou o evento de disparo de r’’, e succ(m) é um nó sucessor de m em r’. Seja o conjunto Γ = { γ1, ..., γp }, onde γk representa os dados persistentes

definidos e usados ao longo do caminho πk.

• Critério todos-dusos-AE: a dupla <Π, Γ> satisfaz o critério todos-dusos-AE para (R, S),

se e somente se, para cada par de regras r’ e r’’ de R, não necessariamente distintas, para cada nó m da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, Π e Γ incluírem todos os subcaminhos (m) . (e’’) para toda variável persistente v, tal que v ddef(m) e v duso(e’’, succ(e’’)). Equivalentemente, em termos

de associação de interação, a dupla <Π, Γ> deve incluir, para cada nó x da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, todas as

associações [ x, (y,z), v, r’, r’’ ] de R do tipo associação-ddef-duso-AE, tal que (y,z)

ddu-AE (r’, r’’, v, x).

• Critério todos-dusos-AC de chamada: a dupla <Π, Γ> satisfaz o critério todos-dusos-AC de chamada para (R, S), se e somente se, para cada par de regras r’ e r’’ de R, não

necessariamente distintas, para todo nó x da ação da regra r’, para toda variável persistente v definida em x e para todo nó m da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, incluir pelo menos um subcaminho p’ . p’’ livre de definição c.r.a v do nó x para todo arco (y,z) que possui uso de v, onde y representa o nó da condição de r’’, tal que p’ é um subcaminho iniciado em x e terminado em m, e p’’ é um subcaminho inicial de r’’ terminado em (y,z). Equivalentemente, em termos de associação de interação, a dupla <Π, Γ> deve incluir, para cada nó m da ação

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

da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, todas as associações [ x, (y,z), v, m, r’, r’’ ] de R do tipo associação-ddef-duso-AC de chamada, tal que (y,z) ddu-AC de chamada (r’, r’’, v, x, m).

• Critério todos-dusos-AA de chamada: a dupla <Π, Γ> satisfaz o critério todos-dusos-AA de chamada para (R, S), se e somente se, para cada par de regras r’ e r’’ de R, não

necessariamente distintas, para todo nó x da ação da regra r’, para toda variável persistente v definida em x e para todo nó m da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, incluir pelo menos um subcaminho p’ . p’’ livre de definição c.r.a v do nó x para todo arco (y,z) que possui uso de v, onde y e z representam nós da ação de r’’, tal que p’ é um subcaminho iniciado em x e terminado em

m, e p’’ é um subcaminho inicial de r’’ terminado em (y,z). Equivalentemente, em termos

de associação de interação, a dupla <Π, Γ> deve incluir, para cada nó m da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, todas as

associações [ x, (y,z), v, m, r’, r’’ ] de R do tipo associação-ddef-duso-AA de chamada, tal que (y,z) ddu-AA de chamada (r’, r’’, v, x, m).

• Critério todos-dusos-AA de retorno: a dupla <Π, Γ> satisfaz o critério todos-dusos-AA de retorno para (R, S), se e somente se, para cada par de regras r’ e r’’ de R, não

necessariamente distintas, para todo nó x da ação da regra r’’, para toda variável persistente v definida em x e para todo nó m da ação da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, incluir pelo menos um caminho p’’ . p’ livre de definição c.r.a v do nó x para todo arco (y,z) que possui uso de v, onde y e z representam nós da ação de r’, tal que p’ é um subcaminho final de r’’ iniciado em x, e p’’ é um subcaminho em r’’ iniciado em succ(m) e terminado em (y,z). Equivalentemente, em termos de associação de interação, a dupla <Π, Γ> deve incluir, para cada nó m da ação

da regra r’ que possui uma operação capaz de provocar o evento de disparo de r’’, todas as associações [ x, (y,z), v, m, r’, r’’ ] de R do tipo associação-ddef-duso-AA de retorno, tal que (y,z) ddu-AA de retorno (r’, r’’, v, x, m).

Sobre as associações de interação baseadas unicamente na dependência de dados persistentes – associação-ddef-duso-AC e associação-ddef-duso-AA – considere que a aplicação de um conjunto de casos de teste proporciona a dupla <Π, Γ>, onde: Π é o conjunto de caminhos resultantes, tal que Π = { π1, ..., πp }, p > 0; e Γ determina os dados persistentes definidos e

usados ao longo de cada caminho completo de Π. Considere um conjunto de regras R com especificação S; sejam duas regras r’ e r’’ de R, não necessariamente distintas, descritas pelos grafos G(r’) = (N’, A’, e’, x’) e G(r’’) = (N’’, A’’, e’’, x’’), respectivamente; então qualquer πk

Π é composto por (e’, ..., x’) . (e’’, ..., x’’), resultante de execuções em seqüência de r’ e r’’. Seja o conjunto Γ = { γ1, ..., γp }, onde γk representa os dados persistentes definidos e usados ao longo

do caminho πk.

• Critério todos-dusos-AC: a dupla <Π, Γ> satisfaz o critério todos-dusos-AC para (R, S),

se e somente se, para cada par de regras r’ e r’’ de R, não necessariamente distintas, para todo nó x da ação da regra r’ e para toda variável persistente v definida em x, incluir pelo menos um caminho p’ . p’’ livre de definição c.r.a v do nó x para todo arco (y,z) que possui uso de v, onde y representa o nó de condição de r’’, tal que p’ é um subcaminho final de r’ iniciado em x, e p’’ é um subcaminho inicial de r’’ terminado em (y,z). Equivalentemente, em termos de associação de interação, a dupla <Π, Γ> deve incluir

todas as associações [ x, (y,z), v, r’, r’’ ] de R do tipo associação-ddef-duso-AC, tal que

(y,z) ddu-AC (r’, r’’, v, x).

• Critério todos-dusos-AA: a dupla <Π, Γ> satisfaz o critério todos-dusos-AC para (R, S),

se e somente se, para cada par de regras r’ e r’’ de R, não necessariamente distintas, para todo nó x da ação da regra r’ e para toda variável persistente v definida em x, incluir pelo menos um caminho p’ . p’’ livre de definição c.r.a v do nó x para todo arco (y,z) que possui uso de v, onde y e z representam nós da ação de r’’, tal que p’ é um subcaminho final de r’ iniciado em x, e p’’ é um subcaminho inicial de r’’ terminado em (y,z). Equivalentemente, em termos de associação de interação, a dupla <Π, Γ> deve incluir

todas as associações [ x, (y,z), v, r’, r’’ ] de R do tipo associação-ddef-duso-AA, tal que

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

Para ilustrar os requisitos dos critérios baseados na interação entre regras, considere os códigos fonte das regras ativas trg001, trg002 e trg005, exibidos nas Figuras 5.1, 5.2 e 5.3, onde no início de cada linha está o número do nó correspondente, e cujos grafos de fluxo de controle estão representados nas Figuras 5.4, 5.5 e 5.6, respectivamente; a Seção 6.1 apresenta o modelo de fluxo de controle para regras escritas em SQL. Tais regras manipulam uma base de dados, que é descrita pelos seguintes esquemas de relação: tab001 (key001, att001_1, att001_2, att001_3),

tab002 (key002, att002_1), tab003 (key003, att003_1), tab004 (key004, att004_1, att004_2) e tab005 (key004, att005_1). Os elementos requeridos pelos 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 são apresentados nas Figuras 5.7, 5.8, 5.9, 5.10, 5.11, e 5.12, respectivamente.

No restante deste capítulo, os critérios propostos serão referenciados de forma indistinta como Critérios Baseados na Interação entre Regras, Critérios de Interação e Critérios Baseados

*01* CREATE OR REPLACE TRIGGER trg001

*01* AFTER INSERT OR DELETE OR UPDATE ON tab001 *01* FOR EACH ROW

*01* DECLARE v_exists INTEGER; *01* BEGIN

*02* UPDATE tab003

*02* SET att003_1 = att003_1 + NVL(:new.att001_2, 0) - NVL(:old.att001_2, 0) *02* WHERE key003 = NVL(:new.key001, 0)

*02* OR key003 = NVL(:old.key001, 0); *03* IF DELETING THEN

*04* DELETE FROM tab002

*04* WHERE key002 = :old.key001; *05* ELSE

*05* BEGIN

*06* SELECT COUNT(*) INTO v_exists *06* FROM tab002

*06* WHERE key002 = :new.key001;

*07* IF :new.att001_3 >= (:new.att001_2 - :new.att001_1) THEN *08* IF v_exists > 0 THEN

*09* DELETE FROM tab002

*09* WHERE key002 = :new.key001; *10* END IF;

*11* ELSE

*11* IF v_exists > 0 THEN *12* UPDATE tab005

*12* SET att005_1 = :new.att001_2 - :new.att001_1 -:new.att001_3 *12* WHERE key005 = :new.key001;

*13* ELSE

*13* INSERT INTO tab002 *13* (key002, att002_1) *13* VALUES

*13* (:new.key001, :new.att001_2 - :new.att001_1 -:new.att001_3); *14* END IF;

*15* END IF; *17* EXCEPTION