Engenharia de Software II

Documentos relacionados
Unidade 4 Teste na Implantação do Sistema

Engenharia de Software II

Testes de Software. Prof: Sérgio Portari

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

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

Verificação e Validação

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

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

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

Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciências da Computação SIMONE MOREIRA CUNHA

6 IMPLEMENTAÇÃO E TESTES

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

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

Engenharia de Software II

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

Engenharia de Software

Engenharia de Software. Princípios da Engenharia de Software. Princípios da 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

ENGENHARIA DE SOFTWARE

Teste de Software. Karen Frigo Busolin Novembro / 2010

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Engenharia de Software II

Processos de Software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

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

Leitura: Cap : Sommerville; cap20: Pressman

Engenharia de Software

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

Ferramentas CASE. CASE fornece ao engenheiro de software a habilidade de automatizar atividades manuais e de aperfeiçoar o conhecimento de engenharia.

Guia do Processo de Teste Metodologia Celepar

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

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

Teste de Software. Introdução. Teste de SW -Introdução. Verificação e Validação

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

ISO/IEC 12207: Manutenção

Tarefas de Gerenciamento de Configuração

Manutenção Leitura: Sommerville; Pressman

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

MODELOS DE PROCESSOS (PARTE 2)

Introdução a Teste de Software

Processos de software

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

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

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO

Engenharia de Software II

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

Engenharia de Software

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

Desenvolvimento de Projetos

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

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

METODOLOGIAS ÁGEIS FEATURE DRIVEN DEVELOPMENT E AUP

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

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

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Engenharia de Software

ISO/IEC Processo de ciclo de vida

Princípios da Engenharia de Software aula 03

Projeto de Arquitetura

Estratégias de Testes Parte I

Definições e ciclo de vida

Gerenciamento de Configuração de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

SSC 0721 Teste e Validação de Software

Capítulo 2 - Processos de Software

CICLO DE VIDA DO SOFTWARE. Nas empresas também é difícil adotar apenas um ciclo de vida, na maioria das vezes possui mais de um.

Engenharia de Software. Herbert Rausch Fernandes

Reengenharia de Software

ARQUITETURA E DESENHO

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

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

Testes de Software. Prof. Edjandir C. Costa

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

- 6ª Lista de Exercícios -

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

CONCEITOS BÁSICOS E MODELO DE PROJETO

Estimativa de Esforço. Estimativas de Software. Subjetividade da Estimativa. Incerteza de Estimativa. Técnicas de Estimativas

Visão Geral do RUP (Rational Unified Process)

Modelos de Processo de Software. Profª Jocelma Rios

Reuso de Software Aula Maio 2012

Transcrição:

Engenharia de Software II Aula 7 http://www.ic.uff.br/~bianca/engsoft2/ Aula 7-12/05/2006 1

Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do Pressman) Métricas para software Gestão de projetos de software: conceitos, métricas, estimativas, cronogramação, gestão de risco, gestão de qualidade e gestão de modificações Reengenharia e engenharia reversa Aula 7-12/05/2006 2

Uma Estratégia Global para Arquiteturas Convencionais 1. Teste de unidade Focaliza cada componente individualmente, garantido que funciona. Faz uso intensivo de técnicas que exercitam caminhos específicos na estrutura de controle. 2. Teste de integração Focaliza o pacote de software completo e trata da verificação do programa como um todo. Faz uso de técnicas de projeto de casos de teste que enfocam as entradas e saídas, além de exercitar caminhos específicos. 3. Teste de validação Critérios de avaliação estabelecidos durante a análise de requisitos são avaliados. 4. Teste de sistema Testa a combinação do software com outros elementos do sistema (como hardware, pessoal e bancos de dados). Verifica se a função/desempenho global do sistema é alcançada. Aula 7-12/05/2006 3

Procedimentos de Teste de Unidade O projeto de teste pode ser realizado: Antes que o código seja iniciado (abordagem ágil) Depois que o código-fonte tenha sido gerado. Uma revisão da informação de projeto fornece diretrizes para o estabelecimento de casos de teste. Cada caso de teste deve ser acoplado a um conjunto de resultados esperados. Aula 7-12/05/2006 4

