Você está na página 1de 26

Testes de Software – Testes

Funcionais

Engenharia de Software
Prof. Dr. Fábio Aiub Sperotto
fabio.sperotto@ifsc.edu.br
Introdução


Os testes caixa-preta (teste funcional ou comportamental) se relacionam
a área de testes que não dependem da estrutura interna de um
programa, não depende do acesso ao código-fonte.


São testes executados nas entradas de um programa. Teste estrutural
analisa código (caixa-branca), teste funcional analisa mais a interface
(caixa-preta).


São baseados na especificação do que deve acontecer no programa,
esta especificação é usada para derivar os casos de teste.

Dados de entrada Programa Dados de saída Saídas esperadas


2
Testes de Caixa-Preta


Não é alternativa aos textes de caixa-branca, servem como
complementares.

– Auxiliam a verificação se funções estão corretas/incorretas;


– Se existem erros na interface;
– Se existem erros em estrutura de dados;
– Se existem erros de acesso a bases externas;
– Se existem erros desempenho.

Etc…

O que avalia é se o software domina a informação processada.

3
Os Testes Funcionais


Para elaborar e aplicar:

– Realizar o particionamento de classes;


– Descrever as diretrizes ou os passos para os testes;
– Analisar valores limites.

4
Particionamento


Usar classes de equivalência é necessário porque não podemos testar
todos os elementos de cada conjunto;


Cenário: testar todos os valores de cada parcela de um pagamento a
crédito que, além da variação entre 1 e 12 parcelas, o valor a ser pago
pode ser literalmente qualquer valor.


Para simplificar afim de não testar as infinitas possibilidades, o domínio
em questão é dividido em partições ou classes equivalentes
(subconjuntos do domínio):

– Intervalo de valores;

– Quantidade de valores, números ou dígitos;

– Conjunto determinado, faixa de valores;

– “Deve ser de tal forma, deve ser assim...”


5
Determinação das Classes (genérico)


Determinar o particionamento (Pressman & Maxim, 2021):

– Se uma condição de entrada especifica um intervalo, são definidas


uma classe de equivalência válida e duas classes de equivalência
inválidas.

– Se uma condição de entrada exige um valor específico, são


definidas uma classe de equivalência válida e duas classes de
equivalência inválidas.

– Se uma condição de entrada especifica um membro de um


conjunto, são definidas uma classe de equivalência válida e uma
classe de equivalência inválida.

– Se uma condição de entrada for booleana, são definidas uma classe


válida e uma inválida.
6
Tipos de Classes


Intervalo: as entradas são na forma de intervalo de valores [0..10].

– Deve ser criado um conjunto válido. Exemplo: [5, 8];

– Dois conjuntos inválidos: um conjunto com valores menores que 5 e


outro com valores maiores que 8.

Quantidade de valores: quando é exigido um número de valores
específicos (informe um, dois valores…). Exemplo: CPF exige 11
dígitos.

– Deve ser criado um conjunto válido com os números exigidos:


26488280953, 09855377958

– Devem ser criados outros dois conjuntos, um com menos elementos


ou nenhum (12345678) outro com mais de 11 dígitos
(098553779589876).
7
Tipos de Classes


Conjunto determinado de valores. Exemplo: tabela de imposto de
renda para obrigatoriedade na declaração.

– Um conjunto válido para cada uma das formas;

– Um conjunto inválido para o geral.

8
Tipos de Classes


Entrada do tipo “deve ser de tal forma”. Exemplo: a data da venda
de um item deve ser maior (mais recente) que a data de chegada no
estoque para histórico contábil.

– Um conjunto válido (condição verdadeira);

– Um conjunto inválido (condição falsa).

9
Diretrizes para execução dos Testes

1) Estudar a especificação do software – requisitos;

1.1 Elaborar os exemplos.

2) Identificar as classes de equivalência;

2.1 Classes válidas, inválidas…

3) Definir os casos de teste:

3.1 Enumerar as classes de quivalência;

