Teste de Software I Conceitos e Estratégias



Documentos relacionados
Juciara Nepomuceno de Souza Rafael Garcia Miani. Teste de Software

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

ISO/IEC 12207: Gerência de Configuração

Fundamentos em Teste de Software. Vinicius V. Pessoni

Construção e Implantação de Software II - Unidade 3- Estratégias Para Testes de Software. Prof. Pasteur Ottoni de Miranda Junior

GARANTIA DA QUALIDADE DE SOFTWARE

Professor: Curso: Disciplina:

Engenharia de Software II

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

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

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento 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

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

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

PROFESSOR: CRISTIANO MARIOTTI

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

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

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

Engenharia de Software II: Criando a Declaração de Escopo. Prof. Msc Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009

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

Princípios do teste de software

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Engenharia de Requisitos

Engenharia de Software II

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

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

Fundamentos de Teste de Software

Tópicos. Engenharia de Software: Uma Visão Geral

Gerência de Projetos

Engenharia de Software

F.1 Gerenciamento da integração do projeto

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

CHECK - LIST - ISO 9001:2000

Universidade Paulista

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Engenharia de Software II

Gestão de Modificações. Fabrício de Sousa

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

CAPÍTULO 6 - ESTRUTURA DE SELEÇÃO

ENQUALAB 2013 QUALIDADE & CONFIABILIDADE NA METROLOGIA AUTOMOTIVA. Elaboração em planos de Calibração Interna na Indústria Automotiva

Tecnologia em Gestão Pública Desenvolvimento de Projetos - Aula 9 Prof. Rafael Roesler

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

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

Simulações em Aplicativos

ENGENHARIA DE SOFTWARE

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Gerenciamento de projetos.

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Engenharia de Software

Introdução à ES - Continuação

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Teste de Software Parte 1. Prof. Jonas Potros

Testes de Software Fases. Baseado em notas de aula da profa. Eliane Martins

Engenharia de Software

Gerenciamento de Problemas

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

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

Gerenciamento de Riscos do Projeto Eventos Adversos

Tabela de roteamento

Abordagem de Processo: conceitos e diretrizes para sua implementação

Sistemas de Informação I

MASTER IN PROJECT MANAGEMENT

Fundamentos de Teste de Software

Engenharia de Requisitos

Gerenciamento de Projeto

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

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

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

Projeto de Arquitetura

Projeto de Sistemas I

Introdução ao Teste de Software

PLANOS DE CONTINGÊNCIAS

O que é Gerenciamento de Redes de Computadores? A gerência de redes de computadores consiste no desenvolvimento, integração e coordenação do

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

Análise de Sistemas. Conceito de análise de sistemas

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

PR 2 PROCEDIMENTO. Auditoria Interna. Revisão - 2 Página: 1 de 9

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Planejamento e Gerenciamento de Software. Tema 3. Gerência de Projetos Profa. Susana M. Iglesias

AULA Gestão dos processos de manutenção.

Exame de Fundamentos da ITIL

Admistração de Redes de Computadores (ARC)

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

Sistemas de Gerenciamento de Banco de Dados

Nome da Empresa Sistema digitalizado no almoxarifado do EMI

Engenharia de Software II

Teste de software. Definição

Gerência de Projetos Prof. Dr. Sandro Ronaldo Bezerra Oliveira

Transcrição:

Tema da Aula Teste de I Conceitos e Estratégias Prof. Cristiano R R Portella portella@widesoft.com.br Conceitos Teste e Garantia de Qualidade Importância do Teste, segundo Deutsch: O desenvolvimento de software envolve uma série de atividades de produção, com alta probabilidade de inserção de erros devido a falhas humanas. Por causa da falta de habilidade do ser humano de cumprir tarefas e de comunicar-se com perfeição, torna-se necessário garantir a qualidade de software. A maioria dos erros são humanos e tem origem na comunicação, entendimento e transformação das informações. 1

