Testes – visão geral Vanilson Burégio.

Slides:



Advertisements
Apresentações semelhantes
Introdução a Algoritmos
Advertisements

Metodologia de testes Nome: Gustavo G. Quintão
Adélia Barros Testes de Software Adélia Barros
Estratégias de Teste de Software
Rational Unified Process
Fundamentos de Engenharia de SW
Débora da Silva Orientadora: Maria Inés Castiñeira
Técnicas de Teste de Software
Teste de Software.
Testando o sistema Teste funcional: o sistema integrado realiza as funções especificadas nos requisitos? Teste de desempenho: os requisitos não-funcionais.
Tópicos Motivação para teste Por que algumas empresas não testam
Rational Unified Process(RUP)
Engenharia de Software
Teste de software Professor: Sílder Lamas Vecchi.
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Teste de Software Geórgenes Zapalaglio
Revisões de Software Parte 1
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Técnicas de Teste de Software
Abordagem Estratégica ao Teste de Software
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
TSDD Teste de segurança durante o desenvolvimento.
Gestão de Defeitos Vanilson Burégio.
Engenharia de Software
Introdução aos conceitos de Teste de Software
RUPinho Qualidade de Software
Prof.Alfredo Parteli Gomes
Gerenciamento de Configuração
Introdução a Computação Trabalho Final PUC Minas – São gabriel
PMBOK 5ª Edição Capítulo 5
Processos de Desenvolvimento de Software – Parte 2
Análise e Projeto de Sistemas
Teste dos Caminhos Básico
Análise e Projeto de Sistemas
Planejamento e Projeto de Testes
Engenharia de Software com o RUP - Workflow de Testes Parte I
PSBD II Projeto de Sistemas de Banco de Dados II
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
Etapas do Projeto DC.IC.15 Data Revisão: 07/04/2017 Início Fim
O Processo de desenvolvimento de software
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
Teste de Software Conceitos iniciais.
O Processo Unificado (UP)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Engenharia de Software II
Gestão de defeitos.
Introdução a Teste de Software
Automação de Testes de Software
Processos de Software.
Processos de Software.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Gestão de projetos de Software GTI-16
Desenvolvimento de Sistemas - Fluxo de Testes
Testes de SW Aula 24.
Engenharia de Software com o RUP - Workflow de Testes Parte II Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba © Centro.
Engenharia de Software
Estimativa, Teste e Inspeção de Software
Verificação e Validação
Qualidade de Produtos de Software
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Estimativa, Teste e Inspeção de Software
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Teste de Unidade. Originalmente esse termo é definido como um teste capaz de analisar uma unidade de trabalho, que a IEEE define como: “Atividade capaz.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Levantamento de Requisitos – Simulação do Supermercado
CMMI Capability Maturity Model Integration
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Testes – visão geral Vanilson Burégio

Roteiro Introdução a testes de Software Tipos de teste; Técnicas de teste; Plano de Teste; Casos de teste; Revisões formais.

Introdução a Testes de Software

O que é testar?

Introdução “O desenvolvimento de sistemas de software envolve uma série de atividades de produção onde oportunidades para injeção de falhas humanas são enormes” [Pressman, 2007] Enquanto existir software existirá erro  Testar um software nada mais é do que descobrir, de forma sistemática, erros embutidos durante a construção deste software

O que é testar? Teste de software é o processo de execução de um produto para determinar se ele atingiu suas especificações e funcionou corretamente no ambiente para o qual foi projetado

Objetivo Revelar falhas em um produto, para que as causas dessas falhas sejam identificadas e possam ser corrigidas pela equipe de desenvolvimento antes da entrega final Testar é um processo de execução de um programa com a intenção de encontrar um erro Um bom caso de teste é aquele que possui uma alta probabilidade de encontrar erros ainda não descobertos Um teste bem sucedido é aquele que realmente descobre um erro ainda não conhecido

Então... Verdadeiro ou Falso? Se eu testei um software e não encontrei erros significa que meu software está correto, ou seja, livre erros! Verdadeiro ou Falso?

