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

Documentos relacionados
ENGENHARIA DE SOFTWARE

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

Testes de Software. Prof. Edjandir C. Costa

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11

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

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

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

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

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

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

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Atividades de Desenvolvimento. Desenvolvimento de Software. Especificação de Requisitos. Atividades de Desenvolvimento. Especificação de Requisitos

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

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

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

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

Verificação e Validação

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

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

VERIFICAÇÃO & VALIDAÇÃO

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

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

Processos de software

Capítulo 8 Teste de Software 1

Verificação e Validação

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

Engenharia de Software

Capítulo 8. Testes de Software Pearson. Todos os direitos reservados. slide 1

Engenharia de Software

Introdução a Teste de Software

Teste de Software. Proj. Desenvolvimento de Software. Prof. Cleverton Hentz. 30 de agosto de Material Apresentado

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

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

Teste de Software. Professor Maurício Archanjo Nunes Coelho

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

Processos de Software

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Processos de Software

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

Princípios da Engenharia de Software aula 03

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

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

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

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

Introdução aos Testes de Software

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

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

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

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Introdução a Engenharia de Software

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

Guia do Processo de Teste Metodologia Celepar

Processo de Desenvolvimento. Edjandir Corrêa Costa

Verificação e Validação

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Teste de Software. Karen Frigo Busolin Novembro / 2010

TS02. Teste de Software INTRODUÇÃO AO PROCESSO DE TESTE DE SOFTWARE. COTI Informática Escola de Nerds

Qualidade de software. Prof. Emiliano Monteiro

Testes de Software. Prof: Sérgio Portari

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

Reuso de Software Aula Maio 2012

Testes de software - Teste funcional

ENGENHARIA DE SOFTWARE

Engenharia de Software II

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Agenda da Aula. Melhoria do Processo de Software. Por que melhorar o processo? De onde veio a idéia? Qualidade do Produto. Qualidade de Software

Engenharia de Software

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

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Teste de Software Básico

Aula 2 Processo de Software

Estágio II. Aula 04 Testes Ágeis. Prof. MSc. Fred Viana

Processos de Software

Metodologias de Teste de Software

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

Engenharia de Requisitos

Engenharia de Software

Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil

Verificação e validação

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Aula 1: Apresentação. Revisão para Prova 1. Aula 2: Motivação. O que é software? Eng. de Software em Camadas. O que é Engenharia de Software?

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

Fundamentos de Teste de Software

Desenvolvimento Ágil de Software

Engenharia de Software II

05/09/2013. Ciclo de vida de um Sistema de Informação

ENGENHARIA DE SOFTWARE O QUE SÃO TESTES? TESTES TESTES TESTES 26/08/2014. São pontuais; São previsíveis; São finitos;

Capítulo 2 - Processos de Software

Qualidade, Verificação e Validação

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Processos de. Desenvolvimento de Software

Modelos de Processo de Software. Profª Jocelma Rios

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Reutilização de Software

7. Testes de Software

Garantia de Qualidade

Transcrição:

Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto de Software 3. Implementação 4. Verificação e Validação 5. Evolução de software Onde estamos... 1. Especificação de requisitos 2. Projeto de Software 3. Implementação 4. Verificação e Validação 5. Evolução de software Tópicos da Aula Verificação e Validação Inspeção de Software Teste de Software Projeto de Casos de Teste Testes de Software Verificação x Validação Testes podem somente revelar a presença de defeitos, não a ausência Dijkstra Testes fazem parte do processo de verificação e validação (V&V) Devem ser usados em conjunto com a verificação estática (inspeção) Verificação Verifica se o software atende aos requisitos funcionais e não funcionais especificados Estamos construindo o produto corretamente? Validação Procura assegurar que o sistema atenda as expectativas e necessidades do cliente Estamos construindo o produto correto?

