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



Documentos relacionados
Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Introdução ao Teste de Software

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Introdução ao Teste de Software

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

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

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

Técnicas de Teste de Software

Técnicas de Teste de Software

Teste de Software. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites. Objetivos e Limites

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

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

Introdução a Teste de Software

c. Técnica de Estrutura de Controle Teste do Caminho Básico

GARANTIA DA QUALIDADE DE SOFTWARE

Fundamentos em Teste de Software. Vinicius V. Pessoni

Introdução ao Teste de Software

Auditoria e Qualidade de Software ISO/IEC 9126 Engenharia de Software Qualidade de Produto

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

Verificação, Validação e Testes: Teste de Software

Engenharia de Software II

Fundamentos de Teste de Software

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Qualidade de Software

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Aula 06 Introdução à Teste de Módulos II e Exercícios. Alessandro Garcia LES/DI/PUC-Rio Março 2014

Instituto de Ciências Matemáticas e de Computação ISSN INTRODUÇÃO AO TESTE DE SOFTWARE (Versão ) NOTAS DIDÁTICAS DO ICMC

Engenharia de Requisitos

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

REQUISITOS. Prof. Msc. Hélio Esperidião

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Teste de Software. Profa. Cátia dos Reis Machado

Atividade da gerência da qualidade

Requisitos. Sistemas de Informações

Aspectos Teóricos e Empíricos de Teste de Cobertura de Software

Teste de Software Estrutural ou Caixa Branca. Disciplina de Engenharia de Software prof. Andrey Ricardo Pimentel

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

ENGENHARIA DE SOFTWARE I

1. Qual das seguintes alternativas não é um tipo de revisão? 2. Qual das alternativas é um atributo da qualidade?

Introdução Fatores de Qualidade Garantia de Qualidade Rivisões de Software Conclusão. Qualidade. Plácido A. S. Neto 1

Teste de Software Parte 1. Prof. Jonas Potros

Análise e Projeto de Software

Projeto de Sistemas I

UNIVASF - Universidade Federal do Vale do São Francisco Manutenção de Software

Testes de Software Aula 1

CHECK - LIST - ISO 9001:2000

Qualidade de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

3 Qualidade de Software

Como melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008

Engenharia de Software I

Verificação é um processo para se determinar se os produtos, (executáveis ou

Qualidade de Software: Teste do Produto

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Universidade Paulista

Qualidade de Software

Processos de Desenvolvimento de Software

Teste de software. Definição

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

SIMULADO: Simulado 3 - ITIL Foundation v3-40 Perguntas em Português

Juciara Nepomuceno de Souza Rafael Garcia Miani. Teste de Software

PLANOS DE CONTINGÊNCIAS

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

EVOLUÇÃO DE SOFTWARE

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

ENGENHARIA DE SOFTWARE

Teste de Software II Técnicas de Teste

Qualidade de Software. Profa. Cátia dos Reis Machado

Implantação de um Processo de Medições de Software

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

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

Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins

Prof. Dr. Ivanir Costa. Unidade III QUALIDADE DE SOFTWARE

Manutenção desoftware. SCE 186- Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestrede2002

Teste de Software I Conceitos e Estratégias

CES-32 e CE-230 Qualidade, Confiabilidade e Segurança de Software. Conceitos de Qualidade. CURSO DE GRADUAÇÃO e DE PÓS-GRADUAÇÃO DO ITA

Tipos de teste de software

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

PROFESSOR: CRISTIANO MARIOTTI

Governança de TI. ITIL v.2&3. parte 1

Representação de Algoritmos - Linguagens de Programação

Qualidade de Software. Anderson Belgamo

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

Professor: Curso: Disciplina:

Conceitos básicos da linguagem C

Transcrição:

Engenharia de Software I 2012.2 Introdução a Verificação, Validação e Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br]

Organização Introdução Teste de Software Terminologia e Conceitos Básicos Técnicas e Critérios de Teste Automatização da Atividade de Teste Estudos Empíricos Perspectivas Introdução ao Teste de Software 2

