Teste de Software Introdução Prof. Vanilson Burégio Prof. Vanilson Burégio vanilson@gmail.com.

Post on 18-Apr-2015

107 views 2 download

Transcript of Teste de Software Introdução Prof. Vanilson Burégio Prof. Vanilson Burégio vanilson@gmail.com.

Teste de Software Introdução

Prof. Vanilson Burégiovanilson@gmail.com

Introdução Objetivos Definição

Motivação Por que investir em testes?

Visão de negócio Visão técnica

Quando parar de testar? Custo/benefício

AgendaAgenda

Introdução

IntroduçãoIntroduçã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]

Evolução da profissão de Engenharia de Software Software desempenha um importante papel em

nossas vidas (social e econômica) Sistemas cada vez mais complexos

Aumenta a pressão para foco em questões de qualidade SW de baixa qualidade devem ser rejeitadosFalhas podem causar catástrofes (dependendo do SW)

Objetivo dos testesObjetivo dos testes

O principal objetivo de testar um software é encontrar, de forma sistemática, o maior número

possível de defeitos embutidos durante a construção do software

O que pode ser considerado um defeito?

Visão de teste como um processo

ExemploExemplo

Calculadora do Windows 5.000 – 5 = 0 O resultado não deveria ser

4095? Pode parecer confuso para

alguns usuários...

O “.” (ponto) torna-se uma “,” (vírgula) que é automaticamente assumida como ponto decimal

Para determinar se é um defeito é preciso verificar

a especificação de requisitos do software

É um defeito? Por que? Por que não?

O que é teste de software?O que é teste de software?

Teste de software é o processo de validação e verificação de um

produto para determinar se ele atingiu suas especificações e funcionou corretamente no

ambiente para o qual foi projetado.

Corretude

Completu

de

É possível termos produto errado funcionando corretamente

Ou ainda produto correto funcionando inadequadamente

Então...Então...

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

Verdadeiro ou Falso?

Motivação

Por que investir em testes?

Visão de negócio: Custo

Por que investir em testes?Por que investir em testes?

Por que investir em testes?Por que investir em testes?

Razão: O custo de um Software com falha é muito alto!

Mercado começa a ver teste de software como investimento e não mais como custo

Crescente demanda por analistas de teste de software

A Microsoft tem mais de 8.000 testadores de software em centros tecnológicos espalhados pelo mundo

Muitas empresas gastam de 30% a 40% do esforço do projeto em atividades de teste de softwareMuitas empresas gastam de 30% a 40% do esforço do projeto em atividades de teste de software

Casos reaisCasos reais

Hotel em Orlando Sistema 1 hora no ar com

preço de diária a U$ 1,99 ao invés de U$ 19,90

Great Deal?

Casos reaisCasos reais

Prius Sedan – 2005

Carro híbrido construído pela Toyota;

Erro no software do sistema de controle eletrônico

Poderia fazer o carro entrar em modo de segurança;

Neste modo, o carro poderia paralisar o sistema de controle de combustível;

75.000 proprietários notificados;

Estima-se um prejuízo de U$ 2 bi a U$ 3 bi para correção do problema

Fonte: http://www.spinsp.org.br/

Casos reaisCasos reais

First National Bank of Chicago – Maio de 1996

Atualização do software dos caixas eletrônicos

Nova codificação das mensagens não foi testada em todos os protocolos utilizados nos caixas

Resultado: Crédito de

aproximadamente U$ 925mi na conta de cada um dos 823 clientes;

Aproximadamente U$ 800bi representou o maior erro bancário da história dos EUA

Fonte: http://www.spinsp.org.br/

Regra 10 de MyersRegra 10 de Myers

1979: Glenford Myers ‘The Art of Software Testing’

Custo em correção de bugs

cresce 10 vezes para cada estágio em que o projeto do software avança

Quanto mais cedo menor o custo...

Outras afirmações de Myers...Outras afirmações de Myers...

Os testes unitários podem remover entre 30% e 50% dos defeitos dos programas

Os testes de sistemas podem remover entre 30% e 50% dos defeitos remanescentes

Dessa forma os sistemas podem ir para produção ainda com ~ 49% de defeitos

