Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Documentos relacionados
Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Teste de Software. Teste Funcional Teste Estrutural. Teste Baseado em Erros (Análise de Mutantes)

Teste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Introdução a Testes de Software. Ricardo Argenton Ramos

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Garantia de Qualidade

Introdução ao Teste de Software

Introdução ao Teste de Software

Ricardo A. Ramos. [Baseado na apresentação do LABS ICMC-USP ->

Engenharia de Software I

Teste de Software: conceitos, técnicas e benefícios

Teste de Validação. ações visíveis ao usuário e entradas e saídas do sistema reconhecíveis pelo usuário

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

SSC 0721 Teste e Inspeção de Software

Introdução à Verificação, Validação e Teste (VV&T)*

5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.

Teste Estrutural e de Mutação

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

1. A principal razão de dividir o processo de teste em tarefas distintas é:

Engenharia de Software

Testes de correção (de defeitos)

SSC 0721 Teste e Validação de Software

6. QUAIS AS TÉCNICAS E RESPECTIVOS CRITÉRIOS DE TESTE EXISTENTES?

Programação: Vetores

NOTAS DIDÁTICAS DO ICMC

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana

Engenharia de Software

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Comando Switch. Embora a escada if else-if possa executar testes de várias maneiras, ela não é de maneira nenhuma elegante.

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Controle de Fluxo. Laços e Desvios incondicionais

Testes de software - Teste funcional

Controle de Fluxo. Laços e Desvios incondicionais

Resumindo As estruturas de repetição são utilizadas quando necessitamos realizar comandos diversas vezes

C Comandos de Controle

Estruturas de Repetição

Aula 3: Algoritmos: Formalização e Construção

Engenharia de Software

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 05 de abril de 2010

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Introdução a Teste de Software

Algoritmos e Programação

C Comandos de Controle

Controle de Fluxo Utilizando C

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Estruturas de Repetição. for() while() do-while() break; continue;

Lógica de Programação I

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

LINGUAGEM C CONTROLE DE FLUXO

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Community. .com. Introdução ao T D

Introdução à Programação

Programação de Computadores I. Linguagem C Estruturas de Repetição

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

Linguagem de Programação C. Funções e Procedimentos

Para começar... Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Comando REPITA (repeat) Comando REPITA (repeat)

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Fundamentos de Programação

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Introdução a Verificação, Validação e Teste de Software

Lógica de Programação I

Linguagem C Estruturas de Repetição

Linguagens de Programação I

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Linguagem C. André Tavares da Silva.

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

3. Linguagem de Programação C

Teste de Software. Karen Frigo Busolin Novembro / 2010

1. Quando algo visível para os usuário finais é um desvio em relação ao especificado ou um comportamento não esperado, isso é chamado de:

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

Algoritmos e Programação

Capítulo 7. Expressões e Sentenças de Atribuição

Comandos de repetição while

InfoMix Tecnologia. SYSFARM Sistema de Gerenciamento de Farmácias UC003 Manter Produto Caso de Testes. Versão 1.00

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Programação Estruturada Aula - Estruturas de Repetição

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Exercícios Repetição

Apêndice 1. Recomendações para testes de módulos

Comandos de desvio de fluxo. Expressões lógicas.

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Teste de Software: Teste Funcional. Simone Senger Souza ICMC/USP

Técnicas de Teste Estrutural. Teste de Fluxo de Controle. Introdução. Introdução. Introdução. Introdução. Introdução

Fluxogramas e variáveis

Abaixo vemos um programa que coloca os primeiros 100 números inteiros na tela:

Transcrição:

Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1

Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2

Casos de Teste Diante da impossibilidade de se realizar teste exaustivo é necessário realizar casos de teste com critérios de teste específico com o fim de identificar erros. Conceitos de Casos de teste: conjunto de dados de entrada, condições de execução do sistema e resultado desenvolvido/projetado para atingir um objetivo específico (IEEE 829-2008). Sequência de passos que devem ser executados no sistema, sendo que os dados de entrada e saída esperada para cada passo são especificados. 3

Modelo de Casos de Teste Itens do Caso de teste (conforme norma IEEE 829-2008) Identificador do caso de teste Objetivo do caso de teste Entradas Saídas Ambientes necessários ou condições de ambiente Execução do caso de teste Dependência entre outros casos de teste Número de identificação do caso de teste Define o objetivo do caso de teste Entradas que serão consideradas no caso de teste Saídas esperadas de acordo com as entradas indicadas na execução dos testes Ambiente de hardware e software que devem ser montados para o caso de teste em questão Especifica com detalhe o que deve ser testado e a forma de como o teste deve ser executado Casos de teste relacionados 4

Exemplo de Casos de teste 1. Identificador do caso de teste 2. Objetivo do caso de teste Caso de teste 1 Testar Login Verificar login inválido 3. Entradas Inserir um email inválido 4. Saídas Exbir mensagem Login inválido 5. Ambientes necessários ou condições de ambiente 6. Execução do caso de teste nenhum 1. Selecione ícone do aplicativo 2. Exibir tela de login 3. Insira um email inválido 4. 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 5

Casos de Teste Critério de teste: 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. 6

Casos de Teste Exemplo de Critério de teste Crítério dos números primos menores que 20. Significado: Toda funcionalidade que requer as entradas com números inteiros deve ser testada usando todos os números primos menores que 20. Definir Casos de Teste que considerem como entrada os números 2, 3, 5, 11, 13, 17 e 19. Se não tiver casos de teste para esses números, então não se está em conformidade com os requisitos do critério de teste. 7

Cenário de teste Conjunto de casos de teste relacionados, ou agrupamento de casos de teste, que comumente testam o mesmo componente ou a mesma funcionalidade do sistema. Bastante utilizados em teste de regressão (teste realizados na fase de manutenção) para garantir que novas funcionalidades não inseriram defeitos nas antigas. Usados para revalidar mudanças nos casos de teste e treinar novos testadores e pessoas que darão suporte ao sistema. 8

Técnicas de Teste Não existe um procedimento genérico que possa ser usado para provar a correção de um programa A norma ISSO/IEC/IEEE 29119-4 define três técnicas de teste: Técnica baseada em estrutura também conhecida como técnica de caixa branca ou técnica estrutural Técnica baseada em código Técnica baseada em especificação também conhecida como técnica de caixa preta ou técnica funcional. Técnica baseada em funcionalidade Técnica baseada em experíência ou técnica baseada em erros. não comumente utilizada na indústria 9

Técnica Estrutural (Caixa Branca) Estabelece os requisitos de teste com base em uma dada implementação. 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. 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. 10

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 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 que põem a prova conjunto de condições, laços, definições e uso de variáveis 11

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 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. 12

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 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. 13

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 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 14

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

16

Critérios Os critérios do teste estrutural são baseados em: Complexidade Fluxo de controle Teste de Comandos ou Teste todos os nós Teste de Ramos ou todas as tarefas ou todos os arcos Todos Caminhos Fluxo de dados Todos os usos 17

Critérios baseados em complexidade Utilizam informações sobre a complexidade do programa para derivar os requisitos de teste 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 18

Critérios baseados em fluxo de controle Utilizam características de controle da execução do programa Ex.: Comandos, desvios 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) 19

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. 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. 20

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. Todos os arcos (também chamados arestas) do fluxo de controle devem ser executados, mesmo que um nó seja executado mais de uma vez. 21

Exemplo utilizando os critério Todos-Nós e Todas-Arestas 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. 22

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. 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: 23

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 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) 24

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. 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. 25

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 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 26

Elabore o GFC para a seguinte implementação: Main() Char achar; Int length, valid_id; Length = 0; 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++; achar = fgetc(stdin); } If (valid_id && (length >= 1) && (length<6)) { printf( valido\n ); } else { } printf( invalido\n ); Int valid_s (char ch){ if (((ch>= A ) && (ch <= Z )) ((ch>= a ) && (ch <= z ))) { Else return (1); return (0); } } Int valid_f(char ch) { if (((ch >= A ) && (ch<= Z )) Else } } ((ch >= a ) && (ch <= z )) ((ch >= 0 ) && (ch <= 9 ))){ return (1); return (0); 27

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 3 4 5 8 6 9 10 7 11 28

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 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 Uso computacional de variável Achar!= \n Length++ Todos-p-Usos Todos-c-Usos 29