Escolar Documentos
Profissional Documentos
Cultura Documentos
de Software
Cidinha Gouveia
cidinha@gotest.biz
http://www.applabs.com/uploads/tool.jpg
2009
SUMÁRIO
CONSEQUÊNCIAS:
- Caos nos aeroportos do Brasil
- greve dos controladores de vôo
- novas leis para companhias aéreas
2005 -> 58 acidentes
http://g1.globo.com/Noticias/Musica/0,,MUL749176-7085,00.html
Hospital Sírio-Libanês apresentou
robô cirúrgico na feira HOSPITALAR 2008
http://www.hospitalar.com/imprensa/not2273.html
Sistemas de software estão cada vez mais presente
em nossas vidas.
Cancelados
Sucesso
D E S A F I O:
• Produto com maior qualidade;
• Baixo custo;
• Menor tempo possível
Cliente feliz
Custos
Custos elevados
• Blackout no
nordeste dos EUA
em 2003
• Afetou mais de 50
milhões de
consumidores
• Milhões de contas
bancárias foram
afetadas
• 2 semanas para
reparar o erro
• Em 1999, a NASA
perdeu um de seus
satélites
• Perda estimada em
Um simples erro de conversão de
$ 125 milhões dados.
Exemplos de falhas encontradas muito tarde
Custos elevados
• Em 1999, uma
pequena cidade em
Ilinois-U.S., comprou
um sistema para
gerenciar a
distribuição de
energia elétrica.
700 vezes maior que a conta
• A cidade recebeu
normal da cidade.
uma conta de $ 7
milhões
Cronograma
O que acontece?
Planejado: Spec. Design Coding Test
Realizado:
Spec. Design Coding Test?
Menores custos
+
Pouco tempo
+
Alta qualidade
=
Satisfação do cliente
Solução da equação
• Exterior:
– Sogeti (Espanha)
– Critical Software (Portugal)
– International Institute of
Software Testing (EUA)
• [testexpert]
Por que teste é necessário?
Notícias de mercado
Por que teste é necessário?
• Mudança de requisitos;
– Complexidade em coordenar mudanças pode
resultar em erros;
– O entusiasmo dos engenheiros de teste pode ser
afetado;
– O gerente deve entender bem os riscos e os
engenheiros de qualidade devem adaptar os planos
para que os bugs inevitáveis não saiam do controle;
• Pressão de tempo
• Mudança da tecnologia.
Por que teste é necessário?
• Ego
– As pessoas preferem dizer: “sem problemas”, “muito
fácil”, à: “isto é muito complexo, pode gerar erros no
final” ou “preciso investigar melhor para dizer quanto
tempo vai levar”.
• Pobre documentação de código;
• Ferramentas de desenvolvimento de software
pode ajudar a adicionar mais bugs devido a pobre
documentação da ferramenta;
Por que teste é necessário?
– Falhas também podem ocorrer devido a
condições ambientais, tais como:
• Radiação;
• Magnetismo;
• Campos eletrônicos;
• Poluição, etc.
Onde estão localizadas as falhas?
Por que teste é necessário?
Software
Problemas!!! Qualidade Testes
com defeitos
• Objetivos gerais:
Encontrar defeitos o quanto antes;
contribuir com a qualidade do software;
garantir que o software está de acordo com os
seus requisitos ou padrões específicos.
Testes Objetivos
Durante o desenvolvimento Causar o máximo de falhas
(componente, integração, sistema) possíveis para que os defeitos
possam ser encontrados e
corrigidos.
Teste de aceitação Confirmar que o sistema trabalha
como esperado para garantir que o
software funciona de acordo com os
requisitos.
Testes de manutenção Certificar que nenhum erro novo foi
introduzido após as mudanças
realizadas no software.
Teste operacional Acessar as caracteristicas do
sistemas tais como: confiabilidade e
disponibilidade.
Sumário
Processo onde:
• Um sistema ou componente é executado sob
condições específicas,
• Os resultados são observados e registrados,
• Uma avaliação é realizada sobre os resultados
O que é teste?
Debug teste
Desenvolvedores Testadores
Não basta testar apenas o que vai dar certo ou apenas o que não vai
dar certo
Teste é uma atividade destrutiva e não construtiva
Quem vai participar do teste deve pensar em como quebrar o
sistema
Teste não garante a ausência de defeitos
O teste reduz a probabilidade da existência de defeitos no software
mas não serve como prova de corretude.
A atividade de teste deve ser iniciada o mais cedo possível.
Quanto antes os defeitos forem encontrados, menores são os custos
do projeto.
Sumário
Michael Bolton
O que é um bug?
• Basketball Movie
Teste x Qualidade
Teste x Qualidade
• Teste e Qualidade
– Os testes podem AJUDAR a medir a qualidade do
software em termos de defeitos encontrados;
93
Abordagem de Teste
1. Teste de Unidade
Interface
Estrutura de dados locais
Módulo Condições de limite
Caminhos independentes
Caminho de tratamento de erros
Casos de teste
Fases de Teste
Teste de Integração
Teste de Integração
• Estratégias:
– Top-down abordagem incremental onde os
módulos são integrados de cima pra baixo.
– Bottom-up abordagem incremental onde os
módulos são integrados de baixo pra cima.
Botton-up
Top-Down
Fases de Teste
Teste de Integração
Top-down
• Vantagens: testar logo as principais funções de controle;
• Desvantagens: necessidade de ter stubs
Bottom-up
• Vantagens: projeto mais fácil de casos de teste e ausência
de stubs.
• Desvantagens: o programa não existe como entidade até
que o último módulo seja adicionado.
Fases de Teste
Teste de Sistema
Busca de defeitos em todo o sistema, totalmente
integrado.
• Foco no ponto de vista do cliente ou usuário final;
• Também usados para estressar aspectos particulares do
sistema: segurança, velocidade, precisão, confiança.
• Normalmente organizações independentes de testes
focam seus esforços em testes de sistema.
Sumário
• Técnicas estáticas
• Técnicas para design de casos de teste
– Baseada na especificação (caixa-preta)
– Baseada na estrutura (caixa-branca)
– Baseada na experiência
Técnicas de Teste
• Técnicas estáticas
• Técnicas para design de casos de teste
– Baseada na especificação (caixa-preta)
– Baseada na estrutura (caixa-branca)
– Baseada na experiência
Técnicas de Teste
•Técnicas Estáticas
Não executam o software que está sendo
testado.
• Pode ser manual (revisões) ou automática
(análise estática).
Técnicas de Teste
Revisões
• Quando?
Podem ser realizadas antes da execução
dinâmica dos testes;
• Por que?
Defeitos podem ser encontrados cedo mais
baratos de serem removidos;
• Atividade principal
Examinar o produto e fazer comentários sobre o
mesmo;
• O que pode ser revisado?
Especificação dos requisitos; design dos testes;
código, plano de teste, casos de teste, scripts
Técnicas de Teste
Revisões
Benefícios:
• Detecção e correção de defeitos cedo;
• Melhoria na produtividade do desenvolvimento;
• Redução no tempo gasto para desenvolvimento;
• Minimização de tempo e custo total;
• Redução de falhas no software;
• Melhoria na comunicação;
• Podem encontrar omissões nos requisitos.
Técnicas de Teste
Revisões
Típicos defeitos encontrados:
• Desvios de padrões;
• Defeito nos requisitos;
• Manutenibilidade insuficiente;
• Especificações incorretas
Técnicas de Teste
• Processo de Revisão
• As revisões podem ser formais ou informais.
Papéis e responsabilidades:
• Líder
• Moderador
• Autor
• Revisor
• Registrador
Técnicas de Teste
Tipos de revisões:
• Revisões Informais
• Walkthrough
• Inspeções
Técnicas de Teste
• Técnicas estáticas
• Técnicas para design de casos de teste
– Baseada na especificação (caixa-preta)
– Baseada na estrutura (caixa-branca)
– Baseada na experiência
Técnicas de Teste
Baseada na especificação
Ex:
• Partição por equivalência
• Análise de valores limites
• Tabelas de decisão / Tabela Causa-Efeito
• Testes derivados de casos de uso
Técnicas de Teste
Grafo de Causa-Efeito
- Causas e efeitos são extraídas das
especificações do sistema;
- Um grafo causa-efeito é gerado;
- A partir do grafo é gerada uma tabela de
decisão;
- Cada caso da tabela representa um caso de
teste.
Técnicas de Teste
Ex.:
• Cobertura e Teste baseado em instruções
• Cobertura e Teste baseado em laços de
decisões
Técnicas de Teste
Baseada na experiência
- Testes são derivados da intuição e
experiência dos testadores;
- O grau de efetividade depende do grau de
experiência do testador;
- Algumas abordagens:
- Error guessing
- Testes exploratórios
Técnicas de Teste
Testes exploratórios
- Deve ser usado para encontrar mais bugs
mais rápido;
- Normalmente utilizada quando:
- Há pouca ou inadequada especificação;
- Pressão de tempo;
- É necessário complementar outra técnica formal
Técnicas de Teste
Error guessing
- Enumera-se uma lista de possíveis defeitos;
- Elabora-se testes para atacar esses defeitos
baseando-se em:
- Experiência do testador;
- Defeitos disponíveis e dados de falhas;
- Conhecimento comum sobre porque o
software falha.
Design x Execução
Testes exploratórios os
testes são produzidos e
executados ao mesmo
tempo, e não são
necessariamente
registrados.
Técnicas Contrastantes
Testes exploratórios
melhorar o design dos
testes.
Teste não significa documentação.
Especificação
Problema Comunicação
Experiência
Problema
Conhecimento de domínio
Reportagem Cobertura
A parte importante de testes não está no seu computador, nem na sua mesa
Desenvolva sua mente científica
Desenvolva sua mente científica