Níveis de Confiabilidade Finalidade do Sistema Objetivo da V&V Estabelecer a confiança de que o software está pronto para ser usado O nível de confiabilidade de software depende Do próprio sistema Das expectativas dos usuários Do ambiente de mercado Sistema Crítico O nível de confiança é muito maior O software deve ser confiável Protótipo O nível de confiança é menor O software pode falhar Expectativa de Usuários Usuários podem já estar acostumados com software de baixa qualidade Usuários tendem a aceitar falhas quando os benefícios superam as desvantagens A tolerância a falhas dos usuários diminuí a medida que o software amadurece Ambiente de Mercado Sistemas comerciais devem levar em conta os programas concorrentes Quando não há concorrência O sistema pode ser liberado mais cedo pelo pioneirismo V&V pode não ter sido bem feita Quando clientes não querem pagar caro pelo produto Eles geralmente aceitam alguns defeitos Verificação e Validação Teste de Validação e Teste de Defeito Tem por objetivo garantir que o sistema satisfaça os requisitos Consiste da realização de testes para encontrar erros A inexistência de erros não representa a adequação operacional do sistema Deve ser feita a validação com o cliente

Teste de Validação Pretende mostrar que o software atende aos seus requisitos Faz o que o cliente deseja Um teste bem sucedido mostra que o requisito foi implementado Podem ser usados testes estatísticos para garantir desempenho e confiabilidade Teste de Defeito Destinado a revelar defeitos no sistema Um teste de defeitos bem sucedido é aquele que revela defeitos no sistema Não há uma distinção rígida entre Teste de Validação e Teste de Defeito Modelo de Entrada e Saída Inspeção e Depuração Sistema é uma caixa preta Técnicas de V&V A aplicação de testes de software é a maneira mais comum de se verificar se o programa atende a sua especificação Testes são apenas uma técnica de V&V Para complementar os testes, é comum o uso de inspeção de software ou revisão por pares Inspeções e Revisões Técnica estática de V&V Pode ser usada em qualquer atividade de desenvolvimento Requisitos, projeto, código fonte, etc. Pode ser semi-automatizada por análise estática Análise não automatizada é cara

Testes de Software Verificação Estática e Dinâmica Teste é uma técnica dinâmica de V&V Consiste em executar uma implementação com dados de teste Além de verificar as saídas, pode ser usada para avaliar requisitos não funcionais Especificação de Requisitos Protótipo Projeto de Arquitetura Inspeção de Software Projeto Detalhado Programa Testes de Software Desempenho, confiabilidade, segurança, etc. Vantagens da Inspeção Limitações de Inspeção Muitos defeitos diferentes podem ser descobertos em uma única inspeção Um teste revela um defeito e oculta vários Versões incompletas do sistema podem ser inspecionadas Permite encontrar problemas em outros atributos de qualidade do software Uso de um algoritmos mais eficiente, padrão de projeto, etc. Técnicas de inspeção podem somente verificar a correspondência entre o software e sua especificação Não permite validar com o cliente Inspeção não é adequada Para demonstrar se o software é útil Para verificar requisitos não funcionais, como desempenho, segurança, etc. V&V x Depuração V&V e depuração de defeitos são atividades distintas Depuração e Testes Depuração e testes costumar ser atividades cíclicas e intercaladas V&V está associada a constatação da existência de defeitos no programa Localizar Erro Projetar Reparo Depuração está relacionado à localização desses defeitos Re-testar Reparar Erro

Atividades e Recursos Resultados dos testes apóiam a localização de defeitos A especificação do sistema deve ser usada para projetar o reparo Testes automatizados facilitam a atividade de re-restar Processo de Testes Dos Requisitos ao Teste O Modelo V Verificação e validação deve ocorrer durante e depois do desenvolvimento V&V ocorre em todas as atividades de desenvolvimento Começa com revisões de requisitos Revisões de arquitetura e projeto Inspeções de código Modelo que integra o desenvolvimento aos testes É fortemente baseado no Modelo Cascata Os planos de testes são derivados das atividades de desenvolvimento O Modelo V Processo de Teste Dados de teste, podem ser gerados automaticamente As saídas dos testes somente podem ser previstas por pessoas que conhecem o domínio de negócio

Algumas Políticas de Teste Estágios de Teste Todas as funções acessadas por menus devem ser testadas As combinações de funções dos mesmos menus devem ser testadas As funções devem ser testadas com entradas corretas e incorretas Testes de Desenvolvimento O sistema é testado durante o desenvolvimento (descobrir bugs) Testes de Release Equipe independente testa uma versão completa do sistema (verificar os requisitos) Testes de Usuário Usuários testam o software no ambiente real (aceitação do produto) Classificação Testes de Desenvolvimento Classificação dos testes de desenvolvimento Teste Unitário Teste de Componente (integração) Teste de Sistema Teste Unitário Teste de Classe (OO) Objetivo é garantir que uma classe funciona Testa classes individuais de programa Geralmente é de responsabilidade do próprio desenvolvedor da classe Os testes são derivados da experiência do desenvolvedor O teste completo de uma classe de objetos requer Teste de todas as operações associadas com um objeto Atribuir e obter valores a todos os atributos de objeto Exercício do objeto em todos os estados possíveis A herança dificulta o teste de classe

