Testes Automatizados
de Software
Aula 01
Agenda
Qualidade de Software Definições
Dimensões
Qualidade e Produtividade Por que testar um software
Definições de Teste Motivação
Por que é Difícil Testar um Software? Investimento em Teste de Software
Definições de Qualidade de Software
“O conjunto de características de um produto que
satisfazem uma dada necessidade.” [American
Society for Quality]
“Conformidade com os requisitos.” [Philip Crosby].
“O composto de produto e serviços que atendem às
Dimensões de Qualidade de Software
Funcionalidade: avalia o funcionamento da
aplicação em relação aos cenários de uso.
Usabilidade: avalia a qualidade sob a perspectiva
de adequação da aplicação ao usuário.
Suportabilidade: avalia a aplicação sobre aspectos de manutenção e suporte em produção.
Confiabilidade: avalia a consistência do
comportamento da aplicação.
Performance: avalia a aplicação em situações de
Qualidade e Produtividade
Como obter a qualidade e a produtividade
Qualidade e Produtividade
Métodos de Engenharia de Software Como obter a qualidade e a produtividadeQualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Como obter a qualidade e a produtividadeAjudam a garantir a qualidade do produto produzido como uma consequência de cada passo da engenharia de software
Qualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Padrões e Procedimentos Como obter a qualidade e a produtividadeQualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Padrões e Procedimentos Garantia da Qualidade Como obter a qualidade e a produtividadeQualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Padrões e Procedimentos Garantia da Qualidade Medições Como obter a qualidade e a produtividadeQualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Padrões e Procedimentos Garantia da Qualidade Medições Normas e Modelos de QualidadeDefinem procedimentos para atingir a qualidade. Norma: ISO 15504, ISO 9000-3, ISO 9126
Modelos: CMM e CMMi
Como obter a qualidade e a produtividade
Qualidade e Produtividade
Métodos de Engenharia de Software Revisões Técnicas Formais Padrões e Procedimentos Garantia da Qualidade Medições Normas e Modelos de Qualidade Atividades de Testes Como obter a qualidade e a produtividadeDefinições de Teste
Qual a melhor resposta?
Não há diferença entre testar e debugar
O objetivo do teste é provar que o software
funciona
O objetivo do teste é provar que o software não
funciona
O objetivo do teste não é provar nada, mas sim
reduzir o risco percebido dele não funcionar para um determinado valor
Testar não é um ato e sim uma disciplina mental
Definições de Teste
Qual a melhor resposta?
Não há diferença entre testar e debugar
O objetivo do teste é provar que o software
funciona
O objetivo do teste é provar que o software não
funciona
O objetivo do teste não é provar nada, mas sim
reduzir o risco percebido dele não funcionar para um determinado valor
Testar não é um ato e sim uma disciplina mental
Definições de Teste
Afirmações mais comuns sobre teste de software: Garantir que o programa corresponde à sua
especificação.
Descobrir defeitos de software.
Certifica-se de que o software não faz o que não
está proposto fazer.
Ter a confiança de que o software terá um
desempenho adequado.
Entender o risco existente em liberar um sistema
Definições de Teste
Algumas Definições Formais:
Teste é o processo de executar um software com
o objetivo de verificar se ele satisfaz requisitos específicos e de detectar erros [British Computer Society – SIGST].
Teste é uma atividade direcionada para avaliar
um atributo ou capacidade de um programa ou sistema e determinar se o mesmo satisfaz os resultados requeridos [Hetzel].
Definições de Teste
Algumas Definições Formais (cont.):
Teste é o processo de executar um programa ou
sistema com a intenção de encontrar erros [Myers].
Teste são técnicas de controle da qualidade baseadas na realização de experimentos
controlados [Staa].
Teste é o processo pelo qual se explora e
entende o estado dos benefícios e riscos associados com a versão de um sistema de software [Bach].
Motivações para Teste de Software
Por questão de qualidade
Para buscar a satisfação do cliente através da
conformidade do sistema entregue com os seus requisitos
Por questão de negócio
Para avaliar os riscos para o negócio associados
Motivações para Teste de Software
Por questão de segurança
Para evitar acessos indevidos Por questão de economia
Para diminuir o custo com manutenção corretiva Estatísticas indicam que 32% do tempo de uma
analista é gasto em retrabalho devido à
manutenção corretiva causada por falhas de especificação, projeto ou de implementação
Motivações para Teste de Software
Por questão de confiabilidade
Garantir que defeitos encontrados foram
corrigidos
A confiabilidade, um dos atributos de qualidade
de software, é a probabilidade de que o software não falhe num período de tempo de execução definido e num ambiente especificado.
Por que é Difícil Testar um Software?
O teste pode demonstrar a presença de defeitos,
mas não pode provar que eles não existem
Testar tudo (todas as combinações de entradas e
pré-condições) não é viável, exceto para casos triviais
Teste é um processo caro
Por que é Difícil Testar um Software?
Software é complexo, intangível e altamente
modificável
Teste lida com pessoas (testadores,
desenvolvedores, líderes de projeto, unidade de negócio, . . .)
Preocupação com teste somente na fase final do
projeto
Teste exige: conhecimento, recursos, planejamento,
tempo, compromisso e integração com outras áreas.
Investimento em Teste de Software
Existem vários exemplos onde a falha de um
sistema causa prejuízos diretos (dinheiro) ou indiretos (perda de mercado)
Esses exemplos ocorrem principalmente em
sistemas:
Onde o nível de segurança é crítico Onde o negócio é crítico
Onde as aplicações são críticas
Investimento em Teste de Software
Quando o Teste é considerado como um
investimento surgem perguntas como:
Será possível economizar recursos em algum
ponto para executar as atividades de Teste?
Que tipo de retorno terei sobre o meu
investimento em Testes?
Que tipo de técnicas de teste utilizarei para ter o
maior retorno sobre o investimento realizado?
Investimento em Teste de Software
Quando o Teste é considerado como um
investimento surgem perguntas como (cont.):
Com que tipos de risco eu preciso me
preocupar?
Quando devo investir em testes? Quando devo parar de testar?
De que forma os testes afetam o meu ciclo de
Investimento em Teste de Software
Quanto a Qualidade custa?
Cqualidade = Cconformidade + Cnão-conformidade
Custo da Conformidade: inclui Testes (encontrar
defeitos) e Garantia da Qualidade (prevenção de defeitos)
Custo da Não-Conformidade: inclui corrigir
defeitos, re-teste, imagem da empresa, garantia de contratos, . . .
Investimento em Teste de Software
Investimento em Teste de Software
O retorno de testes pode ser zero ou mesmo
negativo, se:
Gastar esforço em cenários que o usuário nunca
irá utilizar
Corrigir defeitos que o usuário nunca irá perceber
Investimento em Teste de Software
Os melhores investimentos são em testes que
encontrem defeitos que os usuários aprovarão sua correção. Mas para isso, é necessário:
Entender a utilização do sistema pelos usuários Planejar os melhores testes
Relacionar os testes com os maiores riscos dos
Investimento em Teste de Software
Portanto:
Investir em testes pode reduzir de forma
significativa os custos de um software
Porém, só irá obter bons resultados se escolher os
testes corretamente:
Os melhores retornos são aqueles onde os
testes são focados nos maiores riscos
As atividades de teste devem ficar diluídas em