teste de software · 2018-05-21 · teste estrutural (caixa branca) grafo de fluxo de controle...

25
Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo [email protected] 1

Upload: others

Post on 02-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste de Software

Técnica de Teste Estrutural

Rosemary Silveira Filgueiras Melo

[email protected]

1

Page 2: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Agenda

� Técnica de Teste Estrutural

� Critérios de Teste

2

Page 3: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Casos de Teste

• Diante da impossibilidade de se realizar teste exaustivo énecessário realizar casos de teste com critérios de testeespecífico com o fim de identificar erros.

Critério de teste:

3

• Ajuda a definir um conjunto de casos de teste que potencialmente podem identificar erros.

• Cada critério de teste possui seus requisitos de teste, que ajudam a gerar os casos de teste de forma a satisfazer os critérios escolhido e também avaliar a qualidade do conjunto de teste existente.

Page 4: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Modelo de Casos de Teste

Itens do Caso de teste (conforme norma IEEE 829-2008)

Identificador do caso de teste

Número de identificação do caso de teste

Objetivo do caso de teste Define o objetivo do caso de teste

Entradas Entradas que serão consideradas no caso de teste

4

Entradas Entradas que serão consideradas no caso de teste

Saídas Saídas esperadas de acordo com as entradas indicadas na execução dos testes

Ambientes necessários ou condições de ambiente

Ambiente de hardware e software que devem ser montados para o caso de teste em questão

Execução do caso de teste

Especifica com detalhe o que deve ser testado e a forma de como o teste deve ser executado

Dependência entre outros casos de teste

Casos de teste relacionados

Page 5: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Exemplo de Casos de teste

1. Identificador do caso de teste

Caso de teste 1 – Testar Login

2. Objetivo do caso de teste

Verificar login inválido

3. Entradas Inserir um email inválido

4. Saídas Exbir mensagem “Login inválido”

5. Ambientes necessários nenhum

5

5. Ambientes necessários ou condições de ambiente

nenhum

6. Execução do caso de teste

1. Selecione ícone do aplicativo2. Exibir tela de login3. Insira um email inválido4. Exbir mensagem “Login inválido”5. Exibir cursor no campo de login para usuário poder

corrigir login

7. Dependência entre outros casos de teste

nenhum

Page 6: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Técnica Estrutural (Caixa Branca)

� Objetivo de testar as linhas de código do sistema (implementação) que irão prover as funcionalidades esperadas pelo sistema.

� Requer a execução de partes do programa.

6

� Adotada quando a equipe de teste tem acesso ao código fonte do sistema

� Essa técnica considera que o sistema a ser testado é uma caixa branca, ou seja, você sabe exatamente o que está dentro da caixa.

Page 7: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Técnica Estrutural (Caixa Branca)

� É preciso saber o que colocar dentro da caixa com base no que tem dentro da caixa (código fonte do sistema) e o que se espera que saia da

7

dentro da caixa (código fonte do sistema) e o que se espera que saia da caixa (saída de dados esperada).

� O testador deve está preocupado com a lógica que foi implementada o programa.

Caminhos lógicos do software são testados fornecendo casos de teste quepõem a prova conjunto de condições, laços, definições e uso de variáveis

Page 8: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

� Grafo de Fluxo de Controle (GFC) ou Grafo de Programa

� representação visual do código a ser testado para facilitar a definição dos casos de teste.

� conjunto de nós conectados por arcos com setas que indicam a

8

� conjunto de nós conectados por arcos com setas que indicam a direção de execução.

� Os nós representam um bloco de comando.

� Bloco de comandos é uma sequência atômica de linhas de código –se uma for executada, todas serão.

� Os arcos indicam a precedência ou a sequência de execução do código e seus desvios.

Page 9: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

� Grafo de Fluxo de Controle (GFC) ou Grafo de Programa

� Um programa P pode ser decomposto em blocos de comandos.

� A execução do primeiro comando do bloco acarreta a execução dos

9

� A execução do primeiro comando do bloco acarreta a execução dos demais comandos do bloco, na ordem especificada.

� Todos os comandos do bloco tem um único predecessor e um único sucessor , exceto o último e o primeiro.

� Não existe desvio de execução para nenhum comando dentro do bloco.

