SlideShare uma empresa Scribd logo
Kildery Sukar
System Engineer
Modular Mining Systems
E-mail: sukar@mmsi.com
www.modularmining.com
Roteiro
– O que é teste de software?
– Por que é necessário testar?
– Princípios de Teste de Software
– Processos de Teste de Software
– Níveis de Teste
– Informações complementares
O que é teste de software?
• Execução de Software
O que é teste de software?
• É analisar um programa com a intenção de descobrir
erros e defeitos.(Glenford Myers)
• É um processo que consiste de todo o ciclo de
atividades (estáticos e dinâmicos), voltadas para o
planejamento, preparação e avaliação do produto de
software, está relacionado em determinar se o
produto satisfaz os requisitos especificados, buscar
se ele estar adequado a proposta do cliente e
detectar defeitos.
O que é teste de software?
• Hoje existe software e aplicativos em todas as
partes da nossa vida.
Por que testar software?
• Possíveis prejuízos por falhas de softwares.
• Financeiro
• Reputação
• Riscos físicos
Por que testar software?
• Humanos sempre cometem erros...
...e isso é o que fazemos melhor !!!
Por que testar software?
Por que testar software?
Temos que verificar tudo que produzimos,
simplesmente porque as coisas podem dar
errado.
"Se alguma coisa pode dar errado, ela dará"
Lei de Murphy
Por que testar software?
Podemos errar quando analisamos nosso
próprio trabalho, concordam?
Por que testar software?
• Simplesmente porque falhamos.
– Falta de experiência.
– Falta de informação correta.
– Falha de comunicação.
– Desmotivação, cansaço ou sob pressão.
Por que testar software?
• Custos de correção dos defeitos:
– Quanto mais cedo descobrirmos e corrigirmos um
defeito, menor é o custo do projeto.
Por que testar software?
Exemplo:
Objetivos de Teste de Software
• Encontrar defeitos.
• Ganhar confiabilidade.
• Prover informações para tomada de decisão.
• Prevenir defeitos.
Princípios de Teste de
Software
1º Princípio
Teste é feito diferentemente em diferentes
contextos, ou seja, teste é
dependente de contexto.
2º Princípio
Quantos casos de teste são suficientes ?
Teste exaustivo é impossível !!!
10 números (0-9)
26 letras maiusculas (ABC)
26 letras minúsculas (abc)
6 caracteres (!@#$%?)
Vazio ( )
-------------------------------------------
68 testes
3º Princípio
Quando começar a testar ?
Teste o mais cedo possível !!!
4º Princípio
Em muitos projetos a maioria dos defeitos
estão agrupados em uma minoria de módulos
do software.
Fenômeno conhecido como
Clustering de defeitos.
5º Princípio
Casos de testes devem sempre ser
regularmente revisados e atualizados.
Os mesmos testes não encontram novos
defeitos. Fenômeno conhecido como
paradoxo da pesticida.
6º Princípio
Teste não prova que um software está livre de
defeitos.
Teste deve mostrar que um
software tem defeitos.
7º Princípio
Os defeitos não estarem sendo encontrados,
não garante que o sistema está ausente de
erro.
A ilusão da ausência de erro.
Processos de
Teste de Software
Processos de Teste de Software
Planejamento e controle
Principais atividades de planejamento:
Determinamos o escopo e objetivos dos testes.
Determinamos os recursos.
Agendamos as atividades.
Determinamos o critério de saída (Critério de
cobertura, porcentagem de execução, etc...).
Planejamento e controle
Controle de teste é o acompanhamento do atual
progresso das atividades comparado com o progresso
planejado.
Medir e analisar os resultados.
Prover as informações durante os testes.
Iniciar ações corretivas.
Tomar decisões baseado em alguma mudança do
negócio ou dos riscos do projeto, etc...
Análise e Modelagem
Análise e modelagem tem como principais atividades:
Análise de requisitos.
Definir as condições de testes.
Modelagem de testes.
Priorizar as condições de teste.
Modelar e configurar os ambientes de testes e
ferramentas.
Implementação e execução
Durante esta fase são criados os casos de testes e
“testwares” baseados nas condições de testes e na
modelagem dos testes.
Implementação e execução
Implementação:
Identificar e priorizar os casos de testes.
Criar suítes de teste para uma eficiente execução.
Implementar e verificar o ambiente de teste.
Execução:
Executar as suítes de teste.
Registrar os resultados dos testes
Reportar incidências (discrepâncias entre resultado
atual e o esperado) .
Avaliação do critério de saída e
reportagem
Na avaliação do critério de saída verificamos quando
um atividade de teste foi completada.
Avaliar eficácia nos resultados dos testes.
Avaliar se mais testes são necessários e a percentagem
de testes executados.
Avaliar o número e a gravidade dos defeitos
remanescentes.
Escrever um Sumário dos Testes para os clientes.
Fechamento das atividades de
Testes
Coletamos dados das atividades de testes finalizados,
consolidamos a experiência do projeto e analisamos
os fatos e números.
Checar que o que foi planejado a entregar foi entregue e
os incidentes foram resolvido ou deferidos (requisitar
numa próxima entrega).
Arquivar os testwares.
Entregar os testwares para o time/empresa de
manutenção.
Analisar como foram os testes e discutir lições
aprendidas.
Níveis de Teste
Níveis, fases ou estágios de teste:
Teste de Unidade
Teste de Integração
Teste de Sistema
Teste de Aceitação
Níveis de Teste
Teste de componente (Unidade)
Consiste na verificação da menor
unidade de projeto de software.
(Módulos, classes, métodos, objetos,
etc...)
TDD pode ser usado.
Níveis de Teste
Teste de Integracao
Consiste no teste das interfaces entre
unidades e módulos para garantir que
eles se comunicam corretamente.
 Teste de Integração de Componentes
 Teste de Integração de Sistemas
Níveis de Teste
Teste de Sistema
 Busca de defeitos em todo o
sistema/produto, totalmente integrado.
Investiga ambos requisitos funcionais e
não-funcionais do sistema.
Geralmente é executado por um time
independente ou tercerizado.
O ambiente de teste tem que
corresponder ao ambiente de produção.
Níveis de Teste
Teste de Aceitação
“O sistema pode ser entregue?”
Testa o comportamento do sistema de
acordo com as necessidades do usuário.
Responsabilidade do usuário/cliente.
Níveis de Teste
Independência do Teste
Existem alguns níveis de independência do teste:
Baixo: Teste feita pelo próprio autor do item.
Médio: Teste feito por outra pessoa do mesmo time
(Ex.: Outro programador).
Alto: Teste feito por outro time ou organização.
Independência do Teste -
Vantagens e Desvantagem
Ajuda a focar no esforço específico
Prover os benefícios dos recursos de teste profissional
e treinado.
Deterioração das relações entre os times
Bug For Sale by Douglas
Hoffman
Não faça caso (“Tirar onda da cara do outro”)
Não culpe ninguém em específico
Seja uma critica construtiva e discuta o defeito.
Diga o que você gostou e o que funcionou, assim
como o que não funcionou.
Mostre o risco honestamente.
Seja educado e colaborativo.
Confirme que a outra pessoa entendeu o que você
quis dizer.
O que é Teste de Software?

Mais conteúdo relacionado

Mais procurados

Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
Álvaro Farias Pinheiro
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
Joeldson Costa Damasceno
 
Intro to Manual Testing
Intro to Manual TestingIntro to Manual Testing
Intro to Manual Testing
Ayah Soufan
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de software
Bruno Nascimento
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
alinebiath
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategy
tharindakasun
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
Alex Camargo
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot frameworkgilleslenfant
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
elliando dias
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
Rondinelli Mesquita
 
Performance testing with JMeter
Performance testing with JMeterPerformance testing with JMeter
Performance testing with JMeter
Mikael Kundert
 
Técnicas de Teste
Técnicas de TesteTécnicas de Teste
Técnicas de Teste
Camilo Ribeiro
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
Sergey Podolsky
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
Camilo Ribeiro
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
Camilo Almendra
 
Performance Testing Using JMeter | Edureka
Performance Testing Using JMeter | EdurekaPerformance Testing Using JMeter | Edureka
Performance Testing Using JMeter | Edureka
Edureka!
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle
Kari Kakkonen
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville
minastestingconference
 
Software Testing Principles
Software Testing PrinciplesSoftware Testing Principles
Software Testing Principles
Kanoah
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
Osvaldo Santana Neto
 

Mais procurados (20)

Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Intro to Manual Testing
Intro to Manual TestingIntro to Manual Testing
Intro to Manual Testing
 
Banco de questões qualidade de software
Banco de questões qualidade de softwareBanco de questões qualidade de software
Banco de questões qualidade de software
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
Agile Testing Strategy
Agile Testing StrategyAgile Testing Strategy
Agile Testing Strategy
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Performance testing with JMeter
Performance testing with JMeterPerformance testing with JMeter
Performance testing with JMeter
 
Técnicas de Teste
Técnicas de TesteTécnicas de Teste
Técnicas de Teste
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Performance Testing Using JMeter | Edureka
Performance Testing Using JMeter | EdurekaPerformance Testing Using JMeter | Edureka
Performance Testing Using JMeter | Edureka
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville
 
Software Testing Principles
Software Testing PrinciplesSoftware Testing Principles
Software Testing Principles
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 

Semelhante a O que é Teste de Software?

Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
Aline Zanin
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
UFPA
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
Roberto Nunes
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
Mário Pravato Junior
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
Sandy Maciel
 
Eng de testes
Eng de testesEng de testes
Eng de testes
GrupoAlves - professor
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
Joeldson Costa Damasceno
 
Teste de software
Teste de software Teste de software
Teste de software
Allan Almeida de Araújo
 
Teste de software
Teste de softwareTeste de software
Teste de software
Rodrigo Cardoso Alves Fonte
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
Taís Dall'Oca
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
Mauricio Cesar Santos da Purificação
 
Questionario CTFL - Foundation Level
Questionario CTFL - Foundation LevelQuestionario CTFL - Foundation Level
Questionario CTFL - Foundation Level
Lucas Bonanno Casanova
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
Felipe Bugov
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IV
João Lourenço
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
AnaKlyssia1
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
DevInPF
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
Wagner Zaparoli
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
João Lourenço
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
Vanilton Pinheiro
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
Juliana Maria Lopes
 

Semelhante a O que é Teste de Software? (20)

Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Eng de testes
Eng de testesEng de testes
Eng de testes
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Teste de software
Teste de software Teste de software
Teste de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Questionario CTFL - Foundation Level
Questionario CTFL - Foundation LevelQuestionario CTFL - Foundation Level
Questionario CTFL - Foundation Level
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IV
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 

Último

Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
Ian Oliveira
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
EliakimArajo2
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 

Último (7)

Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 

O que é Teste de Software?

  • 1. Kildery Sukar System Engineer Modular Mining Systems E-mail: sukar@mmsi.com www.modularmining.com
  • 2. Roteiro – O que é teste de software? – Por que é necessário testar? – Princípios de Teste de Software – Processos de Teste de Software – Níveis de Teste – Informações complementares
  • 3. O que é teste de software? • Execução de Software
  • 4. O que é teste de software? • É analisar um programa com a intenção de descobrir erros e defeitos.(Glenford Myers) • É um processo que consiste de todo o ciclo de atividades (estáticos e dinâmicos), voltadas para o planejamento, preparação e avaliação do produto de software, está relacionado em determinar se o produto satisfaz os requisitos especificados, buscar se ele estar adequado a proposta do cliente e detectar defeitos.
  • 5. O que é teste de software?
  • 6. • Hoje existe software e aplicativos em todas as partes da nossa vida. Por que testar software?
  • 7. • Possíveis prejuízos por falhas de softwares. • Financeiro • Reputação • Riscos físicos Por que testar software?
  • 8. • Humanos sempre cometem erros... ...e isso é o que fazemos melhor !!! Por que testar software?
  • 9. Por que testar software? Temos que verificar tudo que produzimos, simplesmente porque as coisas podem dar errado. "Se alguma coisa pode dar errado, ela dará" Lei de Murphy
  • 10. Por que testar software? Podemos errar quando analisamos nosso próprio trabalho, concordam?
  • 11. Por que testar software? • Simplesmente porque falhamos. – Falta de experiência. – Falta de informação correta. – Falha de comunicação. – Desmotivação, cansaço ou sob pressão.
  • 12. Por que testar software? • Custos de correção dos defeitos: – Quanto mais cedo descobrirmos e corrigirmos um defeito, menor é o custo do projeto.
  • 13. Por que testar software? Exemplo:
  • 14. Objetivos de Teste de Software • Encontrar defeitos. • Ganhar confiabilidade. • Prover informações para tomada de decisão. • Prevenir defeitos.
  • 15. Princípios de Teste de Software
  • 16. 1º Princípio Teste é feito diferentemente em diferentes contextos, ou seja, teste é dependente de contexto.
  • 17. 2º Princípio Quantos casos de teste são suficientes ? Teste exaustivo é impossível !!! 10 números (0-9) 26 letras maiusculas (ABC) 26 letras minúsculas (abc) 6 caracteres (!@#$%?) Vazio ( ) ------------------------------------------- 68 testes
  • 18. 3º Princípio Quando começar a testar ? Teste o mais cedo possível !!!
  • 19. 4º Princípio Em muitos projetos a maioria dos defeitos estão agrupados em uma minoria de módulos do software. Fenômeno conhecido como Clustering de defeitos.
  • 20. 5º Princípio Casos de testes devem sempre ser regularmente revisados e atualizados. Os mesmos testes não encontram novos defeitos. Fenômeno conhecido como paradoxo da pesticida.
  • 21. 6º Princípio Teste não prova que um software está livre de defeitos. Teste deve mostrar que um software tem defeitos.
  • 22. 7º Princípio Os defeitos não estarem sendo encontrados, não garante que o sistema está ausente de erro. A ilusão da ausência de erro.
  • 24. Processos de Teste de Software
  • 25. Planejamento e controle Principais atividades de planejamento: Determinamos o escopo e objetivos dos testes. Determinamos os recursos. Agendamos as atividades. Determinamos o critério de saída (Critério de cobertura, porcentagem de execução, etc...).
  • 26. Planejamento e controle Controle de teste é o acompanhamento do atual progresso das atividades comparado com o progresso planejado. Medir e analisar os resultados. Prover as informações durante os testes. Iniciar ações corretivas. Tomar decisões baseado em alguma mudança do negócio ou dos riscos do projeto, etc...
  • 27. Análise e Modelagem Análise e modelagem tem como principais atividades: Análise de requisitos. Definir as condições de testes. Modelagem de testes. Priorizar as condições de teste. Modelar e configurar os ambientes de testes e ferramentas.
  • 28. Implementação e execução Durante esta fase são criados os casos de testes e “testwares” baseados nas condições de testes e na modelagem dos testes.
  • 29. Implementação e execução Implementação: Identificar e priorizar os casos de testes. Criar suítes de teste para uma eficiente execução. Implementar e verificar o ambiente de teste. Execução: Executar as suítes de teste. Registrar os resultados dos testes Reportar incidências (discrepâncias entre resultado atual e o esperado) .
  • 30. Avaliação do critério de saída e reportagem Na avaliação do critério de saída verificamos quando um atividade de teste foi completada. Avaliar eficácia nos resultados dos testes. Avaliar se mais testes são necessários e a percentagem de testes executados. Avaliar o número e a gravidade dos defeitos remanescentes. Escrever um Sumário dos Testes para os clientes.
  • 31. Fechamento das atividades de Testes Coletamos dados das atividades de testes finalizados, consolidamos a experiência do projeto e analisamos os fatos e números. Checar que o que foi planejado a entregar foi entregue e os incidentes foram resolvido ou deferidos (requisitar numa próxima entrega). Arquivar os testwares. Entregar os testwares para o time/empresa de manutenção. Analisar como foram os testes e discutir lições aprendidas.
  • 32. Níveis de Teste Níveis, fases ou estágios de teste: Teste de Unidade Teste de Integração Teste de Sistema Teste de Aceitação
  • 33. Níveis de Teste Teste de componente (Unidade) Consiste na verificação da menor unidade de projeto de software. (Módulos, classes, métodos, objetos, etc...) TDD pode ser usado.
  • 34. Níveis de Teste Teste de Integracao Consiste no teste das interfaces entre unidades e módulos para garantir que eles se comunicam corretamente.  Teste de Integração de Componentes  Teste de Integração de Sistemas
  • 35. Níveis de Teste Teste de Sistema  Busca de defeitos em todo o sistema/produto, totalmente integrado. Investiga ambos requisitos funcionais e não-funcionais do sistema. Geralmente é executado por um time independente ou tercerizado. O ambiente de teste tem que corresponder ao ambiente de produção.
  • 36. Níveis de Teste Teste de Aceitação “O sistema pode ser entregue?” Testa o comportamento do sistema de acordo com as necessidades do usuário. Responsabilidade do usuário/cliente.
  • 38. Independência do Teste Existem alguns níveis de independência do teste: Baixo: Teste feita pelo próprio autor do item. Médio: Teste feito por outra pessoa do mesmo time (Ex.: Outro programador). Alto: Teste feito por outro time ou organização.
  • 39. Independência do Teste - Vantagens e Desvantagem Ajuda a focar no esforço específico Prover os benefícios dos recursos de teste profissional e treinado. Deterioração das relações entre os times
  • 40. Bug For Sale by Douglas Hoffman Não faça caso (“Tirar onda da cara do outro”) Não culpe ninguém em específico Seja uma critica construtiva e discuta o defeito. Diga o que você gostou e o que funcionou, assim como o que não funcionou. Mostre o risco honestamente. Seja educado e colaborativo. Confirme que a outra pessoa entendeu o que você quis dizer.

Notas do Editor

  1. Muita gente pensa que teste de software é só execução de teste. É só testar e testar e executar e testar e executar e pronto.
  2. Próximo slide a gente vai ver quais são as atividades estáticas e dinâmicas
  3. Testes em fase na fase de manutenção do software tem o objetivo de verificar que algum que foi corrigido não afetou outras funcionalidades do sistema que estavam corretos (Teste de regressão) ou tem o objetivo de verificar a confiabilidade ou a disponibilidade do sistema.
  4. Isso pode acontecer porque uma área do código é particularmente complexa e delicada. Os testadores usam freqüentemente esta informação quando vão fazer sua avaliação de risco para o planejamento dos testes, e irá focar conhecido"Pontos quentes". (Recomendo fortemente o trabalho da Ellen Souza – UPE @ EBTS 2008)
  5. Testing can show that defects are present, but cannot prove that there are no defects. Testing reduces the probability of undiscovered defects remaining in the software but, even if no defects are found, it is not a proof of correctness.
  6. Testing can show that defects are present, but cannot prove that there are no defects. Testing reduces the probability of undiscovered defects remaining in the software but, even if no defects are found, it is not a proof of correctness.
  7. We need to know how many reviews and tests we have done. We need to track how many tests have passed and how many failed, along with the number, type and importance of the defects reported. Initiate corrective actions: For example, tighten exit criteria for defects fixed, ask for more effort to be put into debugging or prioritize defects for fixing test blockers.
  8. Condições de teste é o q testar Modelagem de testes é ligar cada caso de testes a suas respectivas condiçoes de teste
  9. A test suite is a logical collection of test cases which naturally work together. Test suites often share data and a common high-level set of objectives.
  10. → Teste de unidade é toda a aplicação de teste nas assinaturas de entradas e saídas de um sistema, consiste em validar dados válidos e inválidos via I/O (entrada/saída) sendo aplicado por desenvolvedores ou analistas de teste. → Teste de integração é a fase do teste de software em que módulos são combinados e testados em grupo, o propósito do teste de integração é verificar os requisitos funcionais, de desempenho e de confiabilidade na modelagem do sistema. Com ele é possível descobrir erros de interface entre os componentes do sistema. → Teste de sistema testa o sistema já completamente integrado é verificado quanto a seus requisitos num ambiente de produção, dessa forma não requer conhecimento da estrutura (lógica) interna do sistema, não se limita a testar somente requisitos funcionais, mas também requisitos não funcionais como a expectativa do cliente. → Teste de aceitação tem por função verificar o sistema em relação aos seus requisitos originais, e às necessidades atuais do usuário.[1] É geralmente realizado por um grupo restrito de usuários finais, num ambiente parecido com o deles.
  11. Component testing may include testing of functionality and specific non-functional characteristics such as resource-behavior (e.g. memory leaks), performance or robustness testing, as well as structural testing (e.g. decision coverage). Test cases are derived from work products such as the software design or the data model.
  12. Estratégia top-down(descendente) - stubs Estratégia bottom-up(ascendente) - drivers Método Big-Bang Com drivers(controladores) e stubs(simuladores)
  13. Finding defects should not be the main focus in acceptance testing. Acceptance testing of the usability of a component may be done during com ponent testing
  14. We need to take care to report on defects and failures as objectively and politely as possible.