Introdução Qualidade de Software Conformidade com requisitos funcionais e de desempenho, padrões de desenvolvimento documentados e características implícitas esperadas de todo software profissionalmente desenvolvido. Corretitude Confiabilidade Testabilidade Introdução ao Teste de Software 3

Introdução Garantia de Qualidade de Software Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento Objetivo Garantir que tanto o processo de desenvolvimento quanto o produto de software atinjam os níveis de qualidade especificados VV&T Verificação, Validação e Teste Introdução ao Teste de Software 4

Introdução Validação: Assegurar que o produto final corresponda aos requisitos do usuário Estamos construindo o produto certo? Verificação: Assegurar consistência, completitude e corretitude do produto em cada fase e entre fases consecutivas do ciclo de vida do software Estamos construindo corretamente o produto? Teste: Examina o comportamento do produto por meio de sua execução Introdução ao Teste de Software 5

Terminologia Defeito Erro Falha Defeito: deficiência mecânica ou algorítmica que, se ativada, pode levar a uma falha Erro: item de informação ou estado de execução inconsistente Falha: evento notável em que o sistema viola suas especificações Introdução ao Teste de Software 6

Defeitos no Processo de Desenvolvimento A maior parte é de origem humana São gerados na comunicação e na transformação de informações Continuam presentes nos diversos produtos de software produzidos e liberados (10 defeitos a cada 1000 linhas de código) A maioria encontra-se em partes do código raramente executadas Introdução ao Teste de Software 7

Defeitos no Processo de Desenvolvimento Principal causa: tradução incorreta de informações Quanto antes a presença do defeito for revelada, menor o custo de correção do defeito e maior a probabilidade de corrigi-lo corretamente Solução: introduzir atividades de VV&T ao longo de todo o ciclo de desenvolvimento Introdução ao Teste de Software 8

Teste e Depuração Teste Processo de executacao de um programa com o objetivo de revelar a presença de erros. Contribuem para aumentar a confiança de que o software desempenha as funções especificadas. Depuração Conseqüência não previsível do teste. Após revelada a presença do erro, este deve ser encontrado e corrigido. Introdução ao Teste de Software 9

Teste de Software Fundamental em todos os ramos de engenharia Software: produto da Engenharia de Software Atividade essencial para ascensão ao nível 3 do Modelo CMM/SEI Atividade relevante para avaliação da característica funcionalidade (ISO 9126,14598-5) Introdução ao Teste de Software 10

Teste de Software Objetivo: revelar a presença de erros D P? T X Inexistência de erro: Software é de alta qualidade? Conjunto de casos de teste T é de baixa qualidade? Introdução ao Teste de Software 11

Teste de Software Defeitos e erros não revelados Falhas se manifestam durante a utilização pelos usuários Erros devem ser corrigidos durante a manutenção Alto custo Introdução ao Teste de Software 12

Teste de Software Falhas graves Qualidade e confiabilidade suspeitas Modificação do projeto Novos testes Erros de fácil correção Funções aparentemente funcionam bem Qualidade e confiabilidade aceitáveis Testes inadequados para revelar a presença de erros graves Novos testes Introdução ao Teste de Software 13

Teste de Software Limitações Não existe um algoritmo de teste de propósito geral para provar a corretitude de um programa Em geral, é indecidível se dois caminhos de um mesmo programa ou de diferentes programas computam a mesma função É indecidível se existe um dado de entrada que leve à execução de um dado caminho de um programa; isto é, é indecidível se um dado caminho é executável ou não Introdução ao Teste de Software 14

Teste de Software Configuração de Software Configuração de Teste Atividades de Teste Resultados de Teste Resultados Esperados Avaliação Dados da Taxa de Erros Erros Modelo de Confiabilidade Depuração Correções Confiabilidade Prevista Introdução ao Teste de Software 15

Teste de Software Fases de Teste Teste de Unidade Identificar erros de lógica e de implementação em cada módulo do software, separadamente Teste de Integração Identificar erros associados às interfaces entre os módulos do software Teste de Sistema Verificar se as funções estão de acordo com a especificação e se todos os elementos do sistema combinam-se adequadamente Introdução ao Teste de Software 16