Page 10: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

� Grafo de Fluxo de Controle (GFC) ou Grafo de Programa

� Para um programa P o GFC é dado por (G=(N,E,s))

� N representa o conjunto de nós

� E representa o conjunto de arcos

10

E representa o conjunto de arcos

� s representa o nó de entrada

� GFC é um grafo orientado com um único nó de entrada (s que pertence N) e um único nó de saída (o que pertence a N)

� Faz-se uma correspondência entre vértices (nós) e blocos

� Cada vértice representa um bloco indivisível de comandos

� Cada aresta representa um possível desvio de um bloco para outro

Page 11: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Representação de Estruturas de Programação

11

Representação de Estruturas de programação em grafo de fluxo de controle – Adaptado de (Pressman, Engenharia de Software, 2006)

Page 12: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

12

Page 13: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios

� Os critérios do teste estrutural são baseados em:

� Complexidade

13

� Fluxo de controle

� Teste de Comandos ou Teste todos os nós

� Teste de Ramos ou todos os arcos

� Todos Caminhos

� Fluxo de dados

� Todos os usos

Page 14: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios baseados em complexidade

� Utilizam informações sobre a complexidade do programa para derivar os casos de teste

� Ex. Critério McCabe (teste de caminho básico)

14

� Ex. Critério McCabe (teste de caminho básico)

� Utiliza a complexidade ciclomática para derivar os requisitos

� Métrica para medida quantitativa da complexidade lógica do programa

� O valor da complexidade define o número de caminhos que serve de limite para derivar casos de teste que cobrem todas as instruções

� Cada instrução terá a garantia de ser executada pelo menos uma vez

� Cada condição terá sido executada com verdadeiro ou falso

� Ex. de calculo V(G) = E – N + 2 , tal que

� E: número de arcos

� N: número de nós

Page 15: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios baseados em fluxo de controle

� Utilizam características de controle da execução do programa para derivar os casos de teste.

� Comandos, desvios

� Ex.:

� Critério Todos-Nós: exige que a execução do programa passe ao menos uma

15

� Critério Todos-Nós: exige que a execução do programa passe ao menos uma vez em cada nó do GFC (cada comando seja executado pelo menos uma vez)

� Critério Todas-Arestas (ou Todos-Arcos): requer que cada arco do grafo (cada desvio de fluxo de controle do programa) seja exercitada pelo menos uma vez.

� Critério Todos-Caminhos: requer que todos os caminhos possíveis do programa sejam executados

Mínimo esperado: Todos-Nós

Pode ser um número muito grande de caminhos (até infinito)

Page 16: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios baseados em fluxo de controle

� Critério Todos-Nós - Teste de Comandos ou Teste todos os nós

� Define como requisito de teste que todos os comandos dos programas sejam executados pelo menos uma vez.

16

� Deve-se criar casos de teste cujos nós sejam executados pelo menos uma vez.

� Deve-se criar uma menor quantidade de casos de teste possível, mas que atinja esse critério.

� O foco deve ser nos comandos que controlam as decisões do sistema visando direcionar os testes para que todos os nós sejam atingidos.

Page 17: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios baseados em fluxo de controle

� Critério Todas-Arestas - Teste de Ramos ou todas as arestas ou todos os arcos

� Define como requisito de teste que todas as condições verdadeiras e falsas do programa sejam executadas.

17

e falsas do programa sejam executadas.

� Todos os arcos (também chamados arestas) do fluxo de controle devem ser executados, mesmo que um nó seja executado mais de uma vez.

Page 18: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Exemplo utilizando os critério Todos-Nós e Todas-Arestas

18

� Para o exemplo acima, dois casos de testes são suficientes:

• um para uma entrada que faça a execução do programa caminhar para o nó 2 (entrar no IF).

• outro para uma entrada que faça a execução do programa caminhar para o nó 3 (entrar no SENÃO).

• Os dois casos de teste atendem os critérios de Teste Todos-Nós e Todas-Arestas

Observação: raro satisfazer requisitos de dois critérios para o mesmo conjunto de Casos de teste, só em caso de exemplo bem simples como esse.

Page 19: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)Exemplo utilizando Critério de Todas-Arestas

