0% acharam este documento útil (0 voto)
7 visualizações51 páginas

Testes Funcionais: Equivalência e Limites

O documento aborda testes funcionais de software, destacando técnicas como particionamento em classes de equivalência e análise de valor limite. Ele explica como definir critérios de teste baseados em requisitos, sem considerar a implementação interna, e fornece exemplos práticos. O objetivo é criar testes sistemáticos e eficazes para identificar falhas no sistema.

Enviado por

Railson Martins
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações51 páginas

Testes Funcionais: Equivalência e Limites

O documento aborda testes funcionais de software, destacando técnicas como particionamento em classes de equivalência e análise de valor limite. Ele explica como definir critérios de teste baseados em requisitos, sem considerar a implementação interna, e fornece exemplos práticos. O objetivo é criar testes sistemáticos e eficazes para identificar falhas no sistema.

Enviado por

Railson Martins
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Testes de software - Teste funcional

Vitor Alcântara de Almeida

Universidade Federal do Rio Grande do Norte


Natal, Brasil

30 de outubro de 2014

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 1 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 2 / 51


Objetivo

Definição de testes funcionais


Tipos de critérios existentes
Critérios de partição:
I Classes de equivalência
I Valor limite
I Teste funcional sistemático

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 3 / 51


O que é teste funcional?
Técnica de teste no qual o sistema é considerada uma caixa preta
São avaliadas as saídas produzidas pelo sistema de acordo com
as entradas fornecidas

Detalhes de implementação não são consideradas nos testes


Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 4 / 51
Que valores escolher para os testes?

Uma forma de testar é através da verificação de todas as


entradas possíveis - teste exaustivo

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 5 / 51


Programa exemplo

Porém, seja abaixo a especificação de um programa

Cadeia de Caracteres
1 O programa solicita do usuário:
1 Um inteiro positivo T no intervalo entre 1 e 20
2 Uma cadeia de caracteres CC com tamanho T
3 Um caractere C
2 Programa retorna posição onde se encontra C em CC
3 O programa pode procurar por um caractere mais de uma vez
(interativamente)

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 6 / 51


Testes possíveis

Quantas combinações de entradas podem ser testadas?


Inviável testar para todas as entradas

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 7 / 51


Subconjunto do domínio de entrada

É impossível testar todos os elementos do domíno ==> definir um


subconjunto
Mas, qual critério utilizar para selecionar o subconjunto?

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 8 / 51


Possíveis soluções

Random testing
Usar valores quaisquer - aleatórios

Abordagem possível
Mas há outras técnicas mais padronizadas para encontrar bugs

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 9 / 51


Critérios de teste estrutural

Podemos definir critérios de teste com base no conhecimento da


estrutura interna da implementação
Ex.:
I Todos os métodos foram executados?
I Todas as linhas de comando foram executadas?
I Todos os nós de decisão foram executados?
Critérios de caixa branca - não é o propósito desta aula

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 10 / 51


Critérios de teste funcional

Também podemos definir critérios de teste com base no


conhecimento dos requisitos do programa
...independemente da estrutura interna da implementação
Ex.:
I Os valores limites de cada campo foram exercitados?
I Os valores mais utilizados foram exercitados?
Veremos nesta aula alguns critérios funcionais

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 11 / 51


Alguns critérios de teste funcional

Como podemos criar testes de forma padronizada a partir da


especificação do sistema?
Alguns critérios foram propostos neste sentido:
I Particionamento em classes de equivalência
I Análise do valor limite
I Teste funcional sistemático

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 12 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 13 / 51


Classe de Equivalência

O domínio de entrada do software é dividido em classes (ou


partições)
Cada classe de equivalência é um subdomínio de entrada no qual
os valores de entrada produzem comportamento similar

Exemplo a partir de “Cadeia de Caracteres´´


I O tamanho da cadeia x deve ser entre 1 e 20
I Uma classe para 1 ≤ x ≤ 20
I Uma classe para x < 1 e uma classe para x > 20

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 14 / 51