Teste de Software Etapas do Teste Planejamento Projeto de casos de teste Execução do programa com os casos de teste Análise de resultados Introdução ao Teste de Software 17

Teste de Software Caso de teste Especificação de uma entrada para o programa e a correspondente saída esperada Entrada: conjunto de dados necessários para uma execução do programa Saída esperada: resultado de uma execução do programa Oráculo Um bom caso de teste tem alta probabilidade de revelar um erro ainda não descoberto Introdução ao Teste de Software 18

Teste de Software Projeto de casos de teste O projeto de casos de teste pode ser tão difícil quanto o projeto do próprio produto a ser testado Poucos programadores/analistas gostam de teste e, menos ainda, do projeto de casos de teste O projeto de casos de teste é um dos melhores mecanismos para a prevenção de defeitos O projeto de casos de teste é tão eficaz em identificar erros quanto a execução dos casos de teste projetados Introdução ao Teste de Software 19

Técnicas e Critérios de Teste Técnica Funcional Requisitos funcionais do software Critério Particionamento em Classes de Equivalência Técnica Estrutural Estrutura interna do programa Critérios Baseados em Fluxo de Dados Técnica Baseada em Erros Erros mais freqüentes cometidos durante o processo de desenvolvimento de software Critério Análise de Mutantes Introdução ao Teste de Software 20

Automatização da Atividade de Teste Ferramentas de Teste Para a aplicação efetiva de um critério de teste faz-se necessário o uso de ferramentas automatizadas que apóiem a aplicação desse critério. Contribuem para reduzir as falhas produzidas pela intervenção humana Aumento da qualidade e produtividade da atividade de teste Aumento da confiabilidade do software Facilitam a condução de estudos comparativos entre critérios Introdução ao Teste de Software 21

Automatização da Atividade de Teste Critérios Estruturais: Fluxo de Dados Asset, Proteste programas em Pascal xsuds programas em C, C++ e Cobol Poke-Tool programas em C, Cobol e Fortran Critérios Baseados em Mutação Mothra programas em Fortran Proteum programas em C (unidade) Proteum/IM programas em C (integração) Proteum/RS especificações Introdução ao Teste de Software 22

Automatização da Atividade de Teste xsuds (Software Understanding & Diagnosis System) xatac: teste xslice: depuração xvue: manutenção xprof: melhoria de performance xdiff: comparação de código Estado da Arte X Estado da Prática Introdução ao Teste de Software 23

Técnica Funcional (Caixa Preta) Baseia-se na especificação do software para derivar os requisitos de teste Aborda o software de um ponto de vista macroscópico Envolve dois passos principais: Identificar as funções que o software deve realizar (especificação dos requisitos) Criar casos de teste capazes de checar se essas funções estão sendo executadas corretamente Introdução ao Teste de Software 24

Técnica Funcional Problema Dificuldade em quantificar a atividade de teste: não se pode garantir que partes essenciais ou críticas do software foram executadas Dificuldade de automatização Critérios da Técnica Funcional Particionamento em Classes de Equivalência Análise do Valor Limite Grafo de Causa-Efeito Introdução ao Teste de Software 25

Técnica Estrutural (Caixa Branca) Baseada no conhecimento da estrutura interna (implementação) do programa Teste dos detalhes procedimentais A maioria dos critérios dessa técnica utiliza uma representação de programa conhecida como grafo de programa ou grafo de fluxo de controle Introdução ao Teste de Software 26

Técnica Estrutural Grafo de Programa Nós: blocos indivisíveis Não existe desvio para o meio do bloco Uma vez que o primeiro comando do bloco é executado, os demais comandos são executados seqüencialmente Arestas ou Arcos: representam o fluxo de controle entre os nós Introdução ao Teste de Software 27