Ambiente de Teste de Unidade Um pseudocontrolador (driver) deve ser criado para cada unidade. Programa principal que aceita dados do caso de teste, passa os dados para o componente e imprime os resultados. O pseudocontrolado (stub) substitui um sub-módulos que é chamado pelo módulo sendo testado. Faz o mínimo de manipulação de dados necessário. Casos de teste Módulo a ser testado RESULTADOS Pseudocontrolador Pseudocontrolado Pseudocontrolado Aula 7-12/05/2006 5

Procedimentos de Teste de Unidade Pseudocontroladores e pseudocontrolados são despesas indiretas. Precisam ser escritos mas não são entregues. Há situações em que não há recursos para fazer testes de unidades abrangentes. Nesse caso, deve-se selecionar alguns módulos críticos e mais complexos. Aula 7-12/05/2006 6

Teste de Integração Mesmo que todos os módulos estejam funcionando individualmente, não se pode garantir que eles funcionarão em conjunto. Dados podem ser perdidos na interface Imprecisão aceitável individualmente pode ser amplificada Estruturas de dados globais podem apresentar problemas Teste de integração é uma técnica sistemática para construir a arquitetura do software enquanto se conduz testes para descobrir erros. Aula 7-12/05/2006 7

Abordagens de Integração Abordagem big-bang Todos os componentes são combinados com antecedência. O programa inteiro é testado d uma vez. Usualmente resulta em caos! A correção é difícil, porque fica complicado isolar as causas dos erros. Uma vez corrigidos os erros, novos erros aparecem. Aula 7-12/05/2006 8

Abordagens de Integração Integração incremental É a antítese da abordagem big-bang. O programa é construído e testado em pequenos incrementos. Erros são mais fáceis de isolar e corrigir. Pode ser aplicada uma interface sistemática de testes. Há várias estratégias incrementais de integração. Integração descendente Integração ascendente Teste de regressão Teste fumaça Aula 7-12/05/2006 9

Integração Descendente Na integração descendente (top-down) os módulos são integrados movendo-se de cima para baixo na hierarquia de controle. Começa pelo módulo de controle principal. Os módulos subordinados são incorporados à estrutura de uma de duas maneiras: Primeiro-em-profundidade (depth-first) Primeiro-em-largura (breadth-first) Aula 7-12/05/2006 10

Integração Ascendente Primeiro-em-profundidade 1 M 1 2 6 8 M 2 M 3 M 4 3 5 7 M 5 M 6 M 7 4 M 8 Aula 7-12/05/2006 11

Integração Ascendente Primeiro-em-largura 1 M 1 2 3 4 M 2 M 3 M 4 5 6 7 M 5 M 6 M 7 8 M 8 Aula 7-12/05/2006 12

Passos de Integração Descendente 1. O módulo de controle principal é usado como pseudocontrolador do teste. Pseudocontrolados substituem todos os componentes diretamente subordinados ao principal. 2. Os pseudocontrolados são substituídos, um de cada vez, pelos componentes reais. 3. Testes são conduzidos à medida que cada componente é integrado. 4. Ao término de cada conjunto de testes, outro pseudocontrolado é substituído pelo componente real. 5. O teste de regressão pode ser conduzido para garantir que novos erros não tenham sido introduzidos. Aula 7-12/05/2006 13

Desvantagem da Integração Descendente O processamento nos níveis baixos da hierarquia pode ser necessário para testar adequadamente os níveis superiores. Como são usados pseudocontrolados, nenhum dado significativo flui para cima na estrutura do programa. Três soluções são possíveis: Adiar alguns testes Desenvolver pseudocontrolados mais complexos Integrar o software de baixo para cima: integração ascendente. Aula 7-12/05/2006 14

Integração Ascendente Na integração descendente (bottom-up) os módulos são integrados movendo-se de baixo para cima na hierarquia de controle. Inicia a construção e teste pelos módulos atômicos. Elimina a necessidade de pseudocontrolados complexos. Aula 7-12/05/2006 15

Passos da Integração Ascendente 1. Componentes de baixo nível são combinados em agregados (clusters), que realizam uma subfunção específica. 2. Um pseudocontrolador é escrito para coordenar a entrada e a saída do caso de teste. 3. O agregado é testado. 4. Pseudocontroladores são removidos e agregados são combinados movendo-se para cima na estrutura. Aula 7-12/05/2006 16

