Ctai Teste De Software Aula 1

25,062 views
25,333 views

Published on

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.

Published in: Technology, Business

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

×