Introduçãoaos
testes de
software
Prof. Paulo Henrique
Prof. Thiago Ribeiro
Compentências:
Entender conceitos sobre a área;
Compreender por que através de testes garatimos a
qualidade de nosso software;
Identificar a necessidade no uso de testes e como utilizá-
lo;
Conhecer as ferramentas necessárias à aplicação de
testes.
Sobre a disciplina
Por que testamos?
Por que testamos?
Por que testamos?
Por que testamos?
•Aumenta o entendimento sobre o sistema
•Identifica fraquezas do sistema
•Aumenta a confiabilidade no sistema
•Estabelece o grau de qualidade do sistema
•Atesta que os requisitos foram atingidos no sistema
•Prova que o sistema é usável e operacional
Testes mostram a presença de
erros e não a ausência deles.
Em 1983 uma terceira guerra mundial quase foi
deflagrada por uma falha no software de alerta de
radares soviéticos. A falha fez com que o software
mostrasse que os EUA tinham lançado cinco mísseis.
A guerra não aconteceu, pois o Tenente Coronel
Stanislav Petrov considerou que a informação estava
errada e não ordenou o contra-ataque, evitando assim o
início da 3ª guerra mundial.
Softwares podem matar!
Softwares podem matar!
Voo da Air France Rio-Paris 2009
1. Dados conflitantes (falha nos sensores)
2. Sistema assume o controle (piloto automático)
3. Piloto tenta reiniciar o sistema (boot)
4. Em 4 minutos o avião mergulha no oceano
228 mortos
Por uma falha em um sistema de software para controle
de ações em uma bolsa de valor, a empresa americana
Knight sofreu perdas de $ 460 milhões de doláres em
apenas 45 minutos.
Softwares causam prejuízos
financeiros!
Qin Qisheng, 43, trabalhava para o Huaxia Bank como gerente do
centro de desenvolvimento de tecnologia em Pequim. Em 2016, ele
detectou uma falha no sistema central do banco: os saques
realizados por volta da meia-noite não eram registrados.
Então, Qin informou tudo ao seu superior no banco inseriu alguns
scripts no sistema para testar a brecha sem levantar suspeitas. Ao
longo de um ano, ele fez 1.300 saques em dinheiro entre US$ 750 e
US$ 3.000. Ele acabou acumulando pouco mais de US$ 1 milhão,
sem revelar ao banco o que estava fazendo.
Softwares causam prejuízos
financeiros!
Os saques foram realizados através de uma conta de testes. O
programador então depositava o dinheiro em sua própria conta
bancária, inclusive investindo uma parte no mercado de ações.
Qin foi descoberto em janeiro de 2018, quando uma filial do banco
detectou a atividade irregular durante uma verificação manual. O
programador foi detido pela polícia em março; em dezembro, ele
foi condenado por roubo e sentenciado a 10 anos e 6 meses de
prisão mais multa equivalente a US$ 1.600.
Softwares causam prejuízos
financeiros!
Bancos perderem milhões
Telefones pararem de funcionar
Aviões terem suas rotas desviadas
Sistemas clínicos causarem problemas a pacientes
O que pode acontecer quando não
testamos nossos softwares?
Importância em garantir a qualidade
Importância em garantir a qualidade
O Que achamos disto?
Importância do teste de software
para os negócios
Estabelecemos um contrato com
nosso cliente
Falhas geram frustração
Sempre o cliente encontrará o erro
O Que pode acontecer para a
empresa que desenvolve o software?
O Que pode acontecer para a
empresa?
Vamos parar de gambiarra!
Como vocês testam seu software?
“Teste de software é o processo de executar o
programa com a intenção de encontrar bugs”
Glendford Myers, 1979
“É um conjunto de processos que tem como
objetivo descobrir se um programa está em
desacordo com requisitos funcionais e não-
funcionais”
Teste de software
Curiosidade
Formem grupos e encontrem os problemas:
Em um software para controle da energia;
Em um software para controle de semáforos;
Em um software de registro acadêmico;
Quais problemas podem ocorrer
nestes softwares?
Testes ajudam a encontrar erros, mas não corrigí-los.
Cabe aos desenvolvedores fazerem a correção
O Que teste de software não é?!
Dificuldades na criação de softwares
Softwares são complexos
Satisfazer o cliente é difícil…
Levam vários meses/anos para serem
desenvolvidos
Várias pessoas trabalhando no
mesmo produto
A comunicação é um problema…
Software muda
Prazos e recursos são limitados
Atender as necessidades do cliente
Testes contínuos no software
Documentação do sistema
Adoção de boas práticas de desenvolvimento
Construir software com qualidade!
Como minimizar os problemas
requisitos funcionais e não
Conformidade com
funcionais, padrões de desenvolvimento
documentados e características implícitas esperadas
de todo software profissionalmente desenvolvido
Qualidade na computação
Como garantimos a qualidade de
nosso software?
Criando uma documentação
consistente
Validação e verificação
Adotar padrões de projeto
Admitir que há erros e tentar
encontrá-los
Inspecionar nosso código
Avaliar se o software atende aos requisitos do usuário
Pedir para o cliente verificar
Como encontrar erros no software
Qualidade e teste de software
Descobrir
falhas
Corrigir
falhas
Validar
requisitos
Qualidade
Defeito
Erro
Falha
Alguns termos importantes
• Validação: assegurar que o produto final
corresponda aos requisitos do usuário
• Estamos construindo o produto certo?
• Verificação: Assegurar consistência, completitude e
corretitude do produto em cada fase e entre fases
consecutivas do ciclo de vida do software
• Estamos construindo corretamente o produto?
• Teste: Examina o comportamento do produto por
meio de sua execução
VV&T
Como correm os defeitos no
processo de software
Falha humana
Problema de comunicação
• Mais de 1/3 das falhas poderiam ser evitadas com
testes [1]
• Cerca de 50% das falhas só são descobertas em
produção [1]
• Segundo uma pesquisa do Departamento de
rcio dos EUA, publicada em 2002, falhas de
software o o comuns e o danosas que se estima
que causem um zo anual de mais de 60 es
de lares para a economia americana. [1], [2]
Por que estudamos teste?
Por que estudamos testes?
• Falhas de software causam grandes prejuízos
• A prática de testes ainda é pouco utilizada
• Quanto antes a presença do defeito for revelada,
menor o custo da correção e maior a probabilidade de
corrigí-lo
• Testes não encontram todas as falhas, mas ajudam a
minimizar os erros
O Que percebemos?
• Desejamos oferecer uma melhor qualidade ao código
• Garantir que os requisitos estão implementados e
estão corretos
• Fornecem segurança para realizar alterações no
código
Quando utilizar testes?
• Analisar documentos e verificar se foi produzido
corretamente
• Testar funções e verificar se as entradas produzidas
resultam nas saídas esperadas
• Fazer uso do software desenvolvido e verificar se está
conforme os requisitos
O Que é teste de software?
• São previsíveis
• São finitos
• São (ou deveriam ser) simples
• Não são perfeitos, mas uma das melhores alternativas
para validação
O Que são testes de software?
• Falta de conhecimento
• Prazo
• Situação
Quando testes não são adequados?

