O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Teste de Software
   Victor Hugo Germano
        Aula - 01

                         CTAI SENAISC
Eu? Quem?
Victor Hugo Germano
http://malditacomedia.blogspot.com
Por que testar?
Apresentação do Curso
Teste! Teste! Teste! Teste!




Apresentação do Curso
Teste! Teste! Teste! Teste!
 Ferramentas de Teste




Apresentação do Curso
Teste! Teste! Teste! Teste!
 Ferramentas de Teste
 Metodos e Processos




Apresentação do Curso
Teste! Teste! Teste! Teste!
 Ferramentas de Teste
 Metodos e Processos
 Exercícios de Fixação




Apresentação do Curso
Teste! Teste! Teste! Teste!
 Ferramentas de Teste
 Metodos e Processos
 Exercícios de Fixação
    Profissionalismo



Apres...
Objetivos


• Discutir nosso papel
• Apresentar os princípios
• Descrever estratégias de Planejamento
• Entender a automaç...
Teste de Software
IEEE Standard 829 for Software Test Documentation
• Plano de Testes
• Especificação de Arquitetura de Teste
• Especificação ...
Vale a Pena?
Teste de Software
Teste de Software

Percepção de Valor não imediata
Teste de Software

Percepção de Valor não imediata

 Não garante Qualidade Total
Documentação de Teste
Documentação de Teste

Qual o custo de Manutenção?
Documentação de Teste

Qual o custo de Manutenção?

Qual o impacto na velocidade?
Documentação de Teste

Qual o custo de Manutenção?

Qual o impacto na velocidade?

 Quanta inércia será gerada?
Documentação de Teste

Qual o custo de Manutenção?

Qual o impacto na velocidade?

 Quanta inércia será gerada?
  Stakehol...
O que fazer?
O que fazer?



Questionar-se
Documentação de Testes
Documentação de Testes

  Produto ou Ferramenta?
Documentação de Testes

  Produto ou Ferramenta?

Qual a dinâmica do mercado?
Documentação de Testes

  Produto ou Ferramenta?

Qual a dinâmica do mercado?

   Encontrar defeitos ou
  evitar que eles ...
Qualidade
Reduzir Riscos
Reduzir Riscos
Evitar que erros ocorram!
Reduzir Custos
Reduzir Custos
Eliminar Desperdícios!
Exercício 1

   Grupos de 2 - 3 pessoas

 Quais são os seus desafios na
adoção de Políticas de qualidade
     e Testes de s...
Exercício 1I


Sistema de Avaliação de Alunos

         Objetivo
Criar um conjunto de testes
Execício 1I

•
Durante o semestre são dadas três notas;

•
A nota final é obtida pela média aritmética das notas dadas
   d...
Testar para encontrar
       defeitos?
Processo
Evolucionário
Processo
Evolucionário
 Desde o início do
 desenvolvimento
Processo
   Evolucionário
     Desde o início do
     desenvolvimento

     Evolução dos testes
ligada à evolução do Siste...
Processo
   Evolucionário
     Desde o início do
     desenvolvimento

     Evolução dos testes
ligada à evolução do Siste...
Tipos de Teste
Caixa Branca
Testes Unitários
Testes Unitários

Testam um único componente
Todos os demais são simulados
Testes Unitários

Testam um único componente
Todos os demais são simulados


 JUnit / JMock / Easymock
Testes Unitários
public void addValor(int valor) {
  this.saldo += valor
}
public void getSaldo() {
  return this.saldo;
}...
Testes de Integração
Testes de Integração

Testam integração entre componentes
Testes de Integração

Testam integração entre componentes
    Codigo+BD / Codigo+Web
Testes de Integração

Testam integração entre componentes
    Codigo+BD / Codigo+Web

  JUnit / DBUnit / HsqlDB / Fit
