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

Documentos relacionados
Introdução ao Teste de Software

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

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

Introdução ao Teste de Software

Engenharia de Software I

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

Garantia de Qualidade

Qualidade de Software (cont)

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

QUALIDADE DE SOFTWARE

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

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

Organização para Realização de Teste de Software

Normas ISO:

SSC 0721 Teste e Validação de Software

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

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Engenharia de Software

Visão Geral da Norma ISO/IEC 12207

Testes de software - Teste funcional

Estratégias de Testes Parte I

Introdução a Teste de Software

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

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

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

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

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

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

Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses:

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

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

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

Qualidade de Software: Visão Geral. SSC 121-Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa

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

Critérios de Teste Funcionais

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:

ENGENHARIA DE SOFTWARE

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

Processos de software

ISO/IEC Processo de ciclo de vida

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Introdução aos Testes de Software

Verificação e Validação (V & V)

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Verificação e Validação

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

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

Teste de Software. Karen Frigo Busolin Novembro / 2010

Qualidade de Software e Atividades de Verificação e Validação

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

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Visão Geral de Engenharia de Software

Engenharia de Software

ISO/IEC 12207: Verificação, Validação e Testes

GERENCIAMENTO DA QUALIDADE DO PROJETO

Engenharia de Software

Qualidade de Software: Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa

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

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

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

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

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

Teste Estrutural e de Mutação

DCC / ICEx / UFMG. O Modelo CMMI. Eduardo Figueiredo.

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

Aula 11 - Fluxo do RUP: Ambiente

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

Verificação e Validação

Fundamentos de Teste de Software

TESTES DE SOFTWARE Lista de Exercício 01. Luiz Leão

CONTPATRI Plano de Garantia de Qualidade. Versão 1.1

ISO/IEC Roteiro IEC ISO. Histórico ISO/IEC ISO

Desenvolvido pelo Software Engineering Institute-SEI em 1992 Possui representação por estágios (5 níveis)e contínua (6 níveis)

Teste de Software. Objetivo: Executar software para revelar erros/falhas ainda não descobertos. Pode gastar 40% do esforço de desenvolvimento

AULA 02 Qualidade em TI

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

ENGENHARIA DE REQUISITOS. SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Engenharia de Software

Engenharia de Software II

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

Qualidade de Processo de Software. Simone S Souza ICMC/USP 2018

Estágio II. Aula 01 Qualidade de Software. Prof. MSc. Fred Viana

Engenharia de Software

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

Engenharia de Software

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

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

VERIFICAÇÃO & VALIDAÇÃO

Engenharia de Software II

APOSTILAS: NORMAS; ABNT NBR ISO; MPS BR

QUALIDADE DE SOFTWARE. Prof. Emiliano Monteiro

SSC5877 Validação Verificação e Teste de Software

ISO/IEC 12207: Manutenção

Requisitos de Software

Tarefas de Gerenciamento de Configuração

Engenharia de Software Aula 2.3 Processos da Engenharia de Requisitos. Prof. Bruno Moreno

Introdução à Engenharia de Software

Capítulo 20 - Manutenção de Software. Os Fatores de Qualidade de Software focalizam três aspectos importantes do Software Produto: (ISO 9126)

Transcrição:

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

Tópicos da Aula Ø Teste de Software Ø Terminologia e Conceitos Básicos Ø Técnicas e Critérios de Teste Ø Técnicas Funcional, Estrutural e Baseada em Erros Aspectos teóricos e empíricos de teste de cobertura de software Notas Didáticas do ICMC/USP (no. 31)

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 Ø V&V Verificação e Validação

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 (análise dinâmica)

Terminologia Ø Engano x Defeito x Erro x Falha Saída Engano introduz Defeito produz Erro propaga Erro Falha CAUSA CONSEQÜÊNCIA Ø Um engano introduz um defeito no software. Ø O defeito, quando ativado, pode produzir um erro. Ø O erro, se propagado até a saída do software, constitui uma falha.

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

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

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 V&V ao longo de todo o ciclo de desenvolvimento

Teste e Depuração Ø Teste Processo de executar 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 Consequência não previsível do teste. Após revelada a presença do erro, este deve ser encontrado e corrigido.

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)

Os 5 Níveis de Maturidade do CMMI staged DEFINIDO Organizações Padronizadas 11- Análise de Decisão e Resolução 10- Gerenciamento de Riscos 9- Gerenciamento integrado de Projeto 8- Treinamento Organizacional 7- Definição do processo da organização 6- Foco no processo da organização 5- Validação 4- Verificação 3- Integração de Produto 2- Solução Técnica 1- Desenvolvimento de Requisitos GERENCIADO Organizações Disciplinadas Atividades necessárias para sair do nível gerenciado e passar para o nível definido.