Conceitos Básicos Caso de Teste: descreve uma condição particular a ser testada e é composto por valores de entrada, restrições para a sua execução e um resultado ou comportamento esperado Procedimento de Teste: é uma descrição dos passos necessários para executar um caso (ou um grupo de casos) de teste Critério de Teste: serve para selecionar e avaliar casos de teste de forma a aumentar as possibilidades de provocar falhas ou, quando isso não ocorre, estabelecer um nível elevado de confiança na correção do produto Critério de Cobertura dos Testes: permitem a identificação de partes do programa que devem ser executadas para garantir a qualidade do software e indicar quando o mesmo foi suficientemente testado Critério de Adequação de Casos de Teste: avalia se os casos de teste definidos são suficientes ou não para avaliação de um produto ou uma função Critério de Geração de Casos de Teste: define as regras e diretrizes para geração dos casos de teste de um produto que esteja de acordo com o critério de adequação definido anteriormente

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de Software Os defeitos normalmente são introduzidos na transformação de informações entre as diferentes fases do ciclo de desenvolvimento de um software

Tipos de Teste de Software

Tipos de teste de software O planejamento dos testes deve ocorrer em diferentes níveis e em paralelo ao desenvolvimento do software

Tipos de teste de software O planejamento dos testes deve ocorrer em diferentes níveis e em paralelo ao desenvolvimento do software

Tipos de teste de software O planejamento dos testes deve ocorrer em diferentes níveis e em paralelo ao desenvolvimento do software

Tipos de teste de software O planejamento dos testes deve ocorrer em diferentes níveis e em paralelo ao desenvolvimento do software

Tipos de teste de software Teste de Unidade (testes unitários). Tem por objetivo explorar a menor unidade do projeto, procurando provocar falhas ocasionadas por defeitos de lógica e de implementação em cada módulo, separadamente. O universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de código Teste de Integração: visa provocar falhas associadas às interfaces entre os módulos quando esses são integrados para construir a estrutura do software que foi estabelecida na fase de projeto Teste de Sistema: avalia o software em busca de falhas por meio da utilização do mesmo, como se fosse um usuário final. Dessa maneira, os testes são executados nos mesmos ambientes, com as mesmas condições e com os mesmos dados de entrada que um usuário utilizaria no seu dia-a-dia de manipulação do software. Verifica se o produto satisfaz seus requisitos

Tipos de teste de software Teste de Aceitação: são realizados geralmente por um restrito grupo de usuários finais do sistema. Esses simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado. Teste de Regressão: Teste de regressão não corresponde a um nível de teste, mas é uma estratégia importante para redução de “efeitos colaterais” Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Pode ser aplicado em qualquer nível de teste

Técnicas de Teste de Software

Técnicas de teste de software Atualmente existem muitas maneiras de se testar um software Existem as técnicas que sempre foram muito utilizadas em sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje têm grande valia para os sistemas orientados a objeto Apesar de os paradigmas de desenvolvimento serem diferentes, o objetivo principal destas técnicas continua a ser o mesmo: encontrar falhas no software. As técnicas de teste são classificadas de acordo com a origem das informações utilizadas para estabelecer os requisitos de teste. As técnicas existentes são: Técnica funcional (Caixa preta) Técnica estrutural (Caixa branca)

Técnicas de teste de software Teste Estrutural Caixa-branca avalia o comportamento interno do componente de software trabalha diretamente sobre o código fonte do componente de software teste de condição; teste de fluxo de dados; teste de ciclos; teste de caminhos lógicos Complexidade ciclomática exemplo bem prático desta técnica: uso da ferramenta livre JUnit

Técnicas de testes caixa-branca Testes de caminhos lógicos Notação de grafo de fluxo Complexidade ciclomática Derivando casos de teste Matriz de grafo Testes de estrutura de controle Teste de condição Teste de fluxo de dados Teste de loops

Técnicas de teste de software Teste Funcional Caixa-preta o componente de software a ser testado é abordado como se fosse uma caixa-preta não se considera o comportamento interno do mesmo dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido o componente de software a ser testado pode ser: um método, uma função interna, um programa, um componente, um conjunto de programas e/ou componentes ou mesmo uma funcionalidade

Técnicas de teste de software Outras técnicas Outras técnicas de teste podem e devem ser utilizadas de acordo com necessidades de negócio ou restrições tecnológicas teste de desempenho teste de usabilidade teste de carga teste de stress teste de confiabilidade teste de recuperação.

