Você está na página 1de 23

TESTE ESTRUTURAL

Josu froner

Introduo
Tcnica

estrutural ou caixa branca estabelece os


requisitos de teste com base em uma dada
implementao, requerendo a execuo de partes ou
componentes elementares do programa;
Testar os caminhos lgicos do software tanto cjto
especfico de condies ou laos como definies e usos
de variveis;
Tcnica complementar as demais tcnicas;

problemas
No existe um procedimento de teste de propsito geral que possa ser

usado pra provar a correo de um programa;


Dados dois programas, indecidvel se eles computam mesma funo;
indecidvel, em geral, se dois caminhos de um programa ou de
programas diferentes computam a mesma funo;
indecidvel, em geral, se um dado caminho executvel, ou seja, se
existe um conjunto de dados de entrada que leve a execuo desse
caminho
Problemas inerentes a est tcnica
Caminhos ausentes se o programa no implementa algumas funes, no

existir caminho que corresponda quela funo, consequentemente no haver


dado de teste para exercit-la
Correo coincidente o programa poder apresentar resultado correto para um
dado particular de entrada, satisfazendo o requisito de teste e no revelando a
presena de um defeito entretanto se escolhido outro dado de teste poder o
resultado ser incorreto

Histrico
Fluxo de controle McCabe baseado na complexidade ciclomtica primeiro teste

estrutural definido;
Cirtrio todos-ns, todos caminhos e todas arestas mais conhecidos critrio baseado
em fluxo de controle
Todos caminhos impraticvel exercitar devido a quantidade infinita que poderia haver restringindo a

tcnica

Limite interior (boundary-interior) classificando os caminhos em diferentes classes;


LCSAJ Woordward hierarquia de critrios concatenar sequencias de cdigos

terminadas por uma transferencia de controle. (Linear code sequence and jump);
Em 70 aproximadamente surge os critrios baseados no fluxo de dados analise de fluxo
de dados, por Herman;
Hierarquizou entre os critrios todas-arestas e todos- caminhos objetivando tornar o teste
estrutural mais rigoroso;
Em 80 Rapps e Weyuker propuseram todas-definies, todos-usos, todos-ducaminhos
Ntafos critrio k-tuplas requeridas
Laski e Korel propuseram os critrios ambiente de dados, contexto elementar de dados
e contexto ordenado de dados
Na inicio de 90 Maldonado introduziu a famlia potenciais-usos

Definies e conceitos
A base do TE a estrutura interna do programa, tendo os aspectos de

implementao fundamentais para a gerao/seleo dos casos de teste


associados;
Utilizao bsica do grafo de fluxo de controle (GFC) um programa pode ser
decomposto em um conjunto de blocos disjuntos de comando, a execuo do
primeiro comando de bloco acarreta a execuo de todos os outros comandos
desse bloco na ordem dada;
Caractersticas dos blocos de comando:
Uma vez que o primeiro comando do bloco executado, tos os demais so executados
sequencialmente;
No existe desvio de execuo para nenhum comando dentro do bloco;

GFC G = (N, E, s) onde N representa o conjunto de ns, E o conjunto de arcos e s

o n de entrada
Um caminho uma sequencia finita de ns
Caminho simples se todos os nos que compem esse caminho, exceto possivelmente o
primeiro e o ultimo, so distintos,; se todos os nos so distintos o caminho um caminho livre de
laos
Um caminho completo aquele que o primeiro n o n de entrada e o ultimo no um no de
sada do grafo

exemplo

Especificao
Programa identifier o programa responsvel por

determinar se um identificador valido ou no um


identificador deve comear com um letra e conter apenas
letras ou dgitos, alm disso deve ter no mnimo 1 e no
mximo 6 caracteres de comprimento.
O primeiro bloco de comandos (n) vai da linha 2 a 10, o
segundo bloco da linha 11 a 13, o terceiro refere-se a
linha 14 como poder observar na lateral indicativa do
cdigo. Totalizando 11 ns referen-se a funo main, 4 a
funo valid_s e 4 da funo valid_f