Identifier.c (função main) 01 /* 01 */ { /* 01 */ char achar; /* 01 */ int length, valid_id; /* 01 */ length = 0; /* 01 */ printf ( Identificador: ); /* 01 */ achar = fgetc (stdin); /* 01 */ valid_id = valid_s(achar); /* 01 */ if (valid_id) /* 02 */ length = 1; /* 03 */ achar = fgetc (stdin); 05 /* 04 */ while (achar!= '\n') /* 05 */ { /* 05 */ if (!(valid_f(achar))) 06 /* 06 */ valid_id = 0; /* 07 */ length++; /* 07 */ achar = fgetc (stdin); 07 /* 07 */ } /* 08 */ if (valid_id && (length >= 1) && (length < 6) ) /* 09 */ printf ( Valido\n ); /* 10 */ else /* 10 */ printf ( Invalido\n ); /* 11 */ } Introdução ao Teste de Software 28 02 03 04 08 09 10 11

Técnica Estrutural Grafo de Programa do identifier Gerado pela View-Graph Grafo de Programa Detalhes considerados nó arco caminho simples (2,3,4,5,6,7) completo (1,2,3,4,5,6,7,4,8,9,11) fluxo de controle Introdução ao Teste de Software 29

Técnica Baseada em Erros Os requisitos de teste são derivados a partir dos erros mais freqüentes cometidos durante o processo de desenvolvimento do software Critérios da Técnica Baseada em Erros Semeadura de Erros Teste de Mutação Análise de Mutantes (unidade) Mutação de Interface (integração) Introdução ao Teste de Software 30

Teste de Mutação Hipótese do Programador Competente Programadores experientes escrevem programas corretos ou muito próximos do correto. Efeito de Acoplamento Casos de teste capazes de revelar erros simples são tão sensíveis que, implicitamente, também são capazes de revelar erros mais complexos. Introdução ao Teste de Software 31

Análise de Mutantes Passos da Análise de Mutantes 1- Geração de Mutantes Para modelar os desvios sintáticos mais comuns, operadores de mutação são aplicados a um programa, transformando-o em programas similares: mutantes. P 1 P Operadores de Mutação P 3 P 2 Programa em Teste P n P 4 Mutantes Introdução ao Teste de Software 32

Análise de Mutantes Seleção dos operadores de mutação Abrangente Capaz de modelar a maior parte dos erros Pequena cardinalidade Problemas de custo Quanto maior o número de operadores utilizados, maior o número de mutantes gerados Introdução ao Teste de Software 33

Análise de Mutantes Exemplo de Mutantes Mutante Gerado pelo Operador OLAN if (valid_id * (length >= 1) && (length < 6) ) printf ("Valido\n"); else printf ("Invalido\n"); Mutante Gerado pelo Operador ORRN if (valid_id && (length >= 1) && (length <= 6) ) printf ("Valido\n"); else printf ("Invalido\n"); Introdução ao Teste de Software 34

Exercício 1- Para a função abaixo a. elabore o grafo do programa b. determine os caminhos completos c. crie casos de teste que executem estes caminhos A função recebe três valores e verifica se eles podem formar um triângulo. Três lados formam um triângulo quando um lado é menor que a soma dos outros dois. function verificatriangulo (a, b, c : real): String; begin if ((a < b + c) AND (b < a + c) AND (c < a + b)) then 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' else verificatriangulo:='nao é um triangulo'; {Não satisfez a propriedade} end; 35

Exercício 2 - Para a função abaixo a. elabore o grafo do programa b. determine os caminhos completos c. crie casos de teste que executem estes caminhos /* Este programa escrito em C lê uma linha de texto e converte conjuntos de caracteres brancos em um unico caractere. Sugira casos de teste para o programa */ void eliminabrancos(char linha[40]) { int i,j,tamanho; i=0; tamanho=strlen(linha); while(i<tamanho) { if(isspace(linha[i])) /* verifica se é branco */ { if(isspace(linha[i+1])) /* verifica se o próximo é branco */ for (j=i;j<tamanho;j++ ) linha[j]=linha[j+1]; /* copia o proximo caractere para a posicao vazia*/ else i++; } else i++; } } // fim do eliminabrancos() 36