Plano de Testes

Processo de teste Exemplo baseado no RUP (Rational Unified Process) Nosso foco agora!

Plano de testes Objetivo identificar e descrever os testes que serão executados e implementados plano de testes possuirá os requisitos para o teste e as estratégias de teste O projetista de teste é o responsável pelo planejamento dos testes

Planejar testes entrevistas questionários monitoramento de funções Técnicas que asseguram o levantamento adequado de informações desta atividade entrevistas questionários monitoramento de funções

Planejar testes Atividades: Selecionar requisitos a testar Definir prioridades Planejar testes de regressão Definir estratégia dos testes Definir o registro dos resultados dos testes e defeitos descobertos Definir recursos humanos Definir cronograma de testes Realizar checklist

Plano de Testes (ver exemplo de modelo)

Casos de Teste (Projetar Testes)

Processo de teste Exemplo baseado no RUP (Rational Unified Process) Nosso foco agora!

Projetar testes Objetivo Detalhar o projeto dos casos de testes o suficiente para que não haja dúvida ou ambigüidade, de modo que possa ser feitas a implementação e posterior execução

Planejar testes Artefatos de entrada Artefatos de saída Documento de Requisitos Especificação de Casos de Uso Plano de Testes Lições aprendidas Artefatos de saída Modelo de testes Casos de teste Procedimentos de teste

Projetar testes Passos: Identificar casos de teste Descrever casos de teste Identificar casos de teste a serem automatizados Definir massa de dados

Casos de teste Identificar casos de teste Além dos requisitos que serão testados, deve-se definir também quais testes serão realizados para os requisitos selecionados (casos de teste) A identificação dos casos de teste é feita por meio da análise dos fluxos de eventos dos diferentes cenários possíveis para os casos de uso Para cada cenário deve-se ter, no mínimo, um caso de teste correspondente. A análise dos requisitos não-funcionais também deve gerar casos de testes

Projetar testes Descrever casos de teste Este passo tem como objetivo descrever os casos de testes identificados na fase de planejamento. Essa descrição deve conter: Condição inicial para execução: Descrever qual a configuração do ambiente em que esse caso de teste será executado e qual o estado inicial do sistema para que possa ser executado corretamente e outras pré-condições, como "deve existir um cliente cadastrado na base de dados". Passos específicos do teste a ser executado: Passos que devem ser executados para a correta execução do caso de teste. Pode incluir referências a rotinas comuns ou outros casos de teste.

Projetar testes Descrever casos de teste Essa descrição deve conter ainda: Resultados esperados: Quais os critérios de sucesso do teste (pode ser um valor específico ou algo mais genérico, como "Observar que a aplicação montou uma tela contendo a mensagem 'Cadastro realizado com sucesso' e que o banco foi alterado"). Condição final de execução: O estado que o sistema deve estar ao término da execução. Por exemplo, "a execução deste caso de teste deve manter a base de dados inalterada".

Documento de casos de teste (Ver exemplo de modelo)

Revisões formais

Motivação Quando artefatos defeituosos são produzidos.... Custo de desenvolvimento / Esforço Motivação Qualidade Tempo / Produtividade Quando artefatos defeituosos são produzidos.... Geramos retrabalho para corrigir defeitos custo de retrabalho para correção de defeitos aumenta na medida que o processo de desenvolvimento progride Iniciativas devem ser realizadas no sentido de encontrar e corrigir defeitos tão logo sejam introduzidos Uma abordagem que tem se mostrado eficiente nesse sentido: revisão dos artefatos produzidos ao longo do processo de desenvolvimento de software

Inspeção de Software Inspeções de Software nos Diferentes Artefatos Inspeção de software é um tipo particular de revisão que pode ser aplicado a todos os artefatos de software e possui um processo de detecção de defeitos rigoroso e bem definido Inspeções de Software nos Diferentes Artefatos

Inspeção de Software Processo tradicional de inspeção envolve: planejamento da inspeção indivíduos revisando um determinado artefato um encontro em equipe para discutir e registrar os defeitos a passagem dos defeitos para o autor do artefato para que possam ser corrigidos uma avaliação final sobre a necessidade de uma nova inspeção

Exemplo de questão