Testes de Integração
@Test
public void testAddUsuarios() {
    GerenteUsuarios gerente = new GerenteUsuarios();
    int nu...
Testes de Aceitação
Testes de Aceitação

Testam uma funcionalidade,
estória ou um caso de uso
Testes de Aceitação

Testam uma funcionalidade,
estória ou um caso de uso


    JUnit / Selenium
Caixa Preta
Análise de Valor Limite

 Extrapolar os valores máximo e
 mínimo de uma funcionalidade


                Null
         Val...
Transição de Estado
   Entrada


Estado 1                 Estado 2
             Transição




               Saída
Transição de Estado

Ordem                    Ação
  1     Iniciar Edição de dados do Usuário “xpto”
  2     Modificar perm...
Testes de Sintaxe

 Entrada de Dados

  Campos Numéricos
Campos RG / CPF / CNPJ
       Máscaras
Testes de Desempenho

 O quão tolerante a falha?
      Simular falhas na rede
         Excluir objetos
  Múltiplos acessos...
Testes de Caminho

                Objetivo
Executar todas as possibilidades do sistema
Testes de Integração



No final, se juntar tudo,
      funciona?
teste da instalação
teste da implantação
teste de desempenho
teste de compatibilidade com
outros sistemas
teste de convers...
Exercício III



Matrícula Online
Execício III

•
O Aluno acessa o Site do Curso com seu usuário e senha

•
Ao acesso a sessão especial de quot;Pedido de Ma...
Testes Unitários
Testes Unitários
Não será Teste Unitário se:
Testes Unitários
      Não será Teste Unitário se:

• Se conecta a um banco de Dados
• Utiliza a rede
• Utiliza o sistema ...
Testes Unitários
Testes Unitários

Objetivos: Um único cenário testado
Testes Unitários

Objetivos: Um único cenário testado

           Independentes
Testes Unitários

Objetivos: Um único cenário testado

           Independentes

 Contidos: Não afetam outros testes
Testes Unitários

Objetivos: Um único cenário testado

           Independentes

 Contidos: Não afetam outros testes

   R...
Testes Unitários
A forma básica para testes é a seguinte:
• Crie um objeto e coloque-o em um estado conhecido
• Invoque um...
Testes Unitários
             Exercícios

             Crie uma lista
          Adicione um Valor
Verifique se o valor está...
Testes Unitários
   Organização
Testes Unitários
       Organização

Separados do Código de Produção
        Juntos ao código
      Em pacotes separados
Testes Unitários
               Exercícios


Deve ser possível sacar valores de uma Conta
Testes Unitários

Removendo Duplicações nos testes

             @Before

             @After
Exercício IV

Sistema de controle de Estoque

             Objetivo
Criar testes unitários para o sistema
Controle de Estoque


       Adicione Itens ao Estoque ( nome)
           Remova Itens do Estoque
            Liste Itens ...
Benefícios
TDD
3 Leis do TDD
3 Leis do TDD


Escreva um teste que falhe
3 Leis do TDD


Escreva um teste que falhe

   Faça o teste passar
3 Leis do TDD


Escreva um teste que falhe

   Faça o teste passar

        Refatore
Motivação
Motivação


Confiabilidade
Motivação


Confiabilidade

Testabilidade do Sistema
Motivação


Confiabilidade

Testabilidade do Sistema

Dificuldade em adicionar mudanças
Exemplo Prático
Encontrar o número de dias entre
   um dado Dia e a data atual:
        Hoje: 22/04/2009

    20/04/2009: “2 dias atrás”
 ...
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
Próximos SlideShares
Carregando em…5
×

Ctai Teste De Software Aula 1

30.017 visualizações

Publicada em

Victor Hugo Germano apresenta, na casa CTAI Senai SC um curso de formação entitulado: Teste de Software.

Chamando para uma discussão a respeito de nosso papel dentro do desenvolvimento de software, são apresentados conceitos relacionados à area de teste de software, assim como apresentada sua visão de como um modelo de testes deve estar vinculado ao desenvolvimento.

Publicada em: Tecnologia, Negócios
  • Seja o primeiro a comentar

Ctai Teste De Software Aula 1

  1. 1. Teste de Software Victor Hugo Germano Aula - 01 CTAI SENAISC
  2. 2. Eu? Quem?
  3. 3. Victor Hugo Germano http://malditacomedia.blogspot.com
  4. 4. Por que testar?
  5. 5. Apresentação do Curso
  6. 6. Teste! Teste! Teste! Teste! Apresentação do Curso
  7. 7. Teste! Teste! Teste! Teste! Ferramentas de Teste Apresentação do Curso
  8. 8. Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Apresentação do Curso
  9. 9. Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Exercícios de Fixação Apresentação do Curso
  10. 10. Teste! Teste! Teste! Teste! Ferramentas de Teste Metodos e Processos Exercícios de Fixação Profissionalismo Apresentação do Curso
  11. 11. Objetivos • Discutir nosso papel • Apresentar os princípios • Descrever estratégias de Planejamento • Entender a automação de testes
  12. 12. Teste de Software
  13. 13. IEEE Standard 829 for Software Test Documentation • Plano de Testes • Especificação de Arquitetura de Teste • Especificação de Casos de Teste • Identificadores para Especificação de Casos de Teste • Itens a serem testados • Especificação de Entrada • Especificação de Saída • Necessidades de Ambiente • Requisitos especiais de processos • Dependências internas para casos de Uso • Especificação do Procedimento de Testes • Relatório de Comunicação de Item testado • Log de Teste
  14. 14. Vale a Pena?
  15. 15. Teste de Software
  16. 16. Teste de Software Percepção de Valor não imediata
  17. 17. Teste de Software Percepção de Valor não imediata Não garante Qualidade Total
  18. 18. Documentação de Teste
  19. 19. Documentação de Teste Qual o custo de Manutenção?
  20. 20. Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade?
  21. 21. Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade? Quanta inércia será gerada?
  22. 22. Documentação de Teste Qual o custo de Manutenção? Qual o impacto na velocidade? Quanta inércia será gerada? Stakeholders concordam?
  23. 23. O que fazer?
  24. 24. O que fazer? Questionar-se
  25. 25. Documentação de Testes
  26. 26. Documentação de Testes Produto ou Ferramenta?
  27. 27. Documentação de Testes Produto ou Ferramenta? Qual a dinâmica do mercado?
  28. 28. Documentação de Testes Produto ou Ferramenta? Qual a dinâmica do mercado? Encontrar defeitos ou evitar que eles ocorram?
  29. 29. Qualidade
  30. 30. Reduzir Riscos
  31. 31. Reduzir Riscos Evitar que erros ocorram!
  32. 32. Reduzir Custos
  33. 33. Reduzir Custos Eliminar Desperdícios!
  34. 34. Exercício 1 Grupos de 2 - 3 pessoas Quais são os seus desafios na adoção de Políticas de qualidade e Testes de software?
  35. 35. Exercício 1I Sistema de Avaliação de Alunos Objetivo Criar um conjunto de testes
  36. 36. Execício 1I • Durante o semestre são dadas três notas; • A nota final é obtida pela média aritmética das notas dadas durante o curso; • É considerado aprovado o aluno que obtiver a nota final superior ou igual a 60 e que tiver comparecido a um mínimo de 40% das aulas. • Deve ser possível para este sistema: • Calcular a nota final de cada aluno, a maior e a menor nota da turma, bem como a média da turma. • Calcular o total de alunos reprovados • Calcular a porcentagem de alunos reprovados por freqüência
  37. 37. Testar para encontrar defeitos?
  38. 38. Processo Evolucionário
  39. 39. Processo Evolucionário Desde o início do desenvolvimento
  40. 40. Processo Evolucionário Desde o início do desenvolvimento Evolução dos testes ligada à evolução do Sistema
  41. 41. Processo Evolucionário Desde o início do desenvolvimento Evolução dos testes ligada à evolução do Sistema Adaptável e Incremental
  42. 42. Tipos de Teste
  43. 43. Caixa Branca
  44. 44. Testes Unitários
  45. 45. Testes Unitários Testam um único componente Todos os demais são simulados
  46. 46. Testes Unitários Testam um único componente Todos os demais são simulados JUnit / JMock / Easymock
  47. 47. Testes Unitários public void addValor(int valor) { this.saldo += valor } public void getSaldo() { return this.saldo; } @Test public void verificaCalculoDoSaldo() { Conta conta = new Conta(200); conta.addValor(100); assertEquals(300, conta.getSaldo()); }
  48. 48. Testes de Integração
  49. 49. Testes de Integração Testam integração entre componentes
  50. 50. Testes de Integração Testam integração entre componentes Codigo+BD / Codigo+Web
  51. 51. Testes de Integração Testam integração entre componentes Codigo+BD / Codigo+Web JUnit / DBUnit / HsqlDB / Fit
  52. 52. Testes de Integração @Test public void testAddUsuarios() { GerenteUsuarios gerente = new GerenteUsuarios(); int numUsuarios = gerente.getNumeroUsuarios(); gerente.addUsuario(new Usuario(“Rocco”)); int novoNumUsuarios = gerente.getNumeroUsuarios(); assertEquals(novoNumUsuarios,(numUsuarios+1)); }
  53. 53. Testes de Aceitação
  54. 54. Testes de Aceitação Testam uma funcionalidade, estória ou um caso de uso
  55. 55. Testes de Aceitação Testam uma funcionalidade, estória ou um caso de uso JUnit / Selenium
  56. 56. Caixa Preta
  57. 57. Análise de Valor Limite Extrapolar os valores máximo e mínimo de uma funcionalidade Null Valores Negativos Listas Vazias etc
  58. 58. Transição de Estado Entrada Estado 1 Estado 2 Transição Saída
  59. 59. Transição de Estado Ordem Ação 1 Iniciar Edição de dados do Usuário “xpto” 2 Modificar permissao de acesso para admin 3 Sair do Sistema 4 Entrar no sistema como usuário “xpto” 5 Verificar se menu admin está disponível
  60. 60. Testes de Sintaxe Entrada de Dados Campos Numéricos Campos RG / CPF / CNPJ Máscaras
  61. 61. Testes de Desempenho O quão tolerante a falha? Simular falhas na rede Excluir objetos Múltiplos acessos Simultâneos
  62. 62. Testes de Caminho Objetivo Executar todas as possibilidades do sistema
  63. 63. Testes de Integração No final, se juntar tudo, funciona?
  64. 64. teste da instalação teste da implantação teste de desempenho teste de compatibilidade com outros sistemas teste de conversão teste da documentação teste do backup teste da recuperação
  65. 65. Exercício III Matrícula Online
  66. 66. Execício III • O Aluno acessa o Site do Curso com seu usuário e senha • Ao acesso a sessão especial de quot;Pedido de Matrículaquot;, ele pode iniciar o processo de solicitacao • Ele entao seleciona as disciplinas. Como cada uma das disciplinas possui pré-requisitos, ele deve ser impedido de matricular-se numa disciplina que não possua pré-requisitos necessários • Todo aluno deve possuir, no máximo, 30 créditos • Disciplinas podem ter entre 1 e 8 créditos • Após fazer a solicitação, um comprovante é apresentado ao usuário contendo um boleto bancário para o pagamento das taxas de matrículas referentes às disciplinas solicitadas. (Cada disciplina custa R$ 10,00)
  67. 67. Testes Unitários
  68. 68. Testes Unitários Não será Teste Unitário se:
  69. 69. Testes Unitários Não será Teste Unitário se: • Se conecta a um banco de Dados • Utiliza a rede • Utiliza o sistema de arquivos • Não é executável individualmente • Precisa de uma configuração do Ambiente
  70. 70. Testes Unitários
  71. 71. Testes Unitários Objetivos: Um único cenário testado
  72. 72. Testes Unitários Objetivos: Um único cenário testado Independentes
  73. 73. Testes Unitários Objetivos: Um único cenário testado Independentes Contidos: Não afetam outros testes
  74. 74. Testes Unitários Objetivos: Um único cenário testado Independentes Contidos: Não afetam outros testes Rápidos: Execução instantânea
  75. 75. Testes Unitários A forma básica para testes é a seguinte: • Crie um objeto e coloque-o em um estado conhecido • Invoque um método, o qual retorne um resultado real • Crie um objeto representando o resultado esperado • Invoque assertEquals(resultadoEsperado, resultadoReal) para confirmar se a implementação está correta.
  76. 76. Testes Unitários Exercícios Crie uma lista Adicione um Valor Verifique se o valor está contido na lista
  77. 77. Testes Unitários Organização
  78. 78. Testes Unitários Organização Separados do Código de Produção Juntos ao código Em pacotes separados
  79. 79. Testes Unitários Exercícios Deve ser possível sacar valores de uma Conta
  80. 80. Testes Unitários Removendo Duplicações nos testes @Before @After
  81. 81. Exercício IV Sistema de controle de Estoque Objetivo Criar testes unitários para o sistema
  82. 82. Controle de Estoque Adicione Itens ao Estoque ( nome) Remova Itens do Estoque Liste Itens em Estoque Itens não devem estar repetidos (lançar exceção)
  83. 83. Benefícios
  84. 84. TDD
  85. 85. 3 Leis do TDD
  86. 86. 3 Leis do TDD Escreva um teste que falhe
  87. 87. 3 Leis do TDD Escreva um teste que falhe Faça o teste passar
  88. 88. 3 Leis do TDD Escreva um teste que falhe Faça o teste passar Refatore
  89. 89. Motivação
  90. 90. Motivação Confiabilidade
  91. 91. Motivação Confiabilidade Testabilidade do Sistema
  92. 92. Motivação Confiabilidade Testabilidade do Sistema Dificuldade em adicionar mudanças
  93. 93. Exemplo Prático
  94. 94. Encontrar o número de dias entre um dado Dia e a data atual: Hoje: 22/04/2009 20/04/2009: “2 dias atrás” 8/04/2009: “2 semanas atrás” http://dojofloripa.wordpress.com

×