Engenharia de Software II

Slides:



Advertisements
Apresentações semelhantes
Metodologia de testes Nome: Gustavo G. Quintão
Advertisements

ENGENHARIA DE SOFTWARE Garantia de Qualidade de Software
Estratégias de Teste de Software
ISO Processos do Ciclo de Vida do Software
Fundamentos de Engenharia de SW
Técnicas de Teste de Software
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE Métricas de Software Prof.ª Adriana dos Santos Caparróz Carvalho.
Teste de Software.
Tipos de sistemas de Lehman
Identificando requisitos
Análise e Projeto de Sistemas I
Tópicos Motivação para teste Por que algumas empresas não testam
INTRODUÇÃO A INFORMÁTICA
Disciplina:Tópicos Avançados de Sistemas de Informação
Professora: Aline Vasconcelos
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
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
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Princípios e Conceitos de Software(v2)
Principios e Conceitos de Projeto
Engenharia de Software
Engenharia de Software
Introdução aos conceitos de Teste de Software
REDUNDÂNCIA POR SOFTWARE
Cap. 6 – Pressman – Eng. Sistemas
Fundamentos de Engenharia de SW
Introdução a Computação Trabalho Final PUC Minas – São gabriel
Treinamento do Microsoft® Access® 2010
Teste dos Caminhos Básico
Tolerância a Falhas em Sistemas Distribuídos
Engenharia de Software com o RUP - Workflow de Testes Parte I
Teste de Sistemas de Software
Qualidade Qualidade é um dos principais objetivos da Engenharia de Software. Muitos métodos, técnicas e ferramentas são desenvolvidas para apoiar a produção.
Modelos de Processo de Software
PSBD II Projeto de Sistemas de Banco de Dados II
O Processo de desenvolvimento de software
Teste de Software Conceitos iniciais.
Processos.
Testes de Software AULA 02 Eduardo Silvestri
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.
Gestão de defeitos.
Introdução a Teste de Software
Engenharia de Software
RUP - Cap. 4 – Processo Centrado na Arquitetura
Controles Gerais Prof.: Cheila Bombana. Controles Gerais Prof.: Cheila Bombana.
Automação de Testes de Software
Gestão de Projetos de Software
Teste de Sistemas de Software
Fundamentos de linguagens de programação
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Engenharia de Software
Testes de SW Aula 24.
Engenharia de Software
Estimativa, Teste e Inspeção de Software
Profa. Reane Franco Goulart. É uma representação de engenharia de algo que vai ser construído. Para a engenharia de software o projeto foca em quatro.
Engenharia de Software
Gerenciamento de Configuração de Software
Aula 02 de Eng. de Requisitos
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
TÉCNICAS DE ESTIMATIVAS
Estimativa, Teste e Inspeção de Software
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
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
CMMI Capability Maturity Model Integration
Transcrição da apresentação:

Engenharia de Software II Revisão

Estratégias e técnicas de teste de software 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.

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.

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.

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)

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.

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.

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.

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.

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.

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.

Teste de Validação • Começa no fim do teste de integração. – Componentes individuais já foram exercitados. – O software está completamente montado como um pacote. – Erros de interface já foram descobertos e corrigidos. • A validação é bem-sucedida quando o software funciona do modo esperado pelo cliente. – As expectativas razoáveis são as definidas no documento de Especificação de Requisitos do Software. – O documento deve conter uma seção de Critérios de Validação.

Teste de Sistema • O software é apenas um elemento de um sistema maior. – Outros elementos do sistema: hardware, pessoal, dados, sistema operacional. • Uma série de testes de integração e validação do sistema devem ser conduzidos. • Tipos de teste de sistema: – Teste de recuperação. – Teste de segurança. – Teste de estresse. – Teste de desempenho.

Teste de Recuperação • É um teste de sistema que força o software a falhar de diversos modos e verifica se a recuperação é adequadamente realizada. • Se a recuperação é automática: – A reinicialização e a recuperação dos dados são avaliados. • Se a recuperação requer intervenção humana: – O tempo médio para o reparo é avaliado para determinar se está dentro de limites aceitáveis.

Teste de Segurança • Verifica se os mecanismos de proteção incorporados a um sistema vão de fato protegê-lo de: – Hackers que tentam invadí-lo por esporte. – Ex-empregados que tentam invadí-lo por vingança. – Indivíduos que tentam invadí-lo em busca de ganhos pessoais ilícitos. • O testador deve desempenhar o papel do indivíduo que deseja invadir o sistema. – Deve tentar obter senhas de funcionários externos. – Deve tentar tomar o sistema negando serviço a outros. – Deve tentar causar erros no sistema para invadí-lo durante a recuperação. • Com tempo e recursos suficientes, o bom teste de segurança vai acabar invadindo o sistema.

