Buscar

06 criterios de teste funcional

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 36 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

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 6, do total de 36 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

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 9, do total de 36 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

Continue navegando


Prévia do material em texto

Critérios de Teste Funcional
Prof. André Takeshi Endo
 
Técnicas de Teste
● Critérios de Teste
● Define uma maneira sistemática e planejada para 
conduzir testes
● Quais casos de teste com maior chance de revelar 
defeitos
 
Técnicas de Teste
● Teste Funcional (Caixa Preta)
– Testes baseados na especificação (de 
requisitos)
– A funcionalidade testada é considerada uma 
caixa preta
● Teste Estrutural (Caixa Branca)
– Testes baseados na estrutura interna do 
programa
– Analisar o código fonte (caixa branca)
 
Teste Funcional
● Vários critérios de teste funcional
● Particionamento em classes de equivalência
● Análise de valor limite
● Tabela de decisão
 
Part. em Classes de Equivalência
● Intuição (i)
● Domínio de entrada do programa sob teste
● Exemplo: método de uma classe
– Parâmetros de entrada
– Variáveis globais (atributos da classe)
– Objetos representando o estado atual
 
Part. em Classes de Equivalência
● Intuição (ii)
● Particionar o domínio em regiões
● Regiões têm valores igualmente úteis do ponto de 
vista de teste
● Valores são selecionados de cada região
● Se o programa funciona para um caso dessa região, 
é improvável que outro caso de teste dessa mesma 
região irá revelar um novo defeito
● Exemplo: triângulo (caso de teste para o triângulo 
equilatero)
 
Part. em Classes de Equivalência
● Como projetar os casos de teste usando 
particionamento em classes de equivalência? 
[Myers]
● (1) Identificar as classes de equivalência
● (2) Definir os casos de teste
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Identificar uma condição de entrada
● Particionar em 2 ou mais classes
● Identificar 2 grupos de classes
– Válidas e inválidas
● Identificar as classes é um processo heurístico
– Cada testador terá um resultado diferente
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● (i) Condição de entrada especifica limite de entradas
● Exemplo: o número de itens pode ser de 1 até 999.
– Uma classe válida
– Duas classes inválidas
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● Outro exemplo: “Um até seis proprietários podem ser 
listados por automóvel”.
– Uma classe válida
– Duas classes inválidas
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● (ii) Se a condição de entrada especifica um conjunto 
fechado de valores e há razão para acreditar que o 
programa trata cada um de forma diferente 
● Exemplo: “Tipo de veículo deve ser ônibus, 
caminhão, carro e moto”.
– Uma classe válida para cada valor
– Uma classe inválida (fora do conjunto)
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● (iii) Condição de entrada especifica uma situação 
“deve ser”
● Exemplo: “O primeiro caracter deve ser uma letra”.
– Uma classe válida
– Uma classe inválida
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● (iv) Se, por alguma razão, acredita-se que o 
programa não irá tratar todos os elementos da 
classe igualmente, divida a classe de equivalência 
em outras classes menores.
– Exemplo: triângulo isósceles
 
Part. em Classes de Equivalência
● (1) Identificar as classes de equivalência
● Processo heurístico (diretrizes):
● (v) as classes de equivalência podem ser mapeadas 
com base nas saídas.
– Exemplo: programa que recebe um inteiro e 
responde se o mesmo é primo ou não
 
Part. em Classes de Equivalência
● (2) Definir os casos de teste
● Derivar casos de teste das classes de equivalência
● (i) Atribuir um valor para cada classe
● (ii) Escrever casos de teste que cubram o máximo de 
classes válidas (até cobrir todas)
● (iii) Escrever um caso de teste para cobrir uma, e 
somente uma, classe inválida 
Por que o passo (iii) cobre só uma?
 
Part. em Classes de Equivalência
● Uma forma de enumerar as classes de equivalência
Condição de 
entrada
Classes válidas Classes Inválidas
 
Exemplo
● Exemplo [adaptado de DMJ07]
● Um programa solicita do usuário um inteiro positivo 
no intervalo entre 1 e 20 e então solicita uma cadeia 
de caracteres desse comprimento. Após isso, o 
programa solicita um caracter e retorna a posição na 
cadeia em que o caracter é encontrado pela primeira 
vez ou uma mensagem indicando que o caracter não 
está presente na cadeia. Para qualquer entrada 
inválida, uma mensagem expressiva de erro deve 
ser mostrada e a entrada deve ser solicitada 
novamente.
 
Exemplo
● Condições de entrada
– Comprimento da cadeia (int)
– String 
– Caracter a ser buscado
 
Exemplo
● Enumerando as classes de equivalência
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
amiltonjunior
Sticky Note
Importante
 
Exemplo
● Atribuindo valores para cada classes
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
7
-20
35
abcdefg
abc
abcefgh
c y
 
Exemplo
● Elaborar CTs que cubram as classes válidas
● Um CT para cada classe inválida
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
7
-20
35
abcdefg
abc
abcefgh
c y
 