Grafo
Em relao ao programa identifier, o comando if (valid_id)

na linha 10 refere-se a um desvio de execuo entre os


ns do programa.
Se for executado h um desvio do no 1 para o 2 m se no
for executa do desvio ser do n 1 para o 3...

Grafo
(2,3,4,5,6,7) um caminho simples e livre de

laos e o caminho (1,2,3,4,5,7,4,8,9,11) um


caminho completo.
Observe que o caminho (6,7,4,5,7,4,8,9) no
executvel e qualquer caminho completo que
o inclua tambm no executvel, ou seja,
no existe um dado de entrada que leve
execuo desse caminho.

Critrios de teste estrutural


classificao
Baseados na complexidade
Critrios baseados em fluxo de controle
Critrios baseados em fluxo de dados

Baseados na complexidade
Utilizao de informaes sobre a complexidade do

programa assim deriva-se os requisitos de teste


McCabe teste de caminho bsico utiliza a
complexidade ciclomtica
Faa uma pesquisa e coloque aqui uma explicao sobre
complexidade ciclomtica? Quais maneiras de computala?

Baseado em fluxo de controle


Tal critrio baseia-se na utilizao de caractersticas de

controle da execuo do progrma, como comandos ou


desvios, para determinar quais estruturas so necessrias.
So
Todos-ns: exige que a execuo do programa passe, ao
menos uma vez em cada vrtice do GFC, ou seja que cada
comando do programa seja executado pelo menos uma
vez;
Todas-Arestas todos-arcos cada aresta do grafo, isto ,
cada desvio de fluxo de controle do programa, seja
exercitada pelo menos uma vez;
Todos-caminhos requer que todos os caminhos possveis
do programa sejam exercitados

Critrio baseado em fluxo de dados


Utiliza a analise de fluxo de dados como fonte de

informao
Uma caracterstica que esses critrios requerem o teste
das interaes que envolvam definies de vaiveis e
subsequente referencia a essa definies definies de
variveis e seu possvel uso subsequente;
Familia de teste de rapps e weyuker
Familia de teste proposta por maldonado

Rapps e Weyuker
Grafo Def-Uso consiste na extenso do GFC

neste grafo so adicionadas informaes a respeito


do fluxo de dados do programa, caracterizando
associaes entre pontos do programa nos quais
atribudo um valor a uma varivel(definio de
varivel) e pontos nos quais esse valor utilizado
(referncia ou uso da varivel);

Rapps e Weyuker

Grafo Def-Uso do

Programa identifier.

uma definio de varivel ocorre quando um valor armazenado em

uma posio de memria. Em geral, em um programa, uma ocorrncia


de varivel uma definio se ela est:
i) no lado esquerdo de um comando de atribuio;
ii) em um comando de entrada; ou
iii) em chamadas de procedimentos como parmetro de sada.

A passagem de valores entre procedimentos atravs de parmetros pode

ser por valor, referncia ou por nome. Se a varivel for passada por
referncia ou por nome considera-se que seja um parmetro de sada. As
definies decorrentes de possveis definies em chamadas de
procedimentos so diferenciadas das demais e so ditas definidas por
referncia. A ocorrncia de uma varivel um uso quando a referncia a
essa varivel no a estiver definindo. Dois tipos de usos so distinguidos:
c-uso - afeta diretamente uma computao sendo realizada ou permite que o

resultado de uma definio anterior possa ser observado


p-uso - afeta diretamente o fluxo de controle do programa

Famlia de critrios de fluxo de dados


Todas-Definies: requer que cada definio de varivel

seja exercitada pelo menos uma vez, no importa se por