Conceitos Teste e Garantia de Qualidade A atividade de teste é o processo de executar um programa com a intenção de descobrir um erro. Um bom Caso de Teste é aquele que tem uma elevada probabilidade de revelar um erro ainda não descoberto. Teste não serve para mostrar a ausência de defeitos, mas sim que eles estão presentes. Durante o teste observamos as falhas. Na Depuração (debugging) encontramos os defeitos (causa) para corrigi-los. Terminologia 9 Defeito (Fault) Instrução ou definição incorreta. 9 Falha (Failure) Resultados incorretos 9 Erro (Mistake) Falha resultante de ação humana Fonte: IEEE Std 729, Standard Glossary of Engineering Terminology Durante o teste observamos as falhas. Na depuração do código encontramos os defeitos (causas) para corrigi-los. 2

Conceitos Teste e Garantia de Qualidade Não existe software livre de defeitos, o que não pode servir de desculpa para não se aplicar Técnicas de Garantia de Qualidade em e Testes para localização/eliminação de erros. Um valor típico é de 10 erros/kloc. O custo de localização e remoção de defeitos aumenta à medida em que o ciclo de desenvolvimento evolui. Quanto antes uma falha for revelada, menor o custo de reparação e maior a probabilidade de corrigi-la corretamente. Conceitos A Importância do Teste de 9 Os erros são cometidos: 60% nas fases iniciais do desenvolvimento 40% durante a implementação 9 A Maioria do erros encontra-se nas partes pouco executadas do código (esconde-se nos cantos); 9 Um bom teste é, no mínimo, tão difícil quanto o desenvolvimento de software (quanto mais complexo o software, mais difícil a montagem do teste). 3

Custo de Correção de Erros Terminologia A atividade de Teste também é conhecida como Verificação e Validação (V&V). A Verificação refere-se ao conjunto de atividades que garante que o software implemente corretamente uma função específica. A Validação refere-se a um conjunto de atividades que garante que o software construído é rastreável às exigências do cliente. 4

Terminologia Verificação: Estamos construindo certo o produto? Validação: Estamos construindo o produto certo? Atividades de Teste 1. Planejamento Definição de Padrões Critérios de Adequação (Parada) Modelos de Estimativa 2. Projeto de Casos de Teste 3. Execução dos Casos de Teste 4. Análise dos Resultados Obtidos Técnicas 5. Documentação e Registro 5

Visão Detalhada do Teste (Fluxo de Atividades) Planejar Avaliar Melhorar Princípios para um bom Teste 9 Planejar tipo de teste 9 Planejar detalhes da atividade Plano de Teste 9 Definir o procedimento de testes 9 Definir os resultados esperados 9 Avaliar resultados obtidos (Obtido x Esperado) 9 Melhoramento Contínuo do Processo, redefinindo técnicas e a confiabilidade prevista, através de melhoria em: Normas, Políticas, Procedimentos e Ferramentas de testagem. 6

Conteúdo de um Plano de Teste 9 Processo de Teste Descrição de cada fase do Teste (Estratégia) 9 Rastreabilidade de Requisitos Planejamento de teste para cada requisito 9 Itens que serão Testados Descrição detalhadas de cada Item que será testado (Modelo, Manual, Programa, etc..) 9 Cronograma Além do Tempo, Matriz de Alocação de Recursos x Atividades-Fases Conteúdo de um Plano de Teste 9 Procedimentos de Registro Definição das Métricas e Padronização dos mecanismos de registro de resultados, para que o processo de teste possa ser medido 9 Requisitos de Hardware, e Rede Lista de recursos necessários para o teste 9 Descrição das Restrições Restrições que afetarão o processo de teste (Ex: Deficiência de Pessoal, Treinamento de Pessoal, Aquisição de, etc...) 7

Tipos de Teste nas respectivas Fases do Desenvolvimento Tipos de Testes 9 Teste Unitário: Teste dos Módulos (ou Classes) individualmente (cada unidade). 9 Teste de Integração: Teste da Integração entre os módulos (ou classes). Teste do Projeto do. 9 Teste de Validação (ou aceitação): Teste pra verificar se o produto de software atende os requisitos (conformidade com os Requisitos). 9 Teste de Sistema: Combinação de diferentes testes para por a prova todos os diferentes elementos do sistema (foram adequadamente integrados? Realizam corretamente as funções?) 8

Tipos de Teste Durante o Desenvolvimento Progresso dos Testes 9

