Considerando a técnica de Teste Funcional,
de seus critérios é o particionamento classe de equivalência.
E as idéias gerais desse critério, a gente vai verificar nesse video.
Então, de forma geral, todos os critérios da técnica de Teste funcional,
eles são baseados na especificação do produto testado e não na implementação si.
Inclusive considerando particionamento classe de equivalência, tá certo?!
Então, supondo domínio muito grande,
o teste exaustivo é bastante complicado, considerando
domínios de entradas infinitos ou muito grandes, nesse contexto.
Então o quê que o critério "Particionamento
Classes de Equivalência" faz?
Ele divide o domínio de entrada classes de equivalência,
que a gente pode considerar como sendo subconjuntos- então aqui a gente
tem exemplificado- são subconjuntos do domínio.
E aí, de acordo com a especificação do programa,
esses subconjuntos são definidos e podem ser tratados da mesma maneira.
Ou seja, considerando que eu tenha esses subconjuntos, ou seja,
essas classes de equivalência, qualquer elemento que eu pegar deveria
representar aquele subconjunto do qual ele faz parte.
E aí esse elemento, ele é na verdade dado de teste que vai compor
caso de teste que será submetido a sistema que está sendo testado.
Então aqui a gente tem uma visão geral da aplicação do critério,
"Particionamento Classes de Equivalência".
Então basicamente, a partir da especificação do "software",
a gente precisa identificar as classes de equivalência, os subconjuntos.
E aí, para ajudar na identificação é importante a gente verificar
a especificação do "software" que está sendo testado, e tentar identificar coisas
do tipo, por exemplo: intervalo, conjunto e palavras similares.
Também é importante verificar as diretrizes para definir as classes que
a gente vai abordar na sequência.
E se elementos de uma mesma classe estiverem sendo tratados de forma
diferente, se você perceber isso, então é importante dividir classes menores ainda.
E também é importante definir classes válidas e classes inválidas.
Então, considerando isso, o próximo passo é o quê?
Gerar os casos de teste, selecionando elemento de cada classe.
Então identificadas as classes, escolhe-se de forma arbitrária,
nesse primeiro momento, cada elemento, elementos de cada classe de equivalência,
de cada subconjunto, e os casos de testes são então definidos,
considerando classes válidas e inválidas.
Então vamos verificar exemplo, antes de verificar o exemplo, as diretrizes que
precisam ser seguidas para definir as classes, a gente precisa identificar.
Então, se a condição de entrada especifica intervalo, por exemplo: "Digite
número entre e dez!", por exemplo, então define-se uma classe válida,
ou seja, número entre e dez, e duas classes inválidas, por exemplo,
o onze, o doze, números acima ou números anteriores.
Se a condição especifica uma quantidade,
por exemplo: "Digite dois números!", apenas, então,
define-se uma classe válida, ou seja, apenas dois números digitados.
E duas classes inválidas, por exemplo, 1um número digitado,
ou nenhum número digitado, ou três números digitados, quatro números digitados.
Então a ideia é bem simples,né?!
E se a condição especifica conjuntos determinados de valores,
está aqui exemplo, relacionado com a tabela do imposto de renda,
são classes, são conjuntos específicos.
Então, define-se uma classe válida para cada conjunto
desses e uma classe inválida geral com outro valor qualquer.
Agora, se a condição de entrada especifica: "Deve ser assim!",
"Deve ser dessa forma!", ou seja, uma coisa bastante objetiva, então define-se
uma classe válida, exemplo, "Identificador deve iniciar com uma letra!".
Então uma classe válida é o quê?
Identificador iniciando com uma letra, uma classe inválida,
identificador que não inicia com uma letra, que inicia com número, por exemplo.
Então, aqui tem exemplo, para a gente verificar a aplicação do critério.
É a especificação do programa "Identifier", ou Identificador,
é a seguinte: "O programa deve determinar se o identificador é
válido ou não; O identificador válido deve começar com uma
letra e conter apenas letras ou dígitos; Além disso,
deve ter no mínimo "caractere" e no máximo seis caracteres".
Então, considerando as diretrizes que foram apresentadas anteriormente,
o quê que a gente pode identificar aqui?
A gente pode identificar algumas variáveis de entrada, por exemplo, o comprimento,
que precisa ser no mínimo e no máximo seis caracteres,
então está aqui, (T) está simbolizando a variável comprimento,
tem que ser maior ou igual a e menor igual a seis,
então essa seria a minha primeira classe de equivalência válida.
Agora considerando a diretriz para quantidade, eu preciso definir o quê?
Duas classes inválidas.
Então a gente tem aqui número, comprimento, menor do que
por exemplo, zero, e comprimento maior do que seis, por exemplo, sete.
Outra coisa que dá para a gente identificar é que tem que iniciar
com uma letra, então eu vou chamar isso de i, variável (I).
Então, uma classe válida seria: "Sim, inicia com uma letra",
e uma classe inválida seria: "Não,
não inicia com uma letra", exemplo que não inicia com uma letra.
E por fim, o quê mais que a gente tem aqui?
"Deve conter apenas letras ou dígitos",
então essa variável de entrada poderia ser chamada de (C), por exemplo.
Então uma classe válida seria "Sim",
valor que contem só letras ou dígitos e "Não",
contem outros caracteres que não sejam letras ou dígitos.
Então, no segundo passo, considerando as Classes de Equivalências,
a gente pode definir os "Casos de Testes".
Então aqui tem conjunto de casos de testes,
- lembrando que o "Caso de Teste" é par de entrada,
saída esperada- então a gente tem aqui esse caso de teste "A5",
por exemplo, ele satisfaz a classe de equivalência válida " ",
por que ele está dentro do intervalo entre e seis caracteres,
ele inicia com uma letra e só contem letras ou dígitos.
Então, esse "Caso de Teste" pode ser usado para verificar
todas essas casos de testes que a gente definiu anteriormente, para exercitá-las.
Esse caso de teste aqui, observa que ele está passando nada,
e qualquer resposta esperada inválido.
Por quê?
Por que aqui diz o seguinte: "Se o comprimento for menor do que a classe é
inválida." Então a gente está exercitando essa classe aqui.
Outro caso de teste, a gente tem esse valor,
ele é maior do que sete, o comprimento é maior do que sete,
então a gente está exercitando a classe de equivalência inválida três.
Além disso, ele não inicia com letra, então, o resultado desses aqui é o quê?
É inválido.
Por último o quê que a gente tem?
A gente está exercitando a classe de equivalência sete, por quê?
Por que não contem, quer dizer, contem caracteres diferentes
de letras e de dígitos, que no caso aqui é esse asterisco.
Então de forma geral, resumindo o critério de
"Particionamento Classes de Equivalências", o quê que a gente tem?
É critério da técnica de teste funcional, requer a especificação do
produto para derivar os casos de testes, ou seja, não requer a implementação si.
É útil para aplicações cujo as variáveis de entrada são facilmente identificadas,
considerando a especificação.
Observa que esse critério reduz o domínio de entrada
a tamanho mais adequado para a atividade teste.
As classes podem ser definidas a partir de diretrizes,
considerando as condições de entrada.
A gente identificou algumas, então, por exemplo: "Se a condição de entrada for
intervalo de valores, a gente precisa especificar uma classe válida e duas
inválidas"; "Se a condição de entrada for uma quantidade, a gente precisa
especificar uma classe válida e duas inválidas"; "Se a condição de entrada for
conjunto de valores específicos, a gente determina uma classe válida para
cada conjunto e uma inválida"; e "Se a condição de entrada
especificar algo exato, por exemplo: Deve ser assim!, Deve ser dessa forma!,
então a gente especifica uma classe válida e uma classe inválida".
Então como dicas de próximos passos, na sua aprendizagem,
eu deixo para você tentar resolver outros casos,
relacionados com esse critério; aplicar
técnica de Teste Funcional, considerando contexto real, tá certo?!
E compreender outros critérios da técnica de Teste Funcional.