PARTICIONAMENTO POR CLASSE DE EQUIVALÊNCIA


O particionamento de equivalência é uma técnica de Caixa-Preta que divide os dados em partições (também conhecidas como classes de equivalência), de tal forma que todos os membros de uma determinada partição deve ser processado da mesma maneira (ver Kaner (2013) e Jorgensen (2014)). Existem partições de equivalência para valores válidos e inválidos.

Aplicação da Técnica:

    Passo 1:
  • Para ajudar na identificação das classes, analise a especificação do produto procurando termos como intervalos e conjuntos, bem como palavras parecidas;
  • Verifique as diretrizes para definir as classes;
  • Se elementos de uma mesma classe forem tratados de forma diferente, divida em classes menores;
  • Divida em classes válidas ou inválidas.

  • Passo 2:
  • Para ajudar na identificação das classes, analise a especificação do produto procurando termos como intervalos e conjuntos, bem como palavras parecidas;
  • Verifique as diretrizes para definir as classes;
  • Se elementos de uma mesma classe forem tratados de forma diferente, divida em classes menores;
  • Divida em classes válidas ou inválidas.

EXEMPLO

Considere um programa que deve determinar se um identificador de um usuário é válido ou não. Um identificador válido deve começar com uma letra e conter apenas letras e dígitos. Além disso, deve ter no mínimo 2 caractere e no máximo 6 caracteres de comprimento.

Primeiramente, devemos separar as classes de equivalência. Essa separação pode ser representada como uma tabela. Indentifica-se as condições de entrada do teste e quais valores serão válidos e quais serão inválidos.

Variáveis de Entrada Classes de Equivalência Válidas Classes de Equivalência Inválidas
Comprimento do ID 2 <= Comprimento <= 6 Comprimento < 2 e Comprimento > 6
ID inicia com uma letra (letra) + (letra ou dígito) (dígito) + (letra ou dígito)
ID contém letras e números (letras e dígitos) (apenas letras) ou (apenas dígitos)


Em seguida, elabora-se os casos de teste, um para os valores válidos e outros que exercitem cada classe de valor inválido:

Roteiro de Testes: Validar Identificador
Caso de Teste Entrada Saída Esperada
CT-01 teste1 Indentificador Válido
CT-02 a Identificador Inválido
CT-03 3teste Identificador Inválido
CT-04 teste Identificador Inválido

EXERCICIO 1 - CONTA BANCÁRIA

O Newbank está desenvolvendo seu aplicativo em Python. Nele, seus clientes serão representados por instâncias da classe Conta.py que você pode baixar logo abaixo. Essa classe possui os métodos de Saque e Depósito. Seu trabalho será elaborar casos de testes baseados na técnica de Particionamento de Equivalência e implementá-los e executá-los usando a biblioteca unittest disponível nas versões mais recentes do Python. A documentação do sistema está a seguir:

Baixar Documentação do sistema
    Orientação:
  • Para utilizar a unittest, basta dar um “import unittest” no começo do arquivo;
  • Uma nova classe de teste deve ser criada, extendendo unittest.TestCase;
  • Cada método dessa classe será um caso de teste. Certifique-se de identificá-los;
  • mporte também a classe Conta.py e a instancie em cada caso de teste, com os respectivos valores;
  • Ao final de cada caso de teste, utilize o metodo .assertEqual() para comparar o valor esperado com o recebido pela classe após o teste;
  • Caso tenha mais dúvidas sobre a biblioteca unittest, verifique a documentação;

RESOLUÇÃO

Primeiramente, separamos as classes de equivalência, tanto para saque, quanto para saque, quanto para depósito:

Método Saque
Variáveis de Entrada Classes de Equivalência Válidas Classes de Equivalência Inválidas
Saldo Saldo >= Quantia Saldo < Quantia
Quantia Quantia > 0 Quantia <= 0
Método Depósito
Variáveis de Entrada Classes de Equivalência Válidas Classes de Equivalência Inválidas
Quantia Quantia > 0 Quantia <= 0


Em seguida, elaboramos os casos de teste para exercitar as classes válidas e inválidas, uma por vez:

Método Saque
Casos de Teste Condições iniciais Entrada Resultado Esperado
CT-01 Saldo: R$1,00 0,99 "Saque Realizado
com Sucesso!”
CT-02 Saldo: R$1,00 1,01 “Saldo Insuficiente”
CT-03 Saldo: R$1,00 -1 “Erro! Quantia
Inválida”
Método Depósito
Casos de Teste Condições iniciais Entrada Resultado Esperado
CT-04 Saldo: R$0,00 100,00 “Depósito Realizado com Sucesso
CT-05 Saldo: R$0,00 -1 “Erro! Quantia Inválida"

IMPLEMENTAÇÃO

Nesta Seção mostramos o resultado dos testes realizados em cima do programa que foi fornecido. Você pode comparar a sua implementação de testes com a que será fornecida abaixo:


Com a execução dos testes em PyUnit, chega-se nos seguintes resultados:

Casos de Teste Condições iniciais Entrada Resultado Esperado Resultado Obtido Resultado dos Testes
CT-01 Saldo: R$1,00 0,99 “Saque Realizado com sucesso” “Saque Realizado com sucesso” Passou
CT-02 Saldo: R$1,00 1,01 “Erro! Saldo Insuficiente” “Erro! Saldo Insuficiente” Passou
CT-03 Saldo: R$1,00 -1 "Erro! Quantia Inválida” “Saque Realizado com sucesso” Falhou
CT-04 Saldo: R$0,00 100,00 “Depósito Realizado com sucesso” “Depósito Realizado com sucesso” Passou
CT-05 Saldo: R$0,00 -1 “Erro! Quantia Inválida” “Erro! Quantia Inválida” Passou