Teste Unitário Foco: Atividade de verificação na menor unidade do software (módulo, classe, programa, etc..) Abordagem Prática: 1. Aplicar Técnicas Funcionais (visão externa do produto de software entradas e saídas) 2. Depois, complementar com técnicas estruturais (visão interna do produto de software - algoritmo) Teste de Integração Foco: Atividade Sistemática para verificar a Construção da Estrutura do software e também para a interface (comunicação) entre os módulos 9 Porque Teste de Integração é necessário? Dados podem se perder na Interface entre os Módulos Um módulo pode ter efeito inadequado sobre outro Combinação de Sub-funções podem não gerar a função principal desejada Estruturas Globais podem afetar o software 10

Teste de Integração Abordagem incremental 9 Teste através de segmentos de módulos que se integram; 9 Complexidade controlável: módulos são integrados dois a dois; 9 Três formas: top-down bottom-up sanduíche Integração Top-Down x Bottom-UP Módulo 1 T O P - D O W N Módulo 2 Módulo 5 Módulo 3 Módulo 4 Módulo 6 B O T T O M - U P Módulo 7 Módulo 8 Módulo 9 11

Estratégias de Teste Abordagem Top-Down Abordagem Top-Down: Inicia-se a integração pelo primeiro módulo até o último da hierarquia (de cima para baixo). 9 Duas abordagens: Em Largura: Integra-se, a princípio, todos os módulos subordinados Em Profundidade: Integra-se todos os módulos de um caminho de controle do software (que implementa uma certa funcionalidade) da estrutura do software 9 Problema Logístico: Uso obrigatório de stubs Estratégias de Teste Abordagem Top-Down 9 Stubs: Módulos simplificados que substituem outros de nível mais avançados ainda não integrados (top-down). 9 Como lidar com esse problema logístico? Adiar a execução de alguns casos de teste que certamente causarão a chamada do módulo que ainda não foi construído; Criar stubs que simulem as principais funções do módulo não construído. 12

Estratégias de Teste Abordagem Top-Down Tipos de Stubs: Estratégias de Teste Abordagem Top-Down Tipos de stubs: 1. Mostra mensagem de trace ( entrei no stub ) 2. Mostra a lista de parâmetros que foi passada (recebi a=8, b=9, x= a:\dados.mdb ) 3. Retorna um valor, previamente armazenado em um tabela (no stub) ou em um arquivo externo 4. Recebe parâmetros, faz um busca na tabela (interna ou arquivo externo e retorna valor para o módulo chamador) 13

Estratégias de Teste Abordagem Top-Down Processo de Integração (incremental): 1. Testa-se o primeiro módulo 2. A cada Passo: Substitui-se um "stub" por um novo módulo subordinado Módulo testado permanece Integração Top-Down Profundidade 1/3 Stub Stub 14

Integração Top-Down Profundidade 2/3 Stub Integração Top-Down Profundidade 3/3 15

Integração Top-Down Definição da Seqüência de Teste Seqüência de teste: M1 M2 M1 M2 M5 M1 M2 M5 M8 M1 M2 M6; Mas se M6 for necessário para que M2 funcione corretamente: M1 M2 M1 M2 M6 M1 M2 M5 M1 M2 M5 M8. Estratégias de Teste Abordagem Bottom-Up Abordagem Bottom-Up: Módulos são integrados partindo-se do último da hierarquia (de baixo para cima). 9 Novo problema logístico: Um "driver" deve ser providenciado para coordenar as entradas, saídas e chamadas do módulo (substituir stubs por driver). 9 Driver: Programa de controle escrito para coordenar a entrada e saída do Caso de Teste (navegação). 16

Estratégias de Teste Abordagem Bottom-Up Tipos de Drivers: Estratégias de Teste Abordagem Bottom-Up Processo de Integração: 1. Módulo de nível mais baixo são mapeados em clusters (conjunto de módulos que executam alguma função do software) 2. Driver coordena a entrada e saída dos dados 3. Cluster é testado (mesmo que incompleto) 4. Troca-se o driver pelo módulo hierarquicamente superior (integra-se cada cluster pouco a pouco) 17

