Teste de Software
Introdução
Prof. Vanilson Burégio
[email protected]
Agenda
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
Introdução
Introdução
 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 rejeitados
Falhas podem causar catástrofes (dependendo do SW)
“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]
Objetivo dos testes
Visão de teste
como um processo
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?
Exemplo
 Calculadora do Windows
 5.000 – 5 = 0
O resultado não deveria ser
4095?
Pode parecer confuso para
alguns usuários...
É um defeito? Por que? Por que não?
 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
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
É possível termos
produto errado
funcionando
corretamente
Completude
Ou ainda produto
correto funcionando
inadequadamente
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?
Por que investir em testes?
Visão de negócio:
Custo
Por que investir em testes?
Muitas empresas gastam de 30% a 40% do esforço do
projeto em atividades de teste de software

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
testadores de
software em centros tecnológicos espalhados pelo
mundo
8.000
Casos reais
Great Deal?
 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
Casos 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 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 Myers
Quanto mais cedo menor o custo...
 1979: Glenford Myers ‘The Art of
Software Testing’
 Custo em correção de bugs
10 vezes
cresce
para cada
estágio em que o projeto do
software avança
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...
Quanto devo investir
em teste de
software?
Quanto eu economizo ao
investir em teste de
software?
Retorno de Investimento...
 Rex Black
O retorno do investimento
será maior à medida que
formos investindo em teste
Por que investir em testes?
Visão técnica: ajudar
a garantir qualidade
dos produtos gerados
Dimensões mínimas de qualidade para o
teste de software
Funcionalidade
Performance
Confiança
• O sistema se
comporta
conforme
esperado e
definido nos seus
requisitos
• O sistema tem um
tempo de resposta
adequado e
aceitável mesmo
quando submetido
a um volume alto
de processamento
• 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...
Sistemas
bem
testados
Devem atender
Funcionalidade
Performance
Confiança
•O sistema se
comporta conforme
esperado e definido
nos seus requisitos
•O sistema tem um
tempo de resposta
adequado e
aceitável mesmo
quando submetido
a um volume alto de
processamento
•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.
Discussão
 Essas dimensões de qualidade são suficientes?
 Elas representam o mínimo necessário?
Fonte: The Rational Unified Process, An Introduction
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 9126
Quando parar de testar?
Devemos testar indefinidamente até não
encontrarmos nenhum erro?
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?
Testes abaixo do
necessário
Testes acima do
necessário
Custo do Teste Vs Custo da Falha
Custo 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?
CONCEITOS HISTÓRICOS
Demonstração
- Liberar sistema mesmo correndo riscos
- Garantir que o produto funciona
- Testes feitos pelos desenvolvedores
Década
de 90
Década
de 70
Década
de 60
Prevenção
Detecção
Demonstração
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.
Perguntas
Download

O que é teste de software?