um c-uso ou por um p-uso.
Todos-Usos: requer que todas as associaes entre uma
definio de varivel e seus subseqentes usos (c-usos e
p-usos) sejam exercitadas pelos casos de teste, atravs de
pelo menos um caminho livre de definio, ou seja, um
caminho onde a varivel no redefinida.
Todos-Du-Caminho: requer que toda associao entre uma
definio de varivel e subsequentes p-usos ou c- usos
dessa varivel seja exercitada por todos os caminhos livres
de definio e libres de lao que cubram essa associao

Por exemplo
para exercitar a definio da varivel length definida no n 1, de acordo com o

critrio Todas-Definies, poderiam ser executados um dos seguintes subcaminhos:


(1,3,4,5,7); (1,3,4,8,9); (1,3,4,8,10); e (1,3,4,5,6,7). O subcaminho (1,3,4,8,9) no
executvel, e qualquer caminho completo que o inclua tambm no executvel. Se
qualquer um dos demais caminhos for exercitado, o requisito de teste estaria sendo
satisfeito, e para satisfazer o critrio Todas-Definies esta anlise teria que ser feita
para toda definio que ocorre no programa.
Em relao ao critrio Todos-Usos, com respeito mesma definio, seriam
requeridas as seguinte associaes: (1,7, length); (1,(8,9),length) e (1,(8,10),length).
As notaes (i,j,var) e (i,(j; k),var) indicam que a varivel var definida no n i e
existe um uso computacional de var no n j ou um uso predicativo de var no arco (j;
k), respectivamente, bem como pelo menos um caminho livre de definio do n i ao
n j ou ao arco (j; k). Observe que a associao (1,(8,9), length) no executvel
pois o nico caminho que livre de definio possvel de exercit-la seria um caminho
que inclusse o subcaminho (1,3,4,8,9). J para a associao (1,7,length) qualquer
caminho completo executvel incluindo um dos subcaminhos (1,3,4,5,6,7), (1,3,4,5,7)
seria suficiente para exercit-la. Esta mesma anlise deveria ser feita para todas as
demais variveis e associaes pertinentes, a fim de satisfazer o critrio Todos-Usos.

Critrio Pontenciais - Usos


Em linhas gerais a complexidade de um critrio C definida

como o numero mximo de casos de teste requerido pelo


critrio no pior caso. Ou seja, dado um programa qualquer P, se
existir um conjunto de caso de teste T que seja C-adequado
para P, ento a cardinalidade de T menor ou igual a
complexidade do critrio C;
Na realidade, pode-se dizer que, com a introduo do conceito
potencial-uso, procura-se explorar todos os possveis efeitos a
partir de uma mudana de estado do programa em teste,
decorrente de definio de variveis em um determinado n i.
Da mesma forma como os demais critrios baseados na anlise
de fluxo de dados, os critrios Potenciais- Usos podem utilizar o
Grafo Def-Uso como base para o estabelecimento dos
requisitos de teste.

exercicio
Ache a complexidade ciclomtica do exemplo desta

apresentao?

Esturuturas tipicas de GFC

Programa Fibonacci
public class Fibonacci {
public long fibonacci (int n) {
1
int i = 1;
2
int a = 0;
3
int b = 1;
4
if (n > 1) {
5
while (i < n) {
6
long temp = b;
7
b = b + a;
8
a = temp;
9
i = i + 1;
10
}
11
}
12
return (b);
}
}

1 -Faa a tabelas de ns;


2 Desenhe o GFC

referencia
KOSCIANSKI, Andr; Soares, Michel dos Santos. Qualidade de Software.

Aprenda as metodologias e tcnicas mais modernas para o desenvolvimento


de software. NOVATEC. 2007;
DELAMARO, M. Eduardo; Maldonado, J. Carlos; Jino, Mario. Introduo ao
Teste de Software. RJ: Elsevier. 2007
MOREIRA, T. R.; RIOS, E. Projeto e & Engenharia de Software - Teste de
Software. [S.l.]: Alta Books, 2003.