3.2 Casos de teste para classes válidas;

3.3 Casos de teste para classes inválidas.

10
Exemplo 1


“Considerando a cadeia de caracteres (string) “computação” definida
como X e uma outra string como Y. Se Y estiver contida em X retornar
true, false do contrário”.


Exemplos:

– Entrada “a” → resposta: true;

“a” está contigo em “computação”, então true.


– Entrada: “w” → reposta: false;

“w” não está contido em “computação”, então false.

11
Exemplo 1


Depois de definir as classes, elaborar os casos de teste.

12
Exemplo 2


“Dado uma cadeia de entrada que deve possuir entre 1 e 10 caracteres e
uma outra entrada com um caractere. Uma busca pelo caractere é válida
se o caractere estiver presente, caso contrário retorna-se -1. Caso a
cadeia de caracteres de entrada possuir menos que 1 ou mais que 10
caracteres, independente do caractere buscado, deve-se retornar uma
mensagem “entre com um tamanho entre 1 e 10””.


Exemplos:

– Entrada: “abcd” e “c” resultado: posição 3

– Entrada: “computação” e ”x” resultado: posição -1

– Entrada: “teste_teste” e “t” resultado: entre com uma string de entre 1


e máximo de 10 caracteres.

13
Exemplo 2

14
Análise de Valor Limite (BVA)


Quando se trabalha com faixas de valores, podemos nos deparar com
alguns bugs que acontecem nas fronteiras de cada classe, isto é, nos
limites que fazem intervalo de uma classe com a outra.


Análise de Valor Limite é uma técnica complementar recomendada para
testar uma determinada função com valores limites de cada classe e seus
valores subsequentes ou antecedentes (Valente, 2020).


Em vez de selecionar qualquer elemento de uma classe de equivalência,
a BVA conduz à seleção de casos de teste nas "bordas" da classe
(Pressman & Maxim, 2021).

– Trabalhar com valores mínimos/inferiores e máximos/superiores.

15
Análise de Valor Limite (BVA)

Segundo Pressman & Maxim (2021):


Se uma condição de entrada especifica um intervalo limitado por valores a e b,
deverão ser projetados casos de teste com valores a e b imediatamente acima e
abaixo de a e b.


Se uma condição de entrada especifica um conjunto de valores, deverão ser
desenvolvidos casos de teste que usam os números mínimo e máximo. São testados
também valores imediatamente acima e abaixo dos valores mínimo e máximo.


Aplique as diretrizes 1 e 2 às condições de saída. Por exemplo, suponha que um
programa de análise de engenharia precisa ter como saída uma tabela de temperatura
versus pressão. Deverão ser projetados casos de teste para criar um relatório de
saída que produza o número máximo (e mínimo) permitido de entradas da tabela.


Se as estruturas de dados internas do programa prescreveram fronteiras (p. ex., uma
tabela tem um limite definido de 100 entradas), não se esqueça de criar um caso de
teste para exercitar a estrutura de dados na fronteira.
16
Análise de Valor Limite - IR

Voltando ao exemplo do imposto de renda (IR): “A funcionalidade deve retornar a
alíquota de deducação de IR acordo com o valor de salário fornecido como
entrada. Deve ser utilizada como referência a tabela da Receita Federal com os
intervalos para os grupos de salários. Caso um valor negativo de salário for
informado, então deve ser retornada uma mensagem “Informe somente valores
positivos””.

17
Exemplo 3 - IR - Faixa de Valores

Faixa 1
Faixa 2
Faixa 3
Faixa 4
Faixa 5

Partição ou Classes
Entrada Classe válida Classe inválida

Valores para S na faixa 1 0 <= S <= 1903,98 (1)

Valores para S na faixa 2 1903,99 <= S <= 826,65 (2)

Valores para S na faixa 3 2826,66 <= S <= 3751,05 (3)

Valores para S na faixa 4 3751,06 <= S <= 4664,68 (4)

Valores para S na faixa 5 S >= 4664,68 (5)