Revisões de código podem reduzir entre 20% a 30% desses defeitos

Defeitos encontrados no início do projeto custam menos para serem corrigidos

Retorno de Investimento...Retorno de Investimento...

Quanto devo investir em teste

de software?Quanto eu

economizo ao investir em teste de

software?

Retorno de Investimento...Retorno de Investimento...

Rex Black

O retorno do investimento será maior à medida que formos investindo em teste

Visão técnica: ajudar a garantir qualidade

dos produtos gerados

Por que investir em testes?Por que investir em testes?

Dimensões mínimas de qualidade para o teste de software

Dimensões mínimas de qualidade para o teste de software

Funcionalidade•O sistema se comporta conforme

esperado e definido nos seus requisitos

Performance•O sistema tem um tempo de

resposta adequado e aceitável mesmo quando submetido a um volume alto de processamento

Confiança•O sistema é resistente a falhas

durante a execução, isto é, não entra em “loop”, não interrompe a execução por falta de recursos, etc.

Fonte: The Rational Unified Process, An Introduction

Então, no mínimo...Então, no mínimo...

Funcionalidade•O sistema se comporta conforme esperado e definido nos seus requisitos

Performance•O sistema tem um tempo de resposta adequado e aceitável mesmo quando submetido a um volume alto de processamento

Confiança•O sistema é resistente a falhas durante a execução, isto é, não entra em “loop”, não interrompe a execução por falta de recursos, etc.

Fonte: The Rational Unified Process, An Introduction

Sistemas bem

testados

Devem atender

Discussão

Essas dimensões de qualidade são suficientes?

Elas representam o mínimo necessário?

Categorias da qualidade no modelo FURPS+ (desenvolvido pela HP)

Categorias da qualidade no modelo FURPS+ (desenvolvido pela HP)

Functionality (Funcionalidade): representa todo aspecto funcional do software

Usability (Usabilidade): é o atributo que avalia a interface com o usuário [prevenção de erros; estética e design; ajudas (Help) e documentação; consistência e padrões]

Reliability (Confiabilidade): refere-se a integridade, conformidade e interoperabilidade do software.

Performance (Desempenho): avalia os requisitos de desempenho do software

Supportability (Suportabilidade):testabilidade, adaptabilidade, manutenibilidade, compatibilidade, configurabilidade, instalabilidade, escalabilidade, localizabilidade entre outros

FURPS+:O “+” do acrônimo engloba outros requisitos não-funcionais como requisitos de design, de implementação, físico, etc...

ISO 9126ISO 9126

Quando parar de testar?Devemos testar indefinidamente até não

encontrarmos nenhum erro?

Qual o momento certo de interromper o teste?

Qual o momento certo de interromper o teste?

Devido a pressões de prazo os testes são interrompidos muito

antes do tempo necessário para a sua completa cobertura

Devido a uma falta de controle ou a um

excesso de preciosismo exagerou-

se nos testes

Qual o momento certo de interromper o teste?

Qual o momento certo de interromper o teste?

Testes abaixo do necessário

Testes acima do necessário

Custo do Teste Vs Custo da FalhaCusto do Teste Vs Custo da Falha

Custo dos defeitosCusto dos defeitos

Quality Assurance Institute

36% dos erros econtrados são provenientes da codificação

64% são erros de

análise e projeto

Maior parte dos erros estão nas fases onde corrigí-los custa muito menos

Por que os testes mudaram?Por que os testes mudaram?

Demonstração

Detecção

Prevenção

Década de 60

Década de 70

Década de 90Demonstração

- Liberar sistema mesmo correndo riscos- Garantir que o produto funciona- Testes feitos pelos desenvolvedores

Detecção- Descobrir defeitos, erros e

deficiências do software- Definir capacidades e limitações- Fornecer informações sobre a

qualidade dos componentes,Sistemas e outros produtos

Prevenção- Trabalho nas especificações do software- Gerar informações que previnem ou reduzem

os defeitos- Detectar defeitos nas fases iniciais- Identificar riscos e problemas de forma a

evitá-los no futuro- Metodologias, processos, etc.

CONCEITOS HISTÓRICOS

PerguntasPerguntas