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:
- 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.
- 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 1:
Passo 2:
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- 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;
Orientaçã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 |