ANÁLISE DO VALOR LIMITE


Técnica complementar ao Particionamento Por Classe de Equivalência. A sua principal diferença é que ele seleciona casos de teste baseados nos limites das classes do contexto.


O Particionamento por Equivalência foca no conteúdo de uma caixa.

Análise de Valor Limite foca nas extremidades dessa caixa.

Aplicação da Técnica:

    Passo 1:
  • Quando a entrada especifica um intervalo de valores, devemos levar em consideração os limites inferior e superior e valores adjacentes foras do intervalo.

  • Passo 2:
  • Quando a entrada especifica um intervalo de valores, devemos levar em consideração os limites inferior e superior e valores adjacentes foras do intervalo.

EXEMPLO

Um sistema de irrigação é programado para ativar sprinklers, a cada hora que se passa, durante os minutos 20 a 40. Elabore casos de teste para serem utilizados na fase de testes deste sistema utilizando a técnica de Análise de Valor Limite.

Note que dessa vez nossos valores de entrada são um intervalo de valores, entre 20 e 40 minutos. Supondo que rotinas de teste serão executadas a cada hora, podemos elaborar casos de teste utilizando os seguintes valores no intervalo de tempo proposto.


Perceba que assim realizamos testes exatamente 1 segundo antes ao momento em que o sprinkler deve ser ligado e também 1 segundo após o momento que ele deve ser desligado.


Com isso, também garantimos casos de teste para saber se o equipamento está ligado nos horários em que ele não deve estar.

Entrada Saída
Minutos Segundos
19 59 desligado
20 00 ligado
40 00 ligado
40 01 desligado

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 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 0,01 “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 0,01 “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