Valores fora das faixas S < 0 (6)

18
Exemplo 3 - IR – Análise Valor Limite

Faixa 1
Faixa 2
Faixa 3
Faixa 4
Faixa 5
Partição ou Classes
Entrada Classe válida Classe inválida

Limite máximo de isenção S = 1903,98 (7)

Limite mínimo de faixa 2 S = 1903,99 (8)

Limite máximo de faixa 2 S = 2826,65 (9)

Limite mínimo de faixa 3 S = 2826,66 (10)

Continua

19
Exemplo 3 - IR – Partições/Classes
Partição ou Classes
Entrada Classe válida Classe inválida

Valores para S na faixa 1 0 <= S <= 1903,98 (1)

Valores para S na faixa 2 1903,99 <= S <= 826,65 (2)

Valores para S na faixa 3 2826,66 <= S <= 3751,05 (3)

Valores para S na faixa 4 3751,06 <= S <= 4664,68 (4)

Valores para S na faixa 5 S >= 4664,68 (5)

Valores fora das faixas S < 0 (6)

Limite máximo de isenção S = 1903,98 (7)

Limite mínimo de faixa 2 S = 1903,99 (8)


Limite máximo de faixa 2 S = 2826,65 (9)
Limite mínimo de faixa 3 S = 2826,66 (10)

20
Exemplo 3 - IR – Casos de Teste
Casos de Teste

# Entrada Saída Esperada Classe coberta

1 S = 1700,00 0 1,7

2 S = 2100,00 7,5 2

3 S = 3000,00 15 3

4 S = 3900,70 22,5 4

5 S = -1200,70 Informe somente valores 6


positivos
6 S = 1903,98 0 1,7

7 S = 1903,99 7,5 2,8,9

Continua
8 S = 2826,65 7,5 2,8,9

21
Exemplo 4


“Um identificador válido deve começar com uma letra e conter apenas
letras, dígitos e “_”. Além disso, deve ter no mínimo um caractere e no
máximo seis caracteres de comprimento”.


Exemplos:

– Entrada: a_1 – resultado: válido;

– Entrada: cont+1 – resultado: inválido;

– Entrada: 5sub – resultado: inválido;

– Entrada: identific_9: inválido.

22
Exemplo 4

23
Discussões e Considerações Finais


Os testes funcionais de caixa-preta não se importam com a estrutura
interna da implementação, o seu foco está nas saídas do programa.


Não existe a possibilidade de testar um programa para todas as entradas
possíveis, para todas as faixas, então precisamos apenas testar para
cada um e utilizar quando possível a técnica complementar de análise de
valor limite.

– É possível testar exaustivamente um compilador verificando o mesmo


para todos as entradas de programas?

As diretrizes que determinam a execução dos testes de caixa preta
definem, portanto, um passo a passo de testagem de sistemas dentro de
possíveis dados a serem utilizados.

24
Discussões e Considerações Finais


A real classificação depende de como testes são escritos:

– Caixa-preta: os testes de unidade são escritos sabendo somente


sobre a interface (entrada);

– Caixa-branca: se os testes de unidade levam em consideração


informações como cobertura de testes, desvios que são cobertos ou
não.

Portanto, testes de unidade sempre testam uma função específica do
código, unidade isolada. Esta unidade pode ser testada por meio de
técnicas de caixa-preta ou branca, isto aumentará a efetividade dos
testes.

25
Referências Extras

Valente, Marco Tulio. Engenharia de Software Moderna: Princípios e
Práticas para Desenvolvimento de Software com Produtividade, Editora:
Independente, 395 páginas, 2020. Disponível em
https://engsoftmoderna.info/

Perin, Alexandre. Testes Caixa-Preta – Engenharia de Software. Notas de
aula. 20 slides, 2022.

PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Grupo A,
2021. E-book. ISBN 9786558040118. Disponível em:
https://app.minhabiblioteca.com.br/#/books/9786558040118/ Acesso em: 26
fev. 2024.

26

Você também pode gostar