Integração Ascendente M c M b M a P 1 P 2 P 3 Agregado 2 Agregado 3 Agregado 1 Aula 7-12/05/2006 17

Integração Ascendente vs. Descendente Integração Descendente Desvantagem: necessidade de pseudocontrolados. Vantagem: testar logo as principais funções de controle. Integração Ascendente Desvantagem: o programa como um todo não é testado até o final. Vantagem: ausência de pseudocontrolados e projeto de casos de teste facilitados. A seleção de uma das abordagens depende das características do software e do projeto. Uma abordagem combinada pode ser o melhor compromisso. Testes descendentes para níveis mais altos. Testes ascendentes para os níveis subordinados. Aula 7-12/05/2006 18

Teste de Regressão Toda vez que um novo módulo é adicionado como parte do teste de integração, o software se modifica. Novos caminhos de fluxos de dados são estabelecidos. Nova E/S pode ocorrer. Nova lógica de controle é adicionada Essas modificações podem ser causadas problemas com funções que previamente funcionavam corretamente. O teste de regressão é a re-execução de algum subconjunto de testes que já foi conduzido para garantir que as modificações não introduzam efeitos colaterais indesejáveis. Aula 7-12/05/2006 19

Teste de Regressão Pode ser conduzido manualmente ou usando ferramentas automatizadas de captação/reexecução. Permitem ao engenheiro de software captar casos de teste e resultados para reexecução e comparação. À medida que o teste de integração prossegue, o número de testes de regressão pode crescer significativamente. A suíte de testes de integração deve ser projetada para incluir apenas testes que cuidam das principais funções do programa. Aula 7-12/05/2006 20

Módulos Críticos Um módulo crítico tem uma ou mais das seguintes características: Aborda vários requisitos do software. Está num alto nível da estrutura de controle. É complexo ou propenso a erro. Tem requisitos de desempenho bem definidos. Módulos críticos devem ser testados tão cedo quanto possível. Testes de regressão devem ser focados na função de módulos críticos. Aula 7-12/05/2006 21

Teste Fumaça É uma estratégia de integração constante. O software é reconstruído e testado diariamente para dar aos gerentes e desenvolvedores uma avaliação realística do progresso. Aula 7-12/05/2006 22

Atividades do Teste Fumaça 1. Componentes de software são integrados em uma construção. Inclui todos os dados, bibliotecas, módulos reusáveis e componentes que são necessários para implementar uma função do produto. 2. Uma série de testes é projetada para expor erros que impeçam a construção de desempenhar adequadamente a sua função. Propósito principal: descobrir erros bloqueadores que tem a maior chance de atrasar o cronograma. 3. A construção é integrada com outras construções e o produto inteiro é testado diariamente. Pode ser usada uma abordagem descendente ou ascendente. Aula 7-12/05/2006 23

Benefícios do Teste Fumaça O risco de integração é minimizado. Incompatibilidades e outros erros de bloqueio são descobertos logo no início, evitando impactos no cronograma. A qualidade do produto final é aperfeiçoada. Descobre tanto erros funcionais quanto defeitos de projeto arquitetural. Diagnóstico e correção de erros são simplificados. O software que acabou de ser adicionado às construções é uma causa provável do erro recém-descoberto. Progresso é fácil de avaliar. A cada dia que passa, mais é integrado ao software e mais se pode demonstrar que ele funciona. Aula 7-12/05/2006 24

Documentação do Teste de Integração Documento de especificação de teste Plano de teste global para integração do software Descrição dos testes específicos É um produto de trabalho e torna-se parte da configuração de software. Aula 7-12/05/2006 25

Teste de Integração no Contexto Orientado a Objetos Não há uma estrutura óbvia hierárquica. Estratégias de integração ascendente e descendente perdem o significado. Há duas estratégias existentes para o contexto OO: Teste baseado no caminho de execução Integra o conjunto de classes necessárias para responder a uma entrada ou evento do sistema. Teste baseado no uso Começa a construção do sistema testando as classes que usam poucas (ou nenhuma) classes servidoras. Pseudocontroladores podem ser usados para testar operações no mais baixo nível e testar grupos inteiros de classes, e para substituir a interface com o usuário. Pseudocontrolados podem ser usados em situações nas quais a colaboração entre classes é necessária. Aula 7-12/05/2006 26