Exemplo
● Resposta (entradas; saídas esperadas):
● (7, “abcdefg”, 'c'; “posição 3”)
● (-20, “abcdefg”, 'c'; “comprimento inválido”)
● (35, “abcdefg”, 'c'; “comprimento inválido”)
● (7, “abc”, 'c'; “cadeia com tamanho inconsistente”)
● (7, “abcdefgh”, 'c'; “cadeia com tamanho inconsistente”)
● (7, “abcdefgh”, 'y'; “caracter não está na cadeia fornecida”)
 
Part. em Classes de Equivalência
● Aviso!!!!!
● “Just because two items/values are suppose to be in 
the same class and behave the same, does not 
mean they DO behave the same.” (J. Soderstrom, in 
stackoverflow.com)
amiltonjunior
Sticky Note
Importante!
 
Análise de Valor Limite
● Intuição (i)
● CTs que exploram situações limite possuem grande 
chance de revelar defeitos.
● Assim como classes inválidas, as situações limite 
costumar ter um tratamento de “segunda linha” por 
parte dos desenvolvedores
– Introdução de defeitos!
 
Análise de Valor Limite
● Como aplicar o critério
● Pode-se usar as classes de equivalência do critério 
PCE*
– Complementar pois os valores serão selecionados 
no limite das classes de equivalência.
● Selecionar valores no limite ou ao redor do limites das 
classes de equivalência
*PCE → Particionamento em classes de equivalência
 
Análise de Valor Limite
● Selecionar valores no limite ou ao redor do limites das 
classes de equivalência
 
Análise de Valor Limite
● Diretrizes para selecionar os valores limites
● (i) Condição de entrada especifica um intervalo: CTs 
para o final dos intervalos e “um pouco adiante”
● Exemplo: o programa aceita um float entre -1.0 e 1.0
– Final do intervalo: -1.0 e 1.0
– Um pouco adiante: -1.001 e 1.001
 
Análisede Valor Limite
● Diretrizes para selecionar os valores limites
● (ii) Condição de entrada especifica um conjunto (vetor) 
de dados limitados: CTs para o final dos intervalos e “um 
pouco adiante”
● Exemplo: o programa processa uma diretório contendo 
de 1 a 255 imagens e gera um vídeo com colagens.
– Quais os CTs?
 
Análise de Valor Limite
● Diretrizes para selecionar os valores limites
● (iii e iv) Use as diretrizes (i) e (ii) para condições de saída
● Exemplo: o programa recebe o peso em kg e a altura em 
metros e fornece um parecer segundo o IMC e a tabela 
abaixo.
– Quais os CTs?
 
Análise de Valor Limite
● Diretrizes para selecionar os valores limites
● Utilize sua criatividade para buscar por outros valores 
limítrofes
 
Exemplo
● Exemplo [adaptado de DMJ07]
● Um programa solicita do usuário um inteiro positivo 
no intervalo entre 1 e 20 e então solicita uma cadeia 
de caracteres desse comprimento. Após isso, o 
programa solicita um caracter e retorna a posição na 
cadeia em que o caracter é encontrado pela primeira 
vez ou uma mensagem indicando que o caracter não 
está presente na cadeia. Para qualquer entrada 
inválida, uma mensagem expressiva de erro deve 
ser mostrada e a entrada deve ser solicitada 
novamente.
 
Exemplo
● Para essas classes de equivalência
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
 
Exemplo
● Para essas classes de equivalência
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
 
Exemplo
● Para essas classes de equivalência
Condição de 
entrada
Classes válidas Classes Inválidas
Comprimento 
da cadeia (cc)
1 <= cc <= 20 cc < 1
cc > 20
String (s) s no tamanho 
fornecido
s menor que cc
s maior que cc
Caracter a ser 
buscado (c)
c em s c não está em s
No começo
E
No final
 
Bibliografia
● [Pfleeger07] S. L. Pfleeger, “Engenharia de Software: 
Teoria e Prática”, 2007.
● [Pressman11] R. S. Pressman, “Engenharia de Software: 
uma abordagem profissional”, 2011.
● [Sommerville03] I. Sommerville, “Engenharia de 
Software”, 2003.
● [Brooks87] “No Silver Bullet: Essence and Accidents of 
Software Engineering”, 1987. 
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1663532
● [IEEE90] “IEEE Standard Glossary of Software 
Engineering Terminology”, 1990. 
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=159342
 
Bibliografia
● [Myers] G. J. Myers, T. Badgett, C. Sandler, “The art of 
software testing”, 2012.
● [Pezze] M. Pezze, M. Young, “Teste e análise de 
software: Processos, princípios e técnicas”, 2008.
● [DMJ07] DELAMARO, Márcio Eduardo; MALDONADO, 
José Carlos; JINO, Mario. Introdução ao teste de 
software. Rio de Janeiro, RJ: Elsevier, 2007. 394 p. ISBN 
9788535226348.
● [UUU] Materiais didáticos elaborados pelos grupos de 
engenharia de software do ICMC-USP, DC-UFSCAR e 
UTFPR-CP.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36