Teste de Software Parte 3.

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Estruturação de Linguagens (Pascal e C++)
Estruturas de Controle
Programação em Java Prof. Maurício Braga
Data: 10 a 12 de fevereiro de 2009 e
Estruturas de Repetição
Exercícios PAA- Grafos
Exercicio 1 Dados três valores X, Y e Z, Faça um programa em C para verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem,verificar.
Programação de Computadores - 2
Algoritmos e Programação Estruturada Conceitos básicos
Introdução à Lógica de Programação (cont.)
Linguagem C Estruturas de Controle de Fluxos
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Algoritmos com seleção
Linguagem C Estruturas de Seleção.
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Paradigmas de programação
Estruturas de Controle
João Lucas de Oliveira Torres
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Professor: Juliano Lucas Gonçalves
Variáveis, Tipos de Dados e Constantes
Informática Teórica Engenharia da Computação
Exercícios PAA- Grafos
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Seminário 1: Revisão de C
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
O Portal do Estudante de Computação
Operadores Relacionais, Lógicos e comandos de condição
Teste dos Caminhos Básico
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Estrutura de Decisão e Repetição
Algoritmo e Programação
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
3. Introdução à Linguagem C
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
ESTRUTURAS DE CONTROLE
Programação de PIC em C Exposição das funções básicas para
Estruturas de Dados Aula 6: Cadeias de Caracteres
Computação Eletrônica
Teste de Sistemas de Software
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Comando CASE Desvio por seleção múltipla
Fundamentos de linguagens de programação
Teste Simbólico Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural.
Testes de SW Aula 24.
Exercícios de Fluxo em Redes
Programação de Computadores - 1
Introdução à Programação
Professor: André L. R. Didier Autor: Francisco Airton
Profa. Maria Augusta Constante Puget
Paradigmas das Linguagens de Programação - História
Programação para Web I AULA 4 ESTRUTURAS DE CONTROLE.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Linguagem de Programação
Programação Computacional Profa. Madeleine Medrano
AULA DE Nº 08 FUNÇÃO SE FLUXO DE CAIXA PROGRAMADO (MACROS) MONITORES: WILLIAMS / DAVID
Revisão Turma – WEB JavaScript.
IFRN Técnico em Informática para Internet Estruturas Condicionais Prof. Gilbert Azevedo.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Algoritmos Grupos de Slides No 2. Prof. SIMÃO Estrutura de decisão simples “Se” if end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Recursividade, Entrada pelo teclado e Funções com retorno Dilvan Moreira.
Transcrição da apresentação:

Teste de Software Parte 3

Exercícios aula anterior ESPECIFICAÇÃO: a função deve determinar se um identificador é ou não válido em uma linguagem imaginária. Um identificador válido deve começar com uma letra e conter apenas letras ou dígitos. Além disso, deve ter no mínimo 1 caractere e no máximo 6 caracteres de comprimento

<x, verdadeiro> (1) <nomeAl, verdadeiro> (1, 2, 5, 7) Condição de entrada Classe(s) válida Classe(s) inválidas Tamanho t do identificador 1 >= t <= 6 t < 1 t > 6 Primeiro caractere é letra? Sim (5) Não (6) Demais caracteres são letras ou dígitos? Sim (7) Não (8) (3) (4) (1) (2) Casos de teste: <x, verdadeiro> (1) <nomeAl, verdadeiro> (1, 2, 5, 7) <nomeAluno, falso> (4) <*abc, falso> (6) <abc*$, falso> (8)

Exercício aula anterior Análise valor limite: Uma especificação de função declara que ela aceita de 4 a 10 entradas, que são números inteiros de cinco dígitos, maiores que 10.000.

A mesma solução em forma de tabela: Casos de teste: <(11000, 12000, 13000, 22222), válido> <(11000, 12000, 13000, 22222, 11000, 12000, 13000, 22222, 55555, 66666), válido> <(11000, 12000, 13000),inválido> <(11000, 12000, 13000, 22222, 11000, 12000, 13000, 22222, 55555, 66666,77777), inválido> ...

Teste estrutural Técnica de teste que se foca em determinadas estruturas do programa Portanto, é uma técnica baseada em implementação (ao contrário da técnica funcional, baseada na especificação). Geralmente, se aplica ao teste de unidade

Teste estrutural O teste funcional não garante que “todas” as partes do código foram testadas Pode haver alguma parte que não foi coberta pelos testes. Exemplo: algum tratamento de exceção. Se houvesse uma especificação completa do software, provavelmente, o teste funcional cobriria todo o código

Teste estrutural A maioria dos critérios de teste de estrutura utiliza uma representação do programa chamada de grafo de programa ou grafo de fluxo de controle. Um grafo de programa é um grafo orientado, com um único nó de entrada e um único nó de saída Os vértices representam os blocos e as arestas representam possíveis desvios de um bloco para outro

Teste Estrutural – Grafo de programa aresta nó Nós do programa Grafo programa

Teste estrutural - Teste de caminho Um caminho é o espaço entre um nó e outro Um caminho completo é um conjunto de nós entre o nó inicial e o nó final Teste de caminho é uma estratégia de teste de estrutura, cujo objetivo é exercitar cada caminho de execução independente Se cada caminho for executado, então todas as instruções foram executadas Além disso, todas as declarações condicionais são testadas para os casos verdadeiros e falsos

Teste estrutural - Teste de caminho Os testes de caminho não testam todas as possíveis combinações de todos os caminhos do programa – esse é um objetivo impossível A não ser para unidades muito triviais, existe um número infinito de combinações de caminhos em programas com loops O objetivo é fazer com que cada caminho independente seja executado ao menos uma vez Um caminho independente é aquele que atravessa pelo menos um novo ramo no grafo Os ramos verdadeiros e falsos devem ser executados ao menos uma vez

Exemplo de grafo

Exercícios: 1-Determine os nós e elabore o grafo de programa para a função abaixo: function obterConceito(parametroRecebido : char) : String; var retorno : String; begin case parametroRecebido of 'A' : retorno := 'Ótimo'; 'B' : retorno := 'Bom'; 'C' : retorno := 'Regular'; ‘D’: retorno := 'Ruim'; 'E' : retorno := 'Péssimo';   else retorno := 'Inválido'; end; obterConceito := retorno;

Exercício 2-Determine os nós, elabore o grafo de programa, determine os caminhos e crie casos de teste que executem estes caminhos: function verificaTriangulo (a, b, c : real): String; begin if ((a < b + c) AND (b < a + c) AND (c < a + b)) then{Verifica se as medidas {formam um triângulo.} if (a = b) AND (b = c) then verificaTriangulo:='Triangulo equilatero' {Três lados iguais} else if ((a = b) OR (a = c) OR (b = c)) then verificaTriangulo:='Triangulo isosceles' {Dois lados iguais} else verificaTriangulo:='Triangulo escaleno' {Todos os lados são diferentes} else verificaTriangulo:='Nao é um triangulo'; {Não satisfez a propriedade da} { desigualdade triangular} end;