Estratégias de Teste Abordagem Bottom-Up Driver Driver Driver Cluster 1 Cluster 3 Cluster 2 Estratégias de Teste Abordagem Bottom-Up Driver Driver Driver 1- Driver D1 é usado para testar Cluster 1. 2- Driver D2 é usado para testar Cluster 2. 3- Quando o bloco Ma estiver pronto, ele substituirá os drivers D1 e D2. 4- Driver D3 é usado para testar Cluster 3. 5- Quando o bloco Mb estiver pronto ele substituirá o Driver D3. 6- O Driver D4 será criado para testar Ma e Mb. 7- Quando o bloco Mc estiver pronto ele substituirá o Driver D4 integrando Ma e Mb 18

Estratégias de Teste Top-Down ou Botton-Up Desvantagens Top-Down Necessidade de criar stubs Botton-Up O programa não existe como entidade até que o último módulo seja adicionado. Necessidade de criar drivers (mais fáceis que stubs) Vantagens Testa antes as principais funções de controle. Projeto de Caso de Teste mais fácil pela ausência de stubs. Estratégias de Teste Top-Down ou Botton-Up Definir os módulos críticos e dar prioridades a eles (quanto mais rápidos testa-los, melhor). Dependendo de sua posição na estrutura do produto, escolher a abordagem. Módulos críticos: 9 Abordam diversos requisitos do software; 9 Tem elevado nível de controle (ponto alto na estrutura); 9 É complexo ou propenso a erros; e 9 Tem restrições de desempenho definidas. 19

Estratégias de Teste Teste de Sistema BU TD Estratégias de Teste Abordagem Alternativa (Sanduíche) Abordagem Combinada ou Sanduíche 9 Mistura as melhores características das anteriores 9 Deve-se avaliar sua aplicabilidade caso a caso 9 Define-se um linha base (ponto de inflexão) na estrutura de integração dos módulos: Acima da linha: TOP-DOWN Abaixo da linha: BOTTOM-UP 20

Estratégias de Teste Abordagem Sanduíche Top-Down Bottom-Up Projeto de Casos de Teste Caso de Teste: Entrada, Saída Esperada. 9 Tão difícil quanto o projeto do produto 9 Poucos gostam de teste; menos pessoas gostam de projetar Casos de Teste é lógico; Teste é ainda mais abstrato; Esforço de teste parece desperdiçado se não forem expostas falhas no software; 21

Projeto de Casos de Teste Teste Exaustivo é o Ideal: Todos os erros serão identificados e corrigidos (porém é impraticável). 1ª Lei: Paradoxo do Pesticida Todo método usado para prevenir erros/defeitos é ineficaz para algum tipo de erro/defeito. 2ª Lei: Barreira da Complexidade A complexidade do software (e consequentemente dos erros) cresce em função dos limites de nossa habilidade em gerenciar aquela complexidade. Executar os Casos de Teste 9 Preparar os Scripts de Teste. 9 Executar o Conjunto de Casos de teste (Test Suite) em batch. 9 Armazenar o Test Suite. 9 Ferramentas automatizadas de teste aumentam a produtividade da execução dos casos de teste. 22

Análise dos Resultados 9 Verificar cada resultado obtido contra o esperado; 9 Anotar todas as ocorrências (não conformidades); 9 Resolver cada ocorrência individualmente, considerando as possibilidades: Erro de Codificação Erro de Análise e/ou Especificação Erros de Teste. Depuração Quando um teste bem sucedido revela uma falha, a depuração (debugging) é o processo de localização do defeito e sua remoção. Pode ser um processo empírico, pois muitas vezes a manifestação externa do erro (falha) e sua causa interna (defeito) não tem relação óbvia entre si. O processo de depuração tenta ligar o sintoma a uma causa provável, que se encontrada será corrigida. Se a causa não for descoberta, será projetado novo Caso de Teste para validar uma suspeita de causa da falha. 23

Depuração 1 2 3 Teste de Regressão Teste de Regressão: Repetição dos testes já executados, a fim de garantir que as novas modificações não introduziram novos defeitos em aspectos do software que já haviam sido testados e depurados. Ferramentas de testagem permitem que os testes de regressão sejam realizados de maneira automática e rápida. 24

