Buscar

Aula 18 - Parte 1 - Teste de Software



Continue navegando


Prévia do material em texto

Teste de Software
Introdução
Cenário
Por que testar?
• Errar é humano
– Problemas de comunicação 
– As pessoas não conhecem e não dominam tudo
• Prazo insuficiente (Pressão no prazo de 
entrega)
• Mudanças de última hora
• Importante: 
– Testes NÃO evitam falhas
O que é teste de software?
Glen Myers (1979)
• Teste é um processo de desenvolvimento de 
software com a finalidade de encontrar erros
• Um bom caso de teste é aquele que tem alta 
probabilidade de encontrar um erro
• Um teste bem-sucedido é aquele que 
descobre um erro ainda não descoberto
É preciso ter uma equipe de teste de 
software?
Quando preciso testar?
Motivação
• Erros humanos 
• O processo de testes faz parte da garantia de 
qualidade de software (SQA)
• Os custos associados às falhas de software 
justificam um processo de testes cuidadoso e 
bem planejado
Erro – Defeito (bug) – Falha
• Erro (error): é uma ação humana que produz um
resultado incorreto
• Defeito (evidenciado ou não) é um estado do
software, causado por um erro
• Falha (evento) diverge entre o comportamento 
requerido para o sistema e o comportamento real
Bug de Software
• Primeiras referencias ao termo bug de software
– Uma “mariposa” presa nos contatos de um relê foi a causa 
do mau funcionamento no computador Mark II
– “Mariposas” que ficavam nas válvulas do ENIAC
Você confia no que faz?
Garanta o que você faz
• Cliente:
– Isso aqui não esta 
funcionando!
• Programador:
– Como? Na minha máquina 
estava funcionando ontem.
Garanta o que você faz
Depois eu escrevo 
o plano de testes
Garanta o que você faz
Depois eu escrevo 
o plano de testes
Garanta o que você faz
Vamos deixar os 
testes pra depois.
Garanta o que você faz
Vamos deixar os 
testes pra depois.
Garanta o que você faz
Temos que entregar o 
software na semana 
que vem.
Garanta o que você faz
Temos que entregar o 
software na semana 
que vem.
Sobre o cliente
• O cliente não quer saber se X virou Y. Ele quer 
que o problema não aconteça e se acontecer 
que seja corrigido rapidamente.
• Não se consegue qualidade e confiabilidade 
sem testes.
Finalidade dos testes
• Verificar se todos os requisitos do sistema 
foram corretamente implementados
• Assegurar, na medida do possível, a qualidade 
e a corretude do software produzido
• Reduzir custos de manutenção corretiva e 
retrabalho
• Assegurar a satisfação do cliente com o 
produto desenvolvido
Finalidade dos testes
• Produzir casos de teste que têm elevada 
probabilidade de revelar um erro ainda não 
descoberto com uma quantidade mínima de 
tempo e esforço
• Comparar o resultado dos testes com os 
resultados esperados a fim de produzir uma 
indicação da qualidade e da confiabilidade do 
software
• Verificar a correta integração entre todos os 
componentes de software
Lei fundamental do teste de software
“Teste mostra a presença de erros, não sua 
ausência” – E. Dijkstra
Como testar?
Atividades de testes
Processo de teste
• Definição
– Um processo de teste define atividades e práticas 
usadas para se testar um software, assim como 
artefatos usados nas atividades. Considerando 
que a qualidade do processo de teste tem relação 
direta com a qualidade final do produto 
desenvolvido.
• Objetivo
– Definir como os testes serão planejados e 
executados através de atividades e passos.
Processo de teste
• Quando bem planejado e controlado
– Otimiza o esforço e tem maior eficácia
É impossível provar a ausência total de erros!
O que testar?
A importância dependerá do software 
sob teste
Verificação e Validação
• Testes são técnicas dinâmicas de Verificação e 
Validação (V&V)
• Outras técnicas de V&V
– Revisões técnicas formais
– Métricas de software
– Simulação
V&V
• Verificação: Estamos construindo o produto
corretamente?
– (Are we building the product right?)
• Validação: Estamos construindo o produto
correto?
– (Are we building the right product?)
Teste de Software
técnicas, estágios e tipos de testes
Teste caixa branca
• Abordagem estrutural (“caixa 
branca”) 
– Pode ser realizado durante 
todo o ciclo de vida (inclusive 
no início)
– Os testes são gerados a partir 
de uma análise dos caminhos 
lógicos possíveis de serem 
executados, de modo a 
conhecer o funcionamento 
interno dos componentes do 
software.
• Abordagem funcional 
(“caixa preta”)
– Aplicado no final do 
processo de 
desenvolvimento
– Os testes são gerados a 
partir de uma análise dos 
relacionamentos entre os 
dados de entrada e 
saída, com base nos 
requisitos levantados 
com os usuários.
Teste caixa preta
Sistema
Dados de Entrada
Dados de Saída
Teste caixa preta
• Foco nos requisitos funcionais
• Principais erros a serem encontrados:
– Funções incorretas ou omitidas
– Erros de interface
– Erros de estrutura de dados
– Erros de acesso a base de dados
– Erros de comportamento
– Erros de desempenho
– Erros de iniciação
– Erros de término 
Exemplos de teste caixa preta
• Usar como data de nascimento uma data futura
• Deixar campos de entrada vazios
• Usar números negativos para valor a pagar
• Não respeitar tipos de dados
– usar letras para campos de idade
• Duplicar informações: 
– tentar cadastrar duas vezes as mesmas entradas
Quais questões o teste caixa-preta 
tenta responder?
• Como a validade funcional é testada?
• Como o comportamento e o desempenho é testado? 
• Que classes de entrada farão bons casos de teste? 
• O sistema é particularmente sensível a certos valores? 
• Que taxas e volumes de dados o sistema pode tolerar?