Atividades de Teste e Cobertura de Código em Java

1.508 visualizações

Publicada em

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.508
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Atividades de Teste e Cobertura de Código em Java

  1. 1. Atividades de Teste e Cobertura de Código Erik Aceiro Antonio
  2. 2. • Bacharelado em Ciência da Computação – Universidade Mackenzie• Mestrado em Engenharia Elétrica – Sistemas de Comunicações Ópticas – Automação e WebLab• Doutorando em Ciência da Computação – Engenharia de Software – Universidade Federal de São Carlos (UFSCar) – Teste de Software para Sistemas Embarcados Críticos• Certificado OCA/OCP/SCJP/LPI• Trabalhei no UOL/Mackenzie como Analista Programador• Professor Universitário• Experiência no ensino de 10 anos• Consultor de TI
  3. 3. aceiro@gmail.com erik_aceiro@hotmail.comhttp://erikblogger.blogspot.com facebook.com/erik.aceiro @eaceiro
  4. 4. Apresentar princípios eamotivação para o uso de atividades de teste Erik | aceiro@gmail.com
  5. 5. O que éatividade de Teste ?
  6. 6. “Testing is the process of executing a program with the intent of finding errors” Myers
  7. 7. As Atividades de Teste promovem…- Auxilia na compreensão do SUT (App)- Os testes devem reduzir “riscos”- Reduzir correçoes manuais e “debug”- Em uma palavra …
  8. 8. Qualidade
  9. 9. O que éQualidade ?
  10. 10. A busca pela qualidade exige um trade-off Risco XOportunidade
  11. 11. O que éQualidade ?
  12. 12. “Qualidade” … Estamos construindo certo o produto ? Estamos construindo o produto certo ?
  13. 13. “Verificação” assegura que- Estamos construindo certo o produto ?- Assegurar que o software está de acordo com a especificação pré- estabelecida- Verificar problemas e defeitos em componentes- Exige a execução de artefatos
  14. 14. “Validação” assegura que- Estamos construindo o produto certo ?- Assegurar que o software está de acordo com os requisitos do cliente- Validar se a construção dos componentes segue a especificação- Não exige a execução de artefatos
  15. 15. Conceitos preliminares
  16. 16. Top-Down/Inside-out
  17. 17. Bottom-up/Outside-in Uso de Mock, Stubs, Drivers (Controllers), Dummy Objects , Fakes Objects
  18. 18. TaxonomiaUm Defeito é uma Erro,se ele é for encontradoDurante a execução dosoftware.
  19. 19. Ciclo de Vida de Defeitos (IEEE 1044-2009)
  20. 20. Atividades de Verifivação & Validação (V&V)São divididas em dois grupos básicos (1) Atividades Estáticas - Não envolve a execução do SUT - Inspeção - Inspeção de Código/Modelos - Revisão - Walkthrough (Passo a Passo) - Checklist - Programação em Pares (XP)
  21. 21. Atividades de Verifivação & Validação (V&V) (2) Atividades Dinâmicas - Atividades de Teste - Envolve a execução do artefato - Exercita caminhos (paths)
  22. 22. “O mais importante na atividade de teste é o projeto e criação efetivo do caso de teste” Myers
  23. 23. O melhor teste é aquele que descobre mais problemas
  24. 24. A Economia de uma Atividade de TesteEsforço Número de Casos de Teste
  25. 25. “it is impractical,often impossible, to find all the errors in a program” Myers
  26. 26. 100 trilhões de instruções
  27. 27. 3,2 milhões de anos
  28. 28. Principle 9: The probability of the existence of more errors in a section of aprogram is proportional to the number of errors already found in that section.
  29. 29. Principais Atividades de Teste Caixa Preta (Teste Funcional) - Critérios - Particionamento de Equivalencia - Análise do Valor Limite - Grafo de Causa-Efeito - Erro de Advinhação Caixa Branca (Teste Estrutural) - Critérios - Statement Coverage (SC) - Decision Coverage (DC) - Condition Coverage (CC) - Decision-Condition coverage (DCC) - Multiple-Condition coverage (MC) - MC/DC
  30. 30. Teste Caixa Branca – White Box Testing
  31. 31. QUIZPodemos executar todas as instruções de um programa com loops ?
  32. 32. Teste Caixa Branca – White Box Testing caso de teste(Entrada; Saída Esperada)
  33. 33. Teste Caixa Branca – White Box Testing caso de teste(A=2,B=0,X=3; 2.5)
  34. 34. Teste Caixa Branca – Cobertura de Instrução caso de teste(A=2,B=0,X=3; 2.5)
  35. 35. Teste Caixa Branca – Cobertura de Instrução caso de teste(A=2,B=0,X=3; 2.5)
  36. 36. Teste Caixa Branca – Cobertura de Instrução caso de teste(A=2,B=0,X=3; 2.5)
  37. 37. Teste Caixa Branca – Cobertura de Instrução caso de teste(A=2,B=0,X=3; 2.5)
  38. 38. QUIZO critério de cobertura de instrução pode ser considerado um critério forte ?
  39. 39. Teste Caixa Branca – Cobertura de InstruçãoDefeito || caso de teste (A=2,B=0,X=3; 2.5)
  40. 40. Teste Caixa Branca – Cobertura de Instrução || caso de teste(A=2,B=0,X=3; 2.5)
  41. 41. Teste Caixa Branca – Cobertura de Instrução || caso de teste(A=2,B=0,X=3; 2.5)
  42. 42. Teste Caixa Branca – Cobertura de Instrução || caso de teste(A=2,B=0,X=3; 2.5)
  43. 43. Teste Caixa Branca – Cobertura de Instrução || caso de teste (A=2,B=0,X=3; 2.5)Defeito NUNCA detectado !!! Critério Fraco
  44. 44. Particionamento de Equivalência
  45. 45. DIMENSION ad[,ad]... n(d[ ,d]...)
  46. 46. Análise do Valor Limite Explora valores no limite de do domínio
  47. 47. 1. Arquivo vazio2. Título Faltando3. 1 caracter para o título4. 80 caracters para o título5. 1 questão de exemplo6. 50 questões de exemplo7. 51 questões de exemplo8. 999 questões de exemplo9. Uma questão vazia
  48. 48. Error Guessing (Erro de Adivinhação) Explora erros típicos em um projeto.
  49. 49. Error Guessing (Erro de Adivinhação)1. A lista de entrada é vazia2. O nome das variáveis foram definidas com clareza3. Todas as entradas foram salvas……
  50. 50. Processo de Teste Tradicional e Ágil
  51. 51. jUnit (Zoo de Patterns)
  52. 52. xUnit
  53. 53. Terminologia básica
  54. 54. Pattern - Setup/Exercise/Verify/Teardown
  55. 55. Pattern – Arrange/Act/Assert (3A’s)Como organizar os casos de teste ?Arrange – Inicialização de todas as pré-condiçõesAct – Um objeto ou método sob testeAssert – Resultados esperadosVantagens Auxilia na compreensão Melhora a manutenção Auxilia na detecção de Smells
  56. 56. Pattern – Arrange/Act/Assert (3A’s)Como organizar os casos de teste ?Arrange – Inicialização de todas as pré-condiçõesAct – Um objeto ou método sob testeAssert – Resultados esperadosVantagens Auxilia na compreensão Melhora a manutenção Auxilia na detecção de SmellsVariações de nomenclatura Build/Operate/Check/Cleat (BOCC Pattern)
  57. 57. import static junit.org.Assert.*;public class MySingleTest{@Test public void test() { String input = "abc"; String result = Util.reverse(input); assertEquals("cba", result); }}...
  58. 58. Exemplos
  59. 59. Usage: java br.com.varitus.nfe.app.RobotMainApp [(-m|--process-email) <process-email>] [(-e|--recover-error) <recover- error>] [(-o|--recover-other) <recover-other>] (-p|--path) <path> [-f|-- process-full-mode] [-r|--recover-full-mode] [-v|--version] [-h|--help] [(-m|--process-email) <process-email>] E-mail da conta do cliente na base de dados da VARITUS que será processado [(-e|--recover-error) <recover-error>] E-mail da conta do cliente na base de dados da VARITUS. As mensagens dessa conta serão movidas da pasta NFE_ERRO para a caixa de entrada [(-o|--recover-other) <recover-other>] E-mail da conta do cliente na base de dados da VARITUS. As mensagens dessa conta serão movidas da pasta NFE_OUTRO para a caixa de entrada (-p|--path) <path> O path clientes da NF-e, esse caminho é o valor da tag configurada no path_cliente.properties em ~/nfe/
  60. 60. class FuncionarioDAOTest{ private FuncionarioDAO dao; @Mock private Transacao transacao; @Before public void init(){ MockitoAnnotations.initMocks(this); dao = new FuncionarioDAO(transacao); } @Test public void testQueChecaUsuario(){ when(transacao.executar("1234")) .thenReturn("Eva 1234 1111"); Funcionario umFuncionario = dao.buscarFuncionario("1234"); assertEquals("Eva" , umFuncionario.getNome() ); assertEquals(1234 , umFuncionario.getSetor()); assertEquals("1111", umFuncionario.getDepto()); verify(transacao, atMostOnce()).executar("1234"); }}
  61. 61. OOOA
  62. 62. Prática
  63. 63. Teste Caixa Branca – White Box TestingCriar a classe JavaCriar o Teste de UnidadeCriar Casos de Testes com critério Statement Coverage Decision/Branch Coverage Condition Coverage
  64. 64. Teste Caixa Preta– Black Box TestingCriar casos de teste com classes deequivalênciaCriar casos de teste com análise dovalor limiteCriar casos de teste com Erros deAdvinhação típicos
  65. 65. aceiro@gmail.com erik_aceiro@hotmail.comhttp://erikblogger.blogspot.com facebook.com/erik.aceiro @eaceiro

×