� Estar em conformidade com os requisitos de um critério de teste não garante que todos os defeitos serão encontrados.

� Quanto mais exigente o critério, mais sequência serão necessárias para estarem em conformidade com seu requisito e as chances de identificar os defeitos aumentam.

19

� A tendência é que um critério de teste complemente o outro e que o número de casos de teste aumente, a fim de executar o maior número de código fonte possível.

Exemplo de alguns casos de teste que atendem esse critério:

Page 20: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios baseados em fluxo de dados

� Teste baseado em fluxo de dados� Utiliza análise de fluxo de dados para derivar os casos de teste

� Critério baseados na associação entre a definição de variáveis e seus possíveis usos

20

� usa o “tipo de uso/ocorrência” de uma variável para auxiliar na definição de critérios.

Existe três tipos de ocorrências de variáveis:

DEF – indica definição, quando um valor está sendo atribuído a uma variável

C-USO - afeta diretamente uma computação (relacionado aos nós)

P-USO - afeta diretamente o fluxo de controle do programa (relacionado aos arcos)

Page 21: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Critérios de Teste

� Teste baseado em fluxo de dados -

Todos os usos• Define como requisito de teste que

todos os usos das variáveis utilizadas em cada comando sejam executados.

21

• Deve-se identificar os usos de todas as variáveis do programa e classificá-las de acordo com def, c-use e p-use.

• Construir, para cada variável, uma tabela especificando definição e uso (par d-u) para que esses dados sejam usados na elaboração dos casos de teste.

Page 22: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Exemplo

Ex.: Programa “identifier”

� Programa para determinar se um identificador é válido ou não

� Identificador válido deve começar com uma letra e conter apenas

22

� Identificador válido deve começar com uma letra e conter apenas letras e dígitos

� Deve ter no mínimo 1 e no máximo 6 caracteres de comprimento

� O programa “identifier” contém um defeito

Page 23: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

Main()

Char achar;

Int length, valid_id;

Length = 0;

Valid_id = 1;

length++;

achar = fgetc(stdin);

}

If (valid_id && (length >= 1) && (length<6)) {

Int valid_s (char ch){

if (((ch>=‘A’) && (ch <=‘Z’)) ||((ch>= ‘a’) && (ch <= ‘z’))) {

return (1);

Else

Elabore o GFC para a seguinte implementação:

23

Valid_id = 1;

Printf(“Identificador: ”);

Achar = fgetc(stdin);

Valid_id = valid_s(achar);

If (valid_id){

length = 1;

}

Achar = fgetc(stdin);

While (achar != ‘\n’){

if (!(valid_f(achar))){

valid_id = 0;

}

&& (length<6)) {

printf(“valido\n”);

}

else

{

printf(“invalido\n”);

}

}

Else

return (0);

}

}

Int valid_f(char ch) {

if (((ch >= ‘A’) && (ch<=‘Z’)) ||

((ch >= ‘a’) && (ch <= ‘z’)) ||

((ch >= ‘0’) && (ch <=‘9’))){

return (1);

Else

return (0);

}

}

Page 24: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca) Grafo de Fluxo de Controle do programa anterior

1

2

(2,3,4,5,6,7) – caminho simples e livre de laços(1,2,3,4,5,7,4,8,9,11) – caminho completo(1,3,4,8,9) – caminho não executável

24

3

4

5

6

7

8

9 10

11

Page 25: Teste de Software · 2018-05-21 · Teste Estrutural (caixa branca) Grafo de Fluxo de Controle (GFC) ou Grafo de Programa representação visual do código a ser testado para facilitar

Teste Estrutural (caixa branca)

� O Teste estrutural é baseado em conceitos e elementos do programa para determinar os requisitos de teste

� A estes elementos estão associados os critérios de teste

Elemento Exemplo Critério

25

Elemento Exemplo Critério

Nó 6 Todos-Nós

Arco (5,6) Todas-Arestas

Caminho (1,2,3,4,8,9,11) Todos-Caminhos

Definição de variáveis length=0 Todas-Defs

Uso predicativo de variável

Achar != ‘\n’ Todos-p-Usos

Uso computacional de variável

Length++ Todos-c-Usos