Buscar

Testes de Unidade

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

05/02/2013
1
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 1/19
Testes de Unidade
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 2/19
Teste de unidade
• Investiga a qualidade de componentes 
individuais (ex: métodos, classes)
• Objetivo: 
• Testar comportamento (especificação) e estrutura 
interna (lógica e fluxo de dados)
2
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 3/193
Estratégia para Teste de unidade
• Driver de teste –
programa que 
executa o módulo a 
ser testado usando 
os dados do caso de 
teste e verifica o 
veredicto
• Este será o propósito 
de uso do JUnit
Driver
Módulo a 
ser testado
Casos de teste
Interface
Estrutura de dados local
Condições limite
Caminhos independentes
Caminhos de tratamento de erros
Resultados
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 4/19
Teste de Caixa Preta
• Casos de teste são gerados usando somente a 
especificação da unidade a ser testada
• Vantagens:
• Procedimento de teste não é influenciado pela 
implementação
• Resultados dos testes podem ser avaliados por 
pessoas sem conhecimento da linguagem de 
programação
• Robusto em relação a mudanças na implementação
4
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 5/195
Teste de Caixa Preta
• Deve-se analisar a relação entre a pré e a pós-
condição
• Tentar cobrir todas as combinações lógicas 
existentes entre estas partes
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 6/19
Seleção de Dados de Teste
• Há várias técnicas para seleção de dados de 
teste
• Particionamento
• Fronteiras
• Pares ortogonais
• Etc.
6
05/02/2013
2
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 7/19
7
Particionamento
Determinando partições
Selecionando 
representantes
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 8/198
Fronteiras
• Estatísticas indicam que há uma maior 
suscetibilidade a erros nas fronteiras de 
partições (limites dos tipos)
• Tanto em dados válidos quanto inválidos
• Assim, para x > 0, não bastaria usar qualquer x > 0 
(particionamento)
• Mas sim x = 1 (válido no limite) e x = 0 (inválido no 
limite)
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 9/199
Fronteiras
• A técnica da seleção de dados pelas fronteiras é 
muito indicada para investigar bom 
funcionamento de
• Arrays
• Vetores
• Algoritmos de busca/ordenação
• Etc.
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 10/1910
Teste de Caixa Branca
• Casos de teste são gerados a partir da lógica de 
implementação da unidade a ser testada
• Não se pode avaliar o grau de cobertura de uma 
funcionalidade pelo teste de caixa preta
• A ideia é gerar dados de teste que permitam 
exercitar algum critério em relação ao código 
(cobertura)
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 11/19
Grafo de fluxo de controle
11
nó = bloco de comandos sequenciais
aresta ou ramo = transferência de 
controle
1
1
2 3
4
1
2 3 m
n
...
1
2
3
1
2
3
bloco
seqüencial
seleção
if-then-else case
repetição
while
repeat-until
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 12/1912
Grafo de fluxo de controle: 
Exemplo
Cálculo de xy
1. read x, y;
2. if y < 0
3. then p := 0 - y
4. else p := y;
5. z := 1.0;
6. while p ≠ 0 do
7. begin
z := z * x; p := p - 1;
end;
8. if y < 0 
9. then z := 1 / z;
10. write z;
end;
1
2
3 4
5
6
7
8
9
10
y < 0 y ≥ 0
p ≠ 0
y < 0
y ≥ 0
05/02/2013
3
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 13/1913
Critérios de cobertura
• Alguns Tipos
• Cobertura de instruções
• Cobertura de decisões
• Cobertura de condições
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 14/19
Cobertura de instruções
14
1
2
3 4
5
6
7
8
9
10
y < 0 y ≥ 0
p ≠ 0
y < 0
y ≥ 0
Critério: cada instrução deve ser 
executada pelo menos 1 vez
nós predicados dados
{1,2,3,5,6,7,6,8,9,10} ∀x, y < 0 (4, -1)
{1,2,4,5,6,8,10} ∀x, y = 0 (4, 0)
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 15/19
1
2
3
4
5 6
x par
x ímpar
x < 0 x ≥ 0
nós predicados dados
{1,2,3,4,5} x par negativo -2
{1,2,3,4,6} x par positivo 2
� Satisfaz o critério de cobertura de instruções,
mas note que o ramo 2 → 4 não é exercitado
read x;
y := 0;
y := x;
write y; write y;
y := y + x / 2;
Cobertura de instruções
15
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 16/19
Cobertura de decisões
16
1
2
3 4
5
6
7
8
9
10
y < 0 y ≥ 0
p ≠ 0
y < 0
y ≥ 0
Critério: cada expressão lógica em 
estruturas de controle é avaliada pelo 
menos uma vez para verdadeiro e falso 
(cada ramo deve ser percorrido pelo 
menos 1 vez). Geralmente satisfaz 
cobertura de instruções desde que toda 
instrução esteja no mesmo caminho da 
cobertura de decisão.
ramos predicados dados
{(1,2), (2,3), (3,5), (5,6) ∀x, y < 0 (4, -1)
(6,7), (7,6), (6,8), (8,9), (9,10)}
{(1,2), (2,4), (4,5), (5,6), ∀x, y = 0 (4, 0)
(6,7), (7,6), (6,8), (8, 10)}
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 17/19
1
2
3
4
5 6
x par
x ímpar
x < 0 x ≥ 0
ramos predicados dados
{(1,2), (2,3), (3,4), (4,5)} x par negativo -2
{(1,2), (2,4), (4,6)} x ímpar positivo 3
read x;
y := 0;
y := x;
write y; write y;
y := y + x / 2;
Cobertura de decisões
17
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 18/19
1. if a >= 0 and a <= 200
2. then m := 1
3. else m := 3
4. ...
18
c
1
2 3
4
c ¬ c
ramos dados
{(1,2), (2,4)} a = 5
{(1,3), (3,4)} a = -5
� o critério é satisfeito mas a condição 
a<=200 não é testada para valores > 200
Teste de decisões
05/02/2013
4
©Ian Sommerville 2007 Engenharia de Software, 8ª. edição. Capítulo 23 Slide 19/19
Cobertura de condições
1. if a >= 0 and a <= 200
2. then m := 1
3. else m := 3
4. ....
19
c
1
2 3
4ramos dados
{(1,1A), (1A, 2), (2,4)} a = 5
{(1,1A), (1A,3), (3,4)} a = 500
{(1,3), (3,4)} a = -5
Critério: cada condição em 
uma decisão é exercitada 
pelo menos uma vez para 
os possíveis resultados
1A
a ≥ 0 a < 0
a ≤ 200 a > 200

Continue navegando