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?