PROCESSOS DE AQUISIÇÃO Preparação da Aquisição Seleção do Fornecedor Contrato Monitoramento do Fornecedor Aceitação do Cliente Norma ISO 12207 PROCESSOS FUNDAMENTAIS PROCESSOS DE FORNECIMENTO Proposta do Fornecedor Liberação do Produto Apoio a Aceitação do Produto PROCESSOS DE DESENVOLVIMENTO Elicitação de Requisitos Análise dos Requisitos do Sistema Projeto Arquitetural do Sistema Análise dos Requisitos de Software Projeto do Software Construção do Software Integração do Software Teste do Software Integração do Sistema Teste do Sistema Instalação do Software Manutenção do Software e do Sistema PROCESSOS DE OPERAÇÃO Uso Operacional Apoio ao Cliente PROCESSOS DE GERÊNCIA Alinhamento Organizacional Gerenciamento da Organização Gerenciamento do projeto Gerenciamento da Qualidade Gerenciamento de Risco Medições PROCESSOS DE MELHORIA DE PROCESSO Estabelecimento do Processo Avaliação do Processo Melhoria do Processo PROCESSOS DE RECURSOS E INFRAESTRUTURA Gerenciamento de Recursos Humanos Treinamento Gerenciamento do Conhecimento Infraestrutura PROCESSOS DE REUSO Gerencia dos Ativos Gerencia do Programa de Reuso Engenharia de Domínio PROCESSOS ORGANIZACIONAIS PROCESSOS DE CONTROLE DA CONFIGURAÇÃO Documentação Gerenciamento da Configuração Gerenciamento da resolução de problemas Gerenciamento dos Pedidos de Alteração PROCESSOS DE GARANTIA DE QUALIDADE Garantia da Qualidade Verificação Validação Revisão Conjunta Auditoria Avaliação do produto PROCESSOS DE APOIO

Desafios do Teste Ø Todos já testaram algum produto de software... Quais foram os maiores desafios? Ø Alguns problemas comuns... Ø Não há tempo suficiente para o teste. Ø Muitas combinações de entrada para serem exercitadas. Ø Não há tempo para o teste exaustivo. Ø Dificuldade em determinar os resultados esperados para cada caso de teste. Ø Requisitos do software inexistentes ou que mudam rapidamente. Ø Não há treinamento no processo de teste. Ø Não há ferramenta de apoio. Ø Gerentes que desconhecem teste ou que não se preocupam com qualidade.

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?

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

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

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

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

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

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

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

Teste de Software Ø Maneira sistemática e planejada para conduzir os testes Ø Técnicas e Critérios de Teste Ø Conjunto de Casos de Teste T Ø Características desejáveis Ø Deve ser finito Ø Custo de aplicação deve ser razoável

Técnicas e Critérios de Teste Ø Critério de Teste C Ø Objetivo Ø Obter, de maneira sistemática, um conjunto T de casos de teste que seja efetivo quanto à meta principal de teste (revelar a presença de erros no programa) Ø Propriedades i) incluir todos os desvios de fluxo de execução ii) incluir pelo menos um uso de todo resultado computacional iii) T mínimo e finito

Técnicas e Critérios de Teste Ø Critério de Seleção de Casos de Teste Ø Procedimento para escolher casos de teste para o teste de P Ø Critério de Adequação Ø Predicado para avaliar T no teste de P Ø T é C-adequado todo elemento requerido por C é exercitado por pelo menos por um t, t T

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

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

Exemplos de Ferramentas 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 Ø JaBUTi Java Bytecode Ø 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

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

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

Técnica Funcional: Exemplo Ø Particionamento em Classes de Equivalência Ø Divide o domínio de entrada do programa em classes de dados (classes de equivalências) Ø Os dados de teste são derivados a partir das classes de equivalência

Técnica Funcional: Exemplo Ø Passos Ø Identificar classes de equivalência Ø Condições de entrada Ø Classes válidas e inválidas Ø Definir os casos de teste Ø Enumeram-se as classes de equivalência Ø Casos de teste para as classes válidas Ø Casos de teste para as classes inválidas

Técnica Funcional: Exemplo Ø Especificação do programa Identifier O programa deve determinar se um identificador é válido ou não. 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 um caractere e no máximo seis caracteres de comprimento. Ø Exemplo abc12 (válido); cont*1 (inválido); 1soma (inválido); a123456 (inválido)

Técnica Funcional: Exemplo Ø Classes de equivalência Condições de Entrada Tamanho t do identificador Classes Válidas Classes Inválidas 1 t 6 (1) t > 6 (2) Primeiro caractere c é uma letra Só contém caracteres válidos Sim (3) Sim (5) Não (4) Não (6) Ø Exemplo de Conjunto de Casos de Teste Ø T 0 = {(a1,válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)} (1, 3, 5) (4) (6) (2)

Exercício de Fixação Ø Projete casos de teste para o seguinte programa, usando o critério Particionamento em Classes de Equivalência: Ø O programa string solicita do usuário um inteiro positivo no intervalo entre 1 e 20 e, então, solicita uma cadeia de caracteres desse comprimento. Após isso, o programa solicita um caracter e retorna a posição na cadeia em que o caracter é encontrado pela primeira vez ou uma mensagem indicando que o caracter não está presente na cadeia.

Análise do Valor Limite Ø Complementa o Particionamento de Equivalência. Ø Fonte propícia a erros os limites de uma classe ou partição de equivalência. Partição de Equivalência Limites

Exercício de Fixação Ø Projete casos de teste para o seguinte programa usando o critério Análise do Valor Limite: Ø O programa string solicita do usuário um inteiro positivo no intervalo entre 1 e 20 e, então, solicita uma cadeia de caracteres desse comprimento. Após isso, o programa solicita um caracter e retorna a posição na cadeia em que o caracter é encontrado pela primeira vez ou uma mensagem indicando que o caracter não está presente na cadeia.