Classe de Equivalência

A base deste critério é que todos os dados de uma mesma


partição têm a capacidade de revelar as mesmas falhas
Se o sistema falhar com um valor de uma partição, deverá falhar
com qualquer outro valor desta mesma partição
I O contrário também é válido

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 15 / 51


Classe de Equivalência

Todos os valores do domínio de entrada devem pertencer a uma


classe
Para identificar valores com comportamento similar, analisamos
conjuntos de entrada e de saída
I Como criar as classes a partir desta análise?

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 16 / 51


Tipos de Classes de Equivalência

As partições são então classificadas em dois tipos:


I Classes válidas: valores válidos no domínio de entrada
I Classes inválidas: valores inválidos no domínio de entrada

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 17 / 51


Diretrizes para criação de classes de equivalência

Variável de entrada Classes de equivalência


Uma classe válida para valores pertencentes
Intervalo de valores ao intervalo
Uma classe inválida para valores menores que
o limite inferior
Uma classe inválida para valores maiores que
o limite superior
Uma classe válida para número de valores
Quantidade de valores
igual ao previsto
Uma classe inválida para número de valores
maior ou menor que o número previsto
Uma classe válida para cada valor determinado
Valores determinados e distintos
Uma classe inválida para qualquer outro valor
diferente

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 18 / 51


Como criar testes de classes de equivalência

Para gerar testes de acordo com este critério, dois passos devem
ser executados:
1 identificação das classes de equivalência
2 gerar casos de teste selecionando pelo menos um elemento de
cada classe
F Deste modo, o número de casos de teste é menor e pode encontrar
mais erros

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 19 / 51


Programa exemplo

Relembrando o programa exemplo:

Cadeia de Caracteres
1 O programa solicita do usuário:
1 Um inteiro positivo T no intervalo entre 1 e 20
2 Uma cadeia de caracteres CC com tamanho T
3 Um caractere C
2 Programa retorna posição onde se encontra C em CC
3 O programa pode procurar por um caractere mais de uma vez
(interativamente)

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 20 / 51


Exemplo de aplicação de Classes de equivalência

Para o programa especificado temos quatro entradas:


I T - tamanho da cadeira de caracteres
I CC - uma cadeia de caracteres
I C - um caractere a ser procurado
I O - a opção por procurar mais caracteres
Qualquer valor de CC e C é válido no sistema
I Não é necessário definir classes de equivalência
1 <= T <= 20
O = TRUE ou O = FALSE

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 21 / 51


Exemplo de aplicação de Classes de equivalência

Considerando o domínio de saída, temos duas alternativas:


I O sistema retorna a posição onde o caractere foi encontrado na
cadeia de caracteres
I O sistema retorna uma mensagem dizendo que o caractere não foi
encontrado
Com estas informações, nova partição pode ser feita no domínio
de entrada:
1 C ∈ CC
2 C∈/ CC

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 22 / 51


Exemplo de aplicação de Classes de equivalência

Ao total, 6 classes de equivalência, mostradas abaixo:

Variável de Classes de Classes de


entrada equivalência equivalência
válidas inválidas
T 1 <= T <= 20 T < 1 (I1a) e
(V1) T > 20 (I1b)
O Sim (V2) Não (I2)
C Caractere que Caractere que
pertence à não pertence à
cadeia (V3) cadeia (I3)
Deve ser criado um caso de teste para cada classe de
equivalência

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 23 / 51


Testes criados

Variáveis de entrada Saída esperada Classe


T CC C O
0 ’entre com um inteiro entre 1 e 20’ I1a
34 ’entre com um inteiro entre 1 e 20’ I1b
3 abc c ’o caractere c aparece na posição 3 V1 &
da cadeia’ V3
s V2
k ’o caractere k não partence à ca- I3
deia’
n I2

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 24 / 51


Avaliação do critério

Redução do domínio de entrada