Teste de Estresse • São projetados para submeter programas a situações anormais e verificar se eles ainda funcionam. • Executa o programa de tal forma que demande recursos em quantidade ou freqüência anormais: – A velocidade de entrada de dados pode ser muito aumentada ou diminuída. – A memória do sistema pode ser diminuída. – Casos de teste que podem causar busca excessiva de dados residentes em disco são criados.

Teste de Desempenho • É projetado para testar o desempenho do software durante a execução, no contexto de um sistema integrado. • Requerem instrumentação de hardware e software. – É necessário medir de modo preciso a utilização de recursos (memória, processamento). • Importante para sistemas de tempo real e embutidos.

Técnicas de Teste de Software • Fornecem diretrizes sistemáticas para projetar casos de testes que: – Exercitam a lógica interna e as interfaces de cada componente de software. – Exercitam os domínios de entrada e saída do programa para descobrir erros na função, no comportamento e no desempenho do programa.

Características de Testabilidade • As seguintes características levam a um software testável e devem ser levadas em conta quando ele é construído: – Operabilidade: o software deve ser projetado e implementado com qualidade. – Observabilidade: variáveis devem ser visíveis ou consultáveis durante a execução. – Controlabilidade: variáveis devem poder ser controladas diretamente pelo engenheiro de teste. – Decomponibilidade: módulos independentes podem ser testados independentemente. – Simplicidade: o conjunto de características deve ser o mínimo necessário para atender os requisitos. – Estabilidade: o software se recupera bem de falhas. – Compreensibilidade: a documentação técnica é acessível instantaneamente, bem organizada, específica, detalhada e precisa.

Características do Teste • Um bom teste deve ter os seguintes atributos: 1. Alta probabilidade de encontrar um erro. • O testador deve entender o software. • As diferentes classes de falha devem ser investigadas. 2. Não deve ser redundante. • Tempo e recursos para testes são limitados. • Ex.: testar várias senhas inválidas diferentes é redundante. 3. Não deve ser muito simples nem muito complexo. • Cada teste deve buscar encontrar um tipo de erro.

Testes Caixa-Preta e Caixa-Branca • Testes Caixa-Preta – São conduzidos na interface do software, sem preocupação com a estrutura lógica interna do software. • Testes Caixa-Branca – São baseados em um exame rigoroso do detalhe procedimental. – Caminhos lógicos e colaborações entre componentes são testadas.

Teste Exaustivo (impraticável!) • À primeira vista pode parecer que um teste caixa-branca bastante rigoroso levaria a programas 100% corretos. – “Apenas” seria necessário gerar casos de teste para exercitar toda a lógica do programa. – Exemplo: programa de 100 linhas de código C com dois loops aninhados (de tamanho variável), com quatro if-then-else dentro do loop interno. • 1014 caminhos de execução possíveis. • 3.170 anos para testar todos os caminhos em um computador atual.

Técnicas de Teste Caixa-Branca • Usando métodos de teste caixa-branca, podemos derivar casos de teste que: 1. Garantam que todos os caminhos independentes de um módulo sejam executados pelo menos uma vez. 2. Exercitem todas as decisões lógicas de seu lado verdadeiro e falso. 3. Executem todos os ciclos (loops) nos seus limites e dentro de seus intervalos operacionais. 4. Exercitem as estruturas de dados internas. • Tipos de teste caixa-branca: – Teste de Caminho Básico – Teste de Estrutura de Controle

Teste de Caminho Básico • Permite ao projetista de caso de teste medir a complexidade lógica de um projeto procedimental. – Essa medida é usada como guia para definir um conjunto básico de caminhos de execução. – Casos de teste derivados para exercitar o conjunto básico executam garantidamente cada comando pelo menos uma vez.

Teste de Estrutura de Controle • O teste de caminho básico é simples e altamente eficaz, mas não é suficiente por si só. • Existem outros tipos de testes que focam nas estruturas de controle: – Teste de Condição – Teste de Fluxo de Dados – Teste de Ciclo

Teste de Condição • Exercita todas as condições lógicas contidas em um módulo de programa para garantir que elas não contém erros. – Condição simples: é uma variável booleana ou uma expressão relacional, possivelmente precedida por um NÃO. – Condição composta: duas ou mais condições simples ligadas por um operador OU, E ou NÃO.