Introdução aos testes de
software
Prof. Leonardo Soares
Sobre a disciplina

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

Avaliações
Primeira (07/04)
Exercícios passados em sala de aula;
Avaliação escrita;

Segunda (16/06)
Avaliação escrita;
Por que testamos?
Por que testamos?
Por que testamos?
Softwares podem matar!

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 E.U.A. 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 III guerra mundial.
Softwares causam prejuízos!

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.
O Que pode acontecer quando a
gente não testa nosso software?
Bancos perderem milhões
Telefones pararem de funcionar
Aviões terem suas rotas desviadas
Sistemas clínicos causarem problemas a pacientes
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

“Teste de software é o processo de executar o
programa com a intenção de encontrar bugs”
Glendford Myers, 1979
Curiosidade
Quais problemas podem ocorrer
nestes softwares?
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;
O Que teste de software não é?!

Testes ajudam a encontrar erros, mas não corrigí-los.
Cabe aos desenvolvedores fazerem a correçã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
Como minimizar os problemas

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!
Qualidade na computação

Conformidade com requisitos funcionais e não
funcionais,
padrões
de
desenvolvimento
documentados e características implícitas esperadas
de todo software profissionalmente desenvolvido
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
Como encontrar erros no software

Inspecionar nosso código
Avaliar se o software atende aos requisitos do usuário
Pedir para o cliente verificar
Qualidade e teste de software

Descobrir
falhas

Corrigir
falhas

Qualidade

Validar
requisitos
Alguns termos importantes

Defeito
Erro
Falha
VV&T
• 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
Como correm os defeitos no
processo de software
Falha humana
Problema de comunicação
Por que estudamos teste?
• 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 testes?
O Que percebemos?

• 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
Quando utilizar testes?

• 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
O Que é teste de software?

• 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 são testes 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
Quando testes não são adequados?

• Falta de conhecimento
• Prazo
• Situação

Introdução a testes de software

Notas do Editor

  • #5 Softwaresestãopresentesnosmaisdiversosobjetos de nossavida, incluindoaquelesondeumafalhaseriainaceitávelporhaver a possibilidade de causar a morte de pessoas.
  • #6 Em outros casos, apesar de nãocausar a mortediretamentehá o risco do software causarprejuízosfinanceiroscasoapresentefalhas.
  • #7 A necessidadeemtestarobjetosnãoéexclusividade da área de testes de software,pelocontrário, estápresenteemquasetodas as áreascomo forma de garantirqueprodutossãoconfiáveis e paraencontrarosseuslimites.
  • #11 Apesar da aparência, temosquegarantirconsistência e qualidadeemnossosprodutos…. De nada adianta um bolo bonito seeleestiver com um saborazedo.
  • #12 Quando a genteexperimentopercebequenão era aquiloqueesperávamos
  • #13 Nossoclientetambémestarámuitoinsatisfeitoconoscocasonosso software apresenteproblemasinesperados.
  • #14 Testamosnosso software paraverificar se eleestáconformecombinado (cumprir o acordo comnossocliente)Verificamosse asfuncionalidadesestãoimplementadascorretamenteou se o sistema se comporta de forma correta
  • #15 Testamosnosso software paraverificar se eleestáconformecombinado (cumprir o acordo comnossocliente)Verificamosse asfuncionalidadesestãoimplementadascorretamenteou se o sistema se comporta de forma correta
  • #16 Testamosnosso software paraverificar se eleestáconformecombinado (cumprir o acordo comnossocliente)Verificamosse asfuncionalidadesestãoimplementadascorretamenteou se o sistema se comporta de forma correta
  • #17 Apesar de todosos testes possíveisnuncaeliminamostodososerros de nosso software, e emgeral o clienteéquemencontraráestesproblemas… manteruma boa relação com elenestesmomentoséalgobastantedifícil
  • #18 RetrabalhoComprometer a imagem da empresaDesmotivar a equipe
  • #19 RetrabalhoComprometer a imagem da empresaDesmotivar a equipe
  • #23 Grace Hopper encontrouinsetosquecausavamo maufuncionamento de equipamentoselétricos. Estes insetosque do inglêsvem da palavra bug équedanificavam o equipamento, a palavraatualmente serve comoreferênciaparaproblemasemnosso software
  • #24 Semáforos: demorardemaisemuma das lâmapdas, abrirtodosaomesmo tempo, fechartodosaomesmo tempo
  • #26 Software éincertoClienteéimpaciente e nãosabe o quequerVáriaspessoastrabalhandoSeráquefizemos da forma correta?
  • #27 Software éincertoClienteéimpaciente e nãosabe o quequerVáriaspessoastrabalhandoSeráquefizemos da forma correta?
  • #28 Software éincertoClienteéimpaciente e nãosabeexatamene o quequer, tãopouco se expressarparapedirVáriaspessoastrabalhandoSeráquefizemos da forma correta?
  • #29 Software éincertoClienteéimpaciente e nãosabe o quequerVáriaspessoastrabalhandoSeráquefizemos da forma correta?
  • #30 Software éincertoClienteéimpaciente e nãosabe o quequerVáriaspessoastrabalhandoSeráquefizemos da forma correta?
  • #36 Documentarnosso softwareValidarnosso softwareUsarpadrões de codificaçãoEncontrarerrosemnosso software
  • #37 Documentarnosso softwareValidarnosso softwareUsarpadrões de codificaçãoEncontrarerrosemnosso software
  • #38 Documentarnosso softwareValidarnosso softwareUsarpadrões de codificaçãoEncontrarerrosemnosso software
  • #39 Documentarnosso softwareValidarnosso softwareUsarpadrões de codificaçãoEncontrarerrosemnosso software
  • #40 Documentarnosso softwareValidarnosso softwareUsarpadrões de codificaçãoEncontrarerrosemnosso software
  • #41 Seráquenossascondicionais e loops estãocorretos?Seráque as funcionalidadesatendemaosrequisitos do nossocliente?Seráquenãoquebramosnossocódigo?
  • #43 Defeito faz parte do produto, é algo que esta implementada no código de maneira errada.Erro pode ser um resultado de um defeito ou uma falha, como um retorno esperado, que por causa de uma falha teve um valor diferente do que esperado.Esta mais ligada ao hardware, como uma rede inacessível, queda de energia. Uma falha pode ocorrer por causa de um erro, por exemplo, houve um retorno de um valor não esperado
  • #45 FalhahumanaProblemas de comunicação e transformação da informaçãoNuncairemosencontrartodas as falhas, mas nossoclienteirá
  • #46 FalhahumanaProblemas de comunicação e transformação da informaçãoNuncairemosencontrartodas as falhas, mas nossoclienteirá
  • #47 FalhahumanaProblemas de comunicação e transformação da informaçãoNuncairemosencontrartodas as falhas, mas nossoclienteirá