Testes baseados unicamente na especificação
Mais adequado para aplicações onde variáveis de entrada são
identificáveis com facilidade e assumem valores específicos
Não determina combinações de testes
I Poderia cobrir as classes de equivalência de maneira mais eficiente

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 25 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 26 / 51


Valor limite

Estudos mostram que casos de testes que exploram condições


limites têm uma maior probabilidade de encontrar defeitos
(MEYERS, 2004)
Dada uma classe de equivalência e um valor no limite da mesma,
tais condições correspondem a testar:
I O valor limite da classe
I O valor imediatamente acima do limite da classe OU
imediatamente abaixo do limite da classe
Exemplo a partir de “Cadeia de Caracteres´´
F Para a mesma cadeia x que deve ser entre 1 e 20
F Realizar testes para 0, 1, 20, 21

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 27 / 51


Valor limite

Critério utilizado conjuntamente com classes de equivalência


I São escolhidos valores limites ao invés de valores aleatórios
Algumas diretrizes foram estabelecidas para a criação dos testes

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 28 / 51


Diretriz 1: Faixa de valores

Definir testes para:


1 Os limites do intervalo
2 Os valores subseq. ao intervalo se eles exploram classes inválidas

Exemplo?
Para x ∈ N ∧ −10 <= x <= 10 testar os valores: -11;-10;10;11

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 29 / 51


Diretriz 2: Quantidade de valores

Aplica-se a mesma diretriz se parâmetro for uma quantidade de


valores
Ex: Se uma entrada determina serem inseridos de 1 a 255
valores, inserir testes para 0,1,255 e 256 valores

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 30 / 51


Mais diretrizes

Usar as diretrizes 1 (Faixa de valores) e 2 (Quantidade de


valores) para verificar também as condições de saída
Se entrada ou saída for um conjunto ordenado, dar maior atenção
aos primeiro e último elementos desse conjunto
Usar a intuição para definir outras condições limites!

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 31 / 51


Classes de equivalência do exemplo

Variável de Classes de Classes de


entrada equivalência equivalência
válidas inválidas
T 1 <= T <= 20 T < 1 (I1a) e
(V1) T > 20 (I1b)
O Sim (V2) Não (I2)
C Caractere que Caractere que
pertence à não pertence à
cadeia (V3) cadeia (I3)

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 32 / 51


Novos casos de teste

Entrada Saída esperada


T CC C O
21 ’entre com um inteiro entre 1 e 20’
0 ’entre com um inteiro entre 1 e 20’
1 a a ’o caractere a aparece na posição 1 da cadeia’
s
x ’o caractere x não pertence à cadeia
n
20 abcdefghijkl a ’o caractere a aparece na posição 1 da cadeia’
mnopqrst
s
t ’o caractere t aparece na posição 20 da cadeia
n

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 33 / 51


Avaliação do critério

Vantagens e desvantagens similares ao critério Particionamento


de Equivalência
Mas, neste caso, há diretrizes para aproveitar melhor os testes

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 34 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 35 / 51


Teste funcional sistemático

Combina Particionamento de Equivalência com Análise do Valor


Limite
Mínimo de dois testes para cada partição (classe de equivalência)

I Minimiza que defeitos coincidentes mascarem falhas

Exemplo
I Um programa retorna o quadrado de um número. Se valor de entrada
for 2, valor produzido será 4
I Qual operação realizada? 2*2 ou 2+2?

Possui critérios mais rigorosos para cada tipo de entrada

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 36 / 51


Diretrizes para testes funcionais sistemáticos

1 Valores numéricos - testar os extremos e um valor dentro do


intervalo
2 Valores discretos - testar cada valor discreto e um valor fora dos
já determinados
3 Testar tipos diferentes de dados e casos especiais
Exemplos:
1 Limites de representação (-32768 e 32767 para int16)
2 Inserir valor de tipo diferente do previsto (int no lugar de char)

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 37 / 51