Depuração O processo de depuração torna-se particularmente difícil quando: 9 Sintoma e causa estão distantes; 9 O sintoma desaparece (temporariamente) quando outro erro é corrigido; 9 O sintoma é causado por não-erro (por exemplo o resultado de um arredondamento em cascata); 9 Sintoma causado por erro humano (difícil de rastrear); 9 Sintoma causado por erro de timing (executado no momento errado); Depuração O processo de depuração torna-se particularmente difícil quando: 9 Condições de entrada difíceis de reproduzir com precisão (por exemplo em aplicações de tempo real); 9 Sintoma intermitente (particularmente comum em sistemas embutidos); e 9 Sintoma tem causas distribuídas por diferentes tarefas (múltiplas causas concorrentes). 25

Depuração Geralmente, à medida em que passa o tempo de depuração, os erros remanescentes são mais sutis, demandando mais esforço ou diminuindo a probabilidade de sua localização. Depuração Abordagens de depuração: 1. Força Bruta: Método mais comum e menos eficiente, deixa que o próprio computador descubra o erro, usando traces e instruções inseridas para ajudar a determinar o momento da falha. 2. Backtracking: Abordagem usada em pequenos programas. A pesquisa inicia-se no local onde a falha foi descoberta; rastreia-se o código para trás. A complexidade do código pode aumentar muito o número de caminhos a serem rastreados. 26

Depuração Abordagens de depuração: 3. Eliminação da causa: Uma hipótese de causa é imaginada e um Caso de Teste é montado para provar ou refutar a hipótese. Uma lista de todas as possíveis causas é gerada. Depuração 3. Eliminação da causa: O que é não é Quando é não é Onde é não é Em que extensão é não é The Method (Brown & Sampson). 27

Depuração A correção de um defeito pode introduzir outras falhas. Três perguntas simples (Van Vleck) devem ser feitas ao se remover o defeito: 1. A causa do defeito é reproduzida em outra(s) partes do software (bloco padrão copiado ou padrão de programação)? 2. A correção do defeito pode introduzir nova falha (parte do programa fortemente acoplada a estruturas lógicas ou estruturas da informação)? 3. O que poderia ser feito para eliminar essa falha desde o princípio (abordagem de Garantia de Qualidade de )? Revisões Técnicas Formais (FTR) Também chamadas de walkthroughs, inspeções, revisões round-robin etc é uma técnica de garantia da qualidade de software (atividade guarda-chuva), que tem os seguintes objetivos: 9 Descobrir erros de função, lógica ou implementação 9 Verificar se o software atende aos requisitos 9 Verificar se documentação técnica atende padrões e formalismo 9 Obter software desenvolvido de maneira estruturada e uniforme 9 Tornar os projetos mais administráveis. 28

Revisões Técnicas Formais (FTR) Reunião de Revisão Técnica Formal: 9 Duração máxima de 2 horas; 9 De 3 a 5 participantes; 9 Somente desenvolvedores (sem chefias); 9 Analisar o produto e não o desenvolvedor; 9 Definir líder e anotador ; 9 Preparar material para os participantes; e 9 Apontar os problemas e não tentar resolve-los. Exercício Em grupo de 4 alunos, crie um formulário que será usado para Plano de Teste, contendo no mínimo, as seguintes informações: 29

Exercício 9 Nome do Sistema; 9 Nome do(s) módulos em teste (ou produto todo); 9 Fase do ciclo de vida em que cada teste será realizado; 9 Técnicas empregadas e respectivas ferramentas; 9 Responsável(eis) pela aplicação do teste; 9 Cronograma de teste (início-fim-duração); 9 Responsável(eis) pelo registro dos resultados; 9 Responsável(eis) pela verificação e aprovação; 9 Critérios para a conclusão de cada fase; e 9 Normas/padrões a serem seguidos, Exercício Seu trabalho é: 9 Dispor as informações no melhor arranjo possível. 9 Incluir as informações que o grupo entender necessário (com certeza elas existem). Use o material de aula, a bibliografia recomendada e a criatividade, para incluir campos necessários ao formulário. 9 Fazer um teste (teórico) de aplicação do formulário. 30