Teste de Componente Testes e Integração Incremental O objetivo é garantir que dois ou mais componentes funcionam juntos Testa grupos de componentes integrados para criar um sistema ou um subsistema A responsabilidade é de uma equipe independente de teste Os testes são baseados em uma especificação de sistema Tipos de Testes de Integração Teste de Sistema Integração top-down Desenvolver o esqueleto do sistema e preenchê-lo com componentes Integração bottom-up Integrar componentes de infra-estrutura e, depois, adicionar componentes funcionais Testa uma release de sistema que será entregue ao cliente O objetivo é aumentar a confiança do fornecedor de que o sistema atende aos seus requisitos Teste funcional (caixa-preta) Baseado somente na especificação Testadores não conhecem a implementação Diretrizes do Teste Caixa-Preta Escolher entradas que forcem o sistema a gerar as mensagens de erro Teste de Release Projetar entradas que causem estouro de pilha Forçar a geração de saídas inválidas Forçar resultados de cálculo a serem muito grandes ou muito pequenos

Testes e Casos de Uso Testes de Desempenho e Estresse Casos de uso podem ser uma base para derivar os testes de um sistema Ajudam a identificar as operações a serem testadas Ajudam no projeto dos casos de teste As entradas e saídas podem ser identificadas em um Diagrama de Sequência do caso de uso Testes de desempenho 1. Planejamento de uma série de testes 2. A carga é constantemente aumentada 3. Verifica o limite em que desempenho do sistema se torne inaceitável Testes de estresse forçam o sistema além de sua carga máxima de projeto Métodos Ágeis e Testes O teste é inseparável do desenvolvimento em alguns métodos ágeis (exemplo: XP) Desenvolver primeiro os testes Uso de ferramentas para testes automatizados Envolvimento do cliente na escrita e validação dos testes, etc. Projeto de Casos de Teste Projeto de Testes Teste Baseado em Requisitos Objetivo é é criar um conjunto de testes que sejam eficazes em validação e teste de defeitos Envolve a definição de entradas e saídas usadas pelos casos de teste Abordagens de projeto de teste Teste baseado em requisitos Teste de partições (das entradas) Teste estrutural Técnica de teste de validação Considerando cada requisito, deriva-se um conjunto de testes Os requisitos devem ser testáveis

Teste de Partições Dados de entrada e resultados de saída podem ser particionado O programa se comporta de maneira equivalente para cada partição Casos de teste devem ser escolhidos a partir de cada partição Diretrizes do Teste de Partições Testar o software com sequências de comprimento zero Testar com sequências de tamanhos extremos: um único valor e número máximo Usar sequências de tamanhos diferentes em testes diferentes Derivar testes de tal modo que o primeiro, o médio e o último elementos da sequência sejam testados Exemplos de Partições Teste Estrutural Frequentemente chamado de teste caixa-branca A derivação de casos de teste ocorre de acordo com a estrutura do programa O conhecimento do programa é usado para identificar casos de teste O objetivo é exercitar todas as declarações do programa Teste de Caminho O objetivo é assegurar cada caminho pelo programa é executado pelo menos uma vez 1 Ponto de partida do teste de caminho é um fluxograma de 2 programa 1 2 3 4 5 6 1 2 3 6 4 5 3 6 Resumo da Aula Verificação e validação não são a mesma coisa Verificação mostra a conformidade com a especificação Validação mostra que o programa atende às necessidades do cliente Em inspeções, o código de programa é sistematicamente verificado

Resumo da Aula Os testes podem mostrar a presença de defeitos em um sistema Eles não podem provar que não há defeitos remanescentes Bibliografia da Aula Ian Sommerville. Engenharia de Software, 9ª Edição. Pearson Education, 2011. Cap. 8 Testes de Software Diferentes tipos de testes Teste de Validação, Teste de Defeito, Teste de Componente, Teste de Sistema, Teste Estrutural, etc. Próxima aula... Laboratório 2011 e 2012 Tópico Implementação Possivelmente: teste de software (JUnit)