Mais diretrizes para testes funcionais sistemáticos

1 Números reais - verificar limites igualmente a números inteiros


1 Comparações podem não ser exatas - definir margem de erro
2 Intervalos variáveis - o intervalo de uma variável depende do valor
de outra variável
1 Testar combinações dos possíveis valores

Exemplo: 0 ≤ x ≤ y
1 Entradas válidas: x = y = 0 , x = 0 < y , 0 < x = y , 0 < x < y
2 Entradas inválidas: y = 0 < x , 0 < y < x , x < 0 , y < 0

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 38 / 51


Diretrizes para Matrizes

1 Testar os elementos do arranjo como se fossem variáveis comuns


2 Devemos testar o arranjo com o tamanho mínimo, intermediário e
máximo
3 Podemos testar linhas e colunas em separado
1 Podemos testar Matriz como:
1 Uma única estrutura
2 Uma coleção de subestruturas testadas independemente

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 39 / 51


Diretrizes para Strings e Entradas de texto

1 Explorar string com comprimentos variáveis


2 Validar os caracteres que os compõem
1 strings podem conter somente caracteres alfabéticos,
alfanuméricos ou também possuir caracteres especiais

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 40 / 51


Sobre o critério de teste

As diretrizes não precisam ser seguidas sempre à risca


Porém, quanto mais testes, maiores as chances de evitar erros no
sistema

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 41 / 51


Exemplo de aplicação

Os casos de testes já produzidos são válidos


Mas, outros casos de testes precisam ser feitos pra atender este
critério

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 42 / 51


Casos de teste funcional sistemático

Entrada Saída esperada


T CC C O
a entre com um inteiro entre 1 e 20
1.0 entre com um inteiro entre 1 e 20
1 ! ’’ n o caractere ’ ’ não pertence à cadeia
1 } n o caractere ’ ’ não pertence à cadeia
20 ¡‘#$%&()*+´ ! s o caractere ! aparece na posição 1 da cadeia
/01234567
’ s o caractere ’ aparece na posição 2 da cadeia
+ s o caractere + aparece na posição 10 da cadeia
6 s o caractere 6 aparece na posição 19 da cadeia
7 n o caracatere 7 aparece na posição 20 da cadeia
2 ab b nao o caracatere b aparece na posição 2 da cadeia
3 a2b 2 0 o caracatere 2 aparece na posição 2 da cadeia

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 43 / 51


Avaliaçao do critério

Apresenta os mesmos problemas dos critérios de


Particionamento de Equivalência e Análise do Valor Limite
Mas, assim como Análise do Valor Limite, este fornece diretrizes
para geração de testes
Enfatiza mais de um caso de teste por partição e/ou limite
Melhor cobertura do código do produto testado

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 44 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes
Cunit

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 45 / 51


Ferramentas de testes funcionais

Existem uma série de ferramentas de testes em C, como:


I Cunit
I Quick-Check
I API Sanity Checker
I Automated Test Framework
I Parasoft C/C++ test
I Check
I Outros...
Introduzo nesta aula o Cunit para realizar testes funcionais

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 46 / 51


Cunit

Framework leve de testes unitários para C


Biblioteca estática linkado ao código do usuário
Permite testes automáticos e interativos

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 47 / 51


Exemplo de uso

Seja abaixo um código em C:


insertion_sort.c
Um caso de teste simples pode ser construído:
insertion_sort_teste.c

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 48 / 51


Execução do teste

Compilação:
gcc insertion_sort.c insertion_sort_teste.c
-lcunit -o teste
Execução:
./teste

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 49 / 51


Sumário

1 Teste funcional - Introdução

2 Particionamento em Classes de Equivalência

3 Análise do valor limite

4 Teste funcional sistemático

5 Ferramentas de testes

6 Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 50 / 51


Referências

Alcântara (UFRN) Testes de software - Testes funcionais 30 de outubro de 2014 51 / 51

Você também pode gostar