AULA 1 - TESTE DE SOFTWARE.pptx

  • 1.
  • 2.
    Compentências: Entender conceitos sobrea área; Compreender por que através de testes garatimos a qualidade de nosso software; Identificar a necessidade no uso de testes e como utilizá- lo; Conhecer as ferramentas necessárias à aplicação de testes. Sobre a disciplina
  • 3.
  • 4.
  • 5.
  • 6.
    Por que testamos? •Aumentao entendimento sobre o sistema •Identifica fraquezas do sistema •Aumenta a confiabilidade no sistema •Estabelece o grau de qualidade do sistema •Atesta que os requisitos foram atingidos no sistema •Prova que o sistema é usável e operacional
  • 7.
    Testes mostram apresença de erros e não a ausência deles.
  • 8.
    Em 1983 umaterceira guerra mundial quase foi deflagrada por uma falha no software de alerta de radares soviéticos. A falha fez com que o software mostrasse que os EUA tinham lançado cinco mísseis. A guerra não aconteceu, pois o Tenente Coronel Stanislav Petrov considerou que a informação estava errada e não ordenou o contra-ataque, evitando assim o início da 3ª guerra mundial. Softwares podem matar!
  • 9.
    Softwares podem matar! Vooda Air France Rio-Paris 2009 1. Dados conflitantes (falha nos sensores) 2. Sistema assume o controle (piloto automático) 3. Piloto tenta reiniciar o sistema (boot) 4. Em 4 minutos o avião mergulha no oceano 228 mortos
  • 10.
    Por uma falhaem um sistema de software para controle de ações em uma bolsa de valor, a empresa americana Knight sofreu perdas de $ 460 milhões de doláres em apenas 45 minutos. Softwares causam prejuízos financeiros!
  • 11.
    Qin Qisheng, 43,trabalhava para o Huaxia Bank como gerente do centro de desenvolvimento de tecnologia em Pequim. Em 2016, ele detectou uma falha no sistema central do banco: os saques realizados por volta da meia-noite não eram registrados. Então, Qin informou tudo ao seu superior no banco inseriu alguns scripts no sistema para testar a brecha sem levantar suspeitas. Ao longo de um ano, ele fez 1.300 saques em dinheiro entre US$ 750 e US$ 3.000. Ele acabou acumulando pouco mais de US$ 1 milhão, sem revelar ao banco o que estava fazendo. Softwares causam prejuízos financeiros!
  • 12.
    Os saques foramrealizados através de uma conta de testes. O programador então depositava o dinheiro em sua própria conta bancária, inclusive investindo uma parte no mercado de ações. Qin foi descoberto em janeiro de 2018, quando uma filial do banco detectou a atividade irregular durante uma verificação manual. O programador foi detido pela polícia em março; em dezembro, ele foi condenado por roubo e sentenciado a 10 anos e 6 meses de prisão mais multa equivalente a US$ 1.600. Softwares causam prejuízos financeiros!
  • 13.
    Bancos perderem milhões Telefonespararem de funcionar Aviões terem suas rotas desviadas Sistemas clínicos causarem problemas a pacientes O que pode acontecer quando não testamos nossos softwares?
  • 14.
  • 15.
  • 16.
  • 17.
    Importância do testede software para os negócios
  • 18.
    Estabelecemos um contratocom nosso cliente
  • 19.
  • 20.
    Sempre o clienteencontrará o erro
  • 21.
    O Que podeacontecer para a empresa que desenvolve o software?
  • 22.
    O Que podeacontecer para a empresa?
  • 23.
    Vamos parar degambiarra!
  • 24.
    Como vocês testamseu software?
  • 25.
    “Teste de softwareé o processo de executar o programa com a intenção de encontrar bugs” Glendford Myers, 1979 “É um conjunto de processos que tem como objetivo descobrir se um programa está em desacordo com requisitos funcionais e não- funcionais” Teste de software
  • 26.
  • 27.
    Formem grupos eencontrem os problemas: Em um software para controle da energia; Em um software para controle de semáforos; Em um software de registro acadêmico; Quais problemas podem ocorrer nestes softwares?
  • 28.
    Testes ajudam aencontrar erros, mas não corrigí-los. Cabe aos desenvolvedores fazerem a correção O Que teste de software não é?!
  • 29.
  • 30.
  • 31.
    Satisfazer o clienteé difícil…
  • 32.
    Levam vários meses/anospara serem desenvolvidos
  • 33.
  • 34.
    A comunicação éum problema…
  • 35.
  • 36.
    Prazos e recursossão limitados
  • 37.
    Atender as necessidadesdo cliente Testes contínuos no software Documentação do sistema Adoção de boas práticas de desenvolvimento Construir software com qualidade! Como minimizar os problemas
  • 38.
    requisitos funcionais enão Conformidade com funcionais, padrões de desenvolvimento documentados e características implícitas esperadas de todo software profissionalmente desenvolvido Qualidade na computação
  • 39.
    Como garantimos aqualidade de nosso software?
  • 40.
  • 41.
  • 42.
  • 43.
    Admitir que háerros e tentar encontrá-los
  • 44.
    Inspecionar nosso código Avaliarse o software atende aos requisitos do usuário Pedir para o cliente verificar Como encontrar erros no software
  • 45.
    Qualidade e testede software Descobrir falhas Corrigir falhas Validar requisitos Qualidade
  • 46.
  • 47.
    • Validação: assegurarque o produto final corresponda aos requisitos do usuário • Estamos construindo o produto certo? • Verificação: Assegurar consistência, completitude e corretitude do produto em cada fase e entre fases consecutivas do ciclo de vida do software • Estamos construindo corretamente o produto? • Teste: Examina o comportamento do produto por meio de sua execução VV&T
  • 48.
    Como correm osdefeitos no processo de software
  • 49.
  • 50.
  • 51.
    • Mais de1/3 das falhas poderiam ser evitadas com testes [1] • Cerca de 50% das falhas só são descobertas em produção [1] • Segundo uma pesquisa do Departamento de rcio dos EUA, publicada em 2002, falhas de software o o comuns e o danosas que se estima que causem um zo anual de mais de 60 es de lares para a economia americana. [1], [2] Por que estudamos teste?
  • 52.
  • 53.
    • Falhas desoftware causam grandes prejuízos • A prática de testes ainda é pouco utilizada • Quanto antes a presença do defeito for revelada, menor o custo da correção e maior a probabilidade de corrigí-lo • Testes não encontram todas as falhas, mas ajudam a minimizar os erros O Que percebemos?
  • 54.
    • Desejamos ofereceruma melhor qualidade ao código • Garantir que os requisitos estão implementados e estão corretos • Fornecem segurança para realizar alterações no código Quando utilizar testes?
  • 55.
    • Analisar documentose verificar se foi produzido corretamente • Testar funções e verificar se as entradas produzidas resultam nas saídas esperadas • Fazer uso do software desenvolvido e verificar se está conforme os requisitos O Que é teste de software?
  • 56.
    • São previsíveis •São finitos • São (ou deveriam ser) simples • Não são perfeitos, mas uma das melhores alternativas para validação O Que são testes de software?
  • 57.
    • Falta deconhecimento • Prazo • Situação Quando testes não são adequados?