Noções em teste de software e introdução a automação

1.154 visualizações

Publicada em

Noções em teste de software e introdução a automação

Publicada em: Tecnologia

Noções em teste de software e introdução a automação

  1. 1. Noções em Testes de Software e Introdução ao Selenium Webdriver
  2. 2. – É proibida a cópia e reprodução de qualquer parte do conteúdo desta apresentação incluindo, mas não limitado a, textos, imagens, gráficos e tabelas. Esta apresentação é protegida pelas leis de Copyright e são propriedade do Salto na Computação. – Quando houver permissão de uso deste material, é obrigatória a referência bibliográfica conforme as normas vigentes. Salto – Não é permitido modificar, copiar, guardar em banco de dados público, alugar, vender ou republicar qualquer parte desta apresentação, sem prévia permissão explícita do autor. na Computação
  3. 3. Salto na Computação Sandy Maciel @_sandymaciel br.linkedin.com/in/sandymaciel/ sandy@saltonacomputacao.com www.saltonacomputação.com Quem sou
  4. 4. Salto na Computação Agenda Noções Básicas em Teste de Software Princípios e Conceitos de Teste de Software Visão Geral do Processo de Teste Processo de Testes Introdução ao Selenium WebDriver Introdução > O que é Automação de Testes? > Ferramentas > Selenium Preparando o ambiente Conceitos básicos Exercícios
  5. 5. Salto Princípios e Conceitos Básicos na Computação
  6. 6. Salto Origem da expressão “bug” na Computação Em 1947, os cientistas estavam testando o computador Mark II, aquele que ocupava uma sala imensa e operava com centenas de válvulas enormes, quando a máquina de repente parou de funcionar. Foram pesquisar a causa e encontraram um inseto impedindo que um dos contatos funcionasse. Este foi o primeiro bug encontrado.
  7. 7. Salto Erro, Falha ou Defeito? na Computação Erro – Engano cometido por seres humanos Falha – Resultado ou manifestação de um ou mais defeitos Defeito – Resultado de um erro encontrado num código ou num documento (bug)
  8. 8. Salto Quando um bug ocorre? na Computação
  9. 9. Salto Teste de Software? na Computação Teste de software é o processo formal de avaliar um sistema ou componente de um sistema por meios manuais ou automáticos para verificar se ele satisfaz os requisitos especificados [IEEE 729, 1983].
  10. 10. Salto . Por que definir um procensasCoo mdpeut taeçãsotes? A execução dos testes e a documentação são padronizadas, permitindo planejamento e comparação de eficácia entre projetos. Os papéis e responsabilidades são definidos de forma clara. Os testes alcançam a eficácia e o resultado esperado.
  11. 11. Salto . Qual o objetivo do ntaeCsomtapudtaoçãro? Investigar o software, conforme o processo de teste utilizado, a fim de garantir que a qualidade do software e os requisitos implementados estão de acordo com o solicitado pelo cliente. Técnico responsável pela execução dos casos e scripts de teste
  12. 12. Salto . Papéis em Teste de Software na Computação Testador Arquiteto de Teste Analista de Teste Auditor da QA Automatizador de Gerente de Teste Teste Líder de Teste Engenheiro de Teste
  13. 13. Salto . Ciclo de vida de desennavCoomlvpuimtaçeãonto O processo usado para criar um software, desde a sua concepção inicial até a sua entrega final, é chamado de ciclo de vida. Modelos de Ciclo de Vida de desenvolvimento de software: •Big-bang (cria e conserta) •Cascata •Espiral •Incremental e iterativo •RUP
  14. 14. Salto Ciclo de vida de desenvolvimento na Computação Big-Bang
  15. 15. Salto Ciclo de vida de desennavCoomlvpuimtaçeãonto Modelo Cascata
  16. 16. Salto Ciclo de vida de desennavCoomlvpuimtaçeãonto Modelo em Espiral
  17. 17. Salto Ciclo de vida de desennavCoomlvpuimtaçeãonto Modelo Incremental e Iterativo
  18. 18. Salto Ciclo de vida de desennavCoomlvpuimtaçeãonto RUP
  19. 19. Salto Ciclo de vida de desennavCoomlvpuimtaçeãonto O profissional de teste deve se adaptar ao modelo adotado pela empresa e, daí, aplicar, da melhor maneira as técnicas de teste de software.
  20. 20. Salto Processo de Teste – Uma visão geral na Computação
  21. 21. Salto na Computação Processo de Teste Testes podem ser considerados como m projeto? “ Um empreendimento temporário, planejado, executado e controlado, com objetivo de criar um produto ou serviço único.” PMBOK , 2000 - PMI
  22. 22. Salto na Computação Processo de Teste  Testar é um exercício de gerência de risco  Treinamento em teste reduz custos a longo prazo  As estimativas de teste devem ser baseadas no risco do negócio  A estratégia de teste deve ser elaborada através de um trabalho conjunto entre as áreas envolvidas  É melhor e mais barato encontrar um defeito nas primeiras fases do que em produção
  23. 23. Salto na Computação Regra 10 de Myers
  24. 24. Salto na Computação Processo de Teste Um software é considerado com qualidade quando atende as categorias da qualidade - ISO/IEC 9126-1
  25. 25. Salto na Computação Planejar  Adaptar processo de teste para o Projeto  Planejar testes para o Projeto  Definir a estratégia de teste  Plano de Teste Ambiente de Teste  Identificar Riscos do Projeto de Teste Planejar Testes
  26. 26. Salto na Computação Esforço
  27. 27. Salto na Computação Por que planejar? Para planejarmos os testes temos que conhecer os requisitos do projeto a ser desenvolvido
  28. 28. Salto na Computação Planejar REQUISITO Definição de uma característica, atributo, habilidade ou qualidade que um sistema (ou qualquer um de seus módulos e subrotinas) deve necessariamente prover para atender aos seus usuários
  29. 29. Salto na Computação Para elaborar o teste, devemos saber: O que vamos testar? Quando vamos testar? Como iremos testar?
  30. 30. Salto na Computação Estratégia de Teste Nos fornece um roteiro em que descreve os passos a serem conduzidos como parte do teste Objetivos: Determinar o que, quando e como iremos testar. O que define: Ferramentas, técnicas e critérios de conclusão.
  31. 31. Salto Fatores de Qualidade na Computação Correção Confiabilidade Eficiência Integridade Usabilidade Manutenabilidade Testabilidade Flexibilidade Reusabilidade Interoperabilidade Portabilidade
  32. 32. Salto Fatores de Qualidade x nIaSOCo/mIpEuCta-ç9ã1o26 Não confunda com a norma ISO-9126 que especifica as características de qualidade que todo software deve ter.
  33. 33. Salto na Computação ISO/IEC 9126-1
  34. 34. Salto Categorias de Qualidade segundo o Modelo FURPS + na Computação
  35. 35. Salto Dimensões do TesntaeCo(mIpEuEtaEçã)o
  36. 36. Salto Estágios ou Níveis na Computação de Teste • Teste de Unidade: Estágio mais baixo da escala de teste, sendo aplicado nos menores componentes de código criados, visando garantir que estes atendem às especificações funcionais e de arquitetura. Normalmente feito pelo programador. • Teste de Iteração ou Integração: Teste de sistema ao término de cada iteração, dentro de um ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas funções, referentes aos casos de uso da iteração. Normalmente feito pelo analista de sistemas para um módulo ou conjunto de programas. • Teste de Sistema: Execução do sistema como um todo, dentro de um ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas funções, acompanhando cenários sistêmicos elaborados pelo profissional de requisitos do projeto. Normalmente feito pelo analista de testes (caso de testes) em ambiente de testes. • Teste de Aceitação :É a última ação de teste antes da implantação do software, sendo de responsabilidade do cliente. O objetivo deste teste é verificar se o software está pronto e pode ser usado por usuários finais para executar as funções e tarefas para as quais foi construído. Normalmente feito pelo usuário em ambiente de homologação.
  37. 37. Salto Dimensões do TesntaeCo(mIpEuEtaEçã)o
  38. 38. Salto na Computação Tipos de Teste - Usabilidade Teste Interface: Verifica se a navegabilidade e os objetivos da tela funcionam como especificados e se atendem da melhor forma ao usuário. Teste de Usabilidade: Tem por objetivo verificar a facilidade que a aplicação possui de ser claramente compreendido e manipulado pelo usuário.
  39. 39. Salto Tipos de Teste - ConfianabCiloimdpaudtaeção Teste Integridade: Testes destinados a avaliar a robustez do objetivo do teste (resistência a falhas) e a compatibilidade técnica em relação a linguagem, sintaxe e utilização de recursos Teste de Estrutura: Testes destinados a avaliar a adequação do objetivo do teste em relação a seu design e sua formação. Teste de Estresse: Tipo de teste de confiabilidade destinado a avaliar como o sistema responde em condições anormais. Smoke Test: Exercita o sistema em uma única passagem, normalmente utilizando script de execução automática, não devendo ser exaustivo, mas capaz de expor os maiores problemas. O Smoke Test é executado após a construção de cada nova versão (.
  40. 40. Salto Tipos de Teste - Confiabilidade na Computação Teste de avaliação de desempenho ou Benchmark: Tipo de teste que compara o desempenho de um objetivo do teste (novo ou desconhecido) a um sistema e uma carga de trabalho de referência conhecidos. Teste de contenção: Testes destinados a verificar se os objetivos do teste podem lidar de forma aceitável com as demandas de vários atores no mesmo recurso (registros de dados, memória, etc.). Teste de carga: Tipo de teste usado para validar e avaliar a aceitabilidade dos limites operacionais de um sistema de acordo com cargas de trabalho variáveis, enquanto o sistema em teste permanece constante. Geralmente, as medições são tomadas com base na taxa de transferência de dados da carga de trabalho e no tempo de resposta da transação alinhado
  41. 41. Salto Tipos de Teste - SuponartCaombpiultiadçaãode Teste de configuração: Teste destinado a garantir que o objetivo do teste funcione conforme o esperado em diferentes configurações de hardware e/ou software. Esse teste também pode ser implementado como um teste de desempenho do sistema. Teste de instalação: Teste destinado a garantir que o objetivo do teste seja instalado conforme o esperado em diferentes configurações de hardware e/ou software e sob diferentes condições (como no caso de espaço insuficiente em disco ou interrupção de energia). Esse teste é implementado e executado em aplicativos e sistemas.
  42. 42. Salto na Computação Dimensões do Teste (IEEE)
  43. 43. Salto na Computação Técnicas de Teste Estrutural Funcional Assegurar a cobertura de toda a estrutura implementada Assegurar que os requisitos foram atendido
  44. 44. Salto na Computação Processo de Teste – Plano de Teste O Plano de Teste descreve todos os testes requeridos, os recursos e prazos necessários. Deve estar alinhado com a Estratégia de Teste
  45. 45. Salto Processo de Teste – Plano de Teste na Computação Padrão IEEE 829 para elaboração de Planos de Testes: 1.Identificador do Plano de Testes 2.Introdução 3.Itens de teste 4.Módulos ou features do software a serem testados 5.Módulos que não serão testados 6.Abordagem do teste (métricas, metodologias, ferramentas, etc.) 7.Critério de identificação dos 8.Critérios de interrupção ou finalização dos testes 9.Documentação de teste 10. Identificação de quais testes serão necessários e como serão executados (stress, performance, ...) 11. Necessidades de equipamentos e softwares 12. Responsabilidades da equipe envolvida 13. Definição da equipe de teste e das suas necessidades 14. Cronograma (ver roteiro de testes) 15. Riscos e contingências (ver Estratégia de testes) 16. Critérios de aprovação dos testes pelas áreas envolvidas
  46. 46. Salto na Computação Ambiente de Teste “Não é apenas uma configuração de hardware, mas toda estrutura onde o teste será executado” Fonte: Base de Conhecimento em Teste de Software
  47. 47. Salto na Computação Risco no projeto de teste Risco é algum evento no futuro cuja ocorrência poderá causar algum tipo de problema, no caso, ao projeto de teste de software. Um risco pode ser dividido da seguinte forma: •Sintoma •Fonte •Consequência
  48. 48. Salto Risco no projetonadCoem ptuteaçsãtoe Devido a uma <fonte>, o <sintoma> está ocorrendo, podendo causar <consequências>. Sintoma: o que pode indicar o problema Fonte: o que está causando o sintoma Consequência: resultado dos sintomas
  49. 49. Salto na Computação Projetar Versionameto Estimativas de Teste Cenários de Teste Dados de Teste Elaborar Casos de Teste Acompanhar Risco do Projeto Projetar Testes
  50. 50. Salto Gerência de ConfigurançaãCoom(pGutCaçSã)o Controle de Versionamento –Registro e controle das diversas versões geradas –Garantir que o que foi testado é o que de fato será entregue Controle de Mudanças –Definição de prioridades baseadas na severidade do problema encontrado, no esforço para corrigi-lo, no impacto no cronograma e no esforço para retestar Auditoria das Configurações - Quem fez a mudança e como podemos reproduzir a mudança?
  51. 51. Salto Gerência de Configuração (GCS) na Computação Controle de Versão – Algumas Ferramentas
  52. 52. Salto na Computação O que? Onde? Quando? Como? Processo de Teste - Projetar Elaborar Casos de Testes Configurações Iteração Caso de Teste como motivador do teste Requisitos Implementação
  53. 53. Salto na Computação Algumas definições •Casos de Testes são derivados de uma especificação formal que define os requisitos •Caso de Teste é uma especificação detalhada do teste, composta por conj. de entradas, condições de execução e resultados esperados •Cenário de Teste é uma história hipotética usada para ajudar as pessoas a solucionar um problema complexo, recriando ou visualizando um caminho a seguir. •Dentro de um cenário de testes podemos ter um ou mais casos de teste
  54. 54. Salto Métodos de Elaboração de Casos de Teste na Computação Step-by-Step – Identificar um caso de teste para cada requisito e considerar entradas e saídas, entradas especiais, entradas inválidas, etc. Causa-efeito – Faz-se uma tabela de causa e efeito. Nela são decididos as combinações mais relevantes a serem testadas. PairWise – Cada par de parâmetros seja coberto por um caso de teste. Classes de equivalência – É construída de modo agrupar os casos de teste para os quais o comportamento do sistema seja o mesmo; Análise de valores limítrofes – Testar valores limites do domínio de entrada;
  55. 55. Salto Desafios para um bom Caso de Teste na Computação •Mudança de Requisito •Mudança de Cronograma •Rotatividade da Equipe
  56. 56. Salto na Computação Executar Executar Casos de Teste Gerar Resultado de Teste (log) Acompanhar Defeitos Executar Re-teste Executar Testes “especiais” Executar Testes
  57. 57. Salto na Computação “A execução poderá consumir 40% ou menos do tempo total do esforço de teste” Martin Pol Frequentemente os testes são executados o mais rápido possível Processo de Teste - Executar Executar
  58. 58. Salto na Computação Executar Fluxo de Execução “A etapa de execução dos testes, dentro do ciclo de vida dos testes, para que seja bem sucedida vai depender de tudo o que foi feito anteriormente e que servirá de base para o cumprimento desta etapa” Fonte: Base de Conhecimento em Teste de Software.
  59. 59. Salto na Computação Fluxo de Execução
  60. 60. Salto na Computação Mas… Quando os testes terminam? Como saber o momento adequado para finalizar os teste?
  61. 61. Salto na Computação
  62. 62. Salto Gerência dnea CDomepuftaeçãiotos
  63. 63. Salto Gerência de na Computação Defeitos Ferramentas  Jira Bugzilla Mantis Rational ClearQuest TestDirector TrackRecord e-Manager Enterprise
  64. 64. Salto na Computação Custo do Bug
  65. 65. Salto na Computação
  66. 66. Salto na Computação
  67. 67. Salto na Computação Importância do Defeito ($)
  68. 68. Salto na Computação Custo da correção de um defeito após encontrá-lo
  69. 69. Salto na Computação Identificação do Defeito
  70. 70. Salto na Computação Reportar Defeito
  71. 71. Salto na Computação Reportar Defeito
  72. 72. Salto na Computação Severidade X Prioridade
  73. 73. Salto na Computação Reportar Defeito Graus altos de severidade correspondem também a graus altos de prioridade?
  74. 74. Salto na Computação
  75. 75. Salto Analisar RenasCuomltpautdaçoão
  76. 76. Salto na Computação
  77. 77. Salto Introdução à automação na Computação
  78. 78. Salto O que são testes autonma Caotmizpautdaçoãso? São programas ou scripts que exercitam determinadas funcionalidades do software e fazem verificações automáticas nos resultados obtidos. Ou seja, é um teste, que é executado automaticamente, onde se é conhecido todo o cenário, ações que devem ser realizadas e os resultados esperados. Algumas das principais vantagens dos testes automatizados são: capacidade de reprodutibilidade e velocidade na execução. A automação de testes é uma área em franca expansão, no entanto, é uma área ainda muito imatura. Muitos dos sucessos nos projetos de automação de testes são decorrentes de processos empíricos de tentativa e erro.
  79. 79. Salto AUTOMATIZADOnSa Computação Ajudam na documentação Cobrem muitos casos Segurança na manutenção Rodam rápido
  80. 80. Salto Automatizando testes vonacêCocmopuntasçeãgoue: Simular grandes quantidades de dados ou usuários. Medir o tempo de execução de certas partes do programa. Encontrar gargalos.
  81. 81. Salto na Computação ATENÇÃO
  82. 82. Salto O que é automanatiCzoamrpu?tação Testes automatizados são, em geral, utilizados para testes de regressão. Ou seja, testes que devem ser frequentemente executados e/ou demandam muito tempo para execução devem ser automatizados.
  83. 83. Salto Melhores práticas na AutomnaaCçoãmop udteaç Tãeoste  Automação não é um processo de teste!  Automatize os testes críticos primeiro  Incorpore testabilidade ao aplicativos  As ferramentas de automação de testes também têm defeito!
  84. 84. Salto Como desenvolver um testenaauCotmomputaatçizãaodo? 1. O primeiro passo para se desenvolver um teste automatizado é selecionar o requisito ou funcionalidade alvo e, com base nas especificações, pensar e/ou documentar os possíveis cenários de testes. 2. A seguir, deve-se selecionar um dos cenários e elaborar o caso de testes, onde será especificado o passo-a-passo para a execução do teste. 3. O ideal é que para cada teste automatizado, tenha-se um caso de teste como base. 4. Após a especificação do caso de testes, é hora de criar os scripts de testes. Para isso, precisamos utilizar uma ferramenta de automação de testes.
  85. 85. Salto Que ferramentas utilizar? na Computação
  86. 86. Salto na Computação
  87. 87. Salto Selenium WebDriver na Computação
  88. 88. Salto Selenium??na Computação • O Selenium reúne um conjunto de ferramentas usadas para a criação de scripts de automação de testes de regressão/funcionais para aplicações Web. • Os testes podem ser executados em qualquer navegador, desde que suporte Javascript.
  89. 89. Salto Selenium??na Computação O Selenium possui 4 módulos: – Selenium IDE : Ambiente de desenvolvimento integrado para scripts selenium – Selenium RC : Teste web em qualquer linguagem de programação – Selenium WebDriver : Sucessor do RC, a grande diferença é que ele não necessita de um servidor – Selenium Grid : É o selenium server (via terminal)
  90. 90. Salto WebDriver?n?a Computação 1. API 2. Pode ser desenvolvido em várias liguagens 3. Roda em vários browsers 4. Simula um usuário
  91. 91. Salto Preparando o Ambiente na Computação
  92. 92. Salto Preparando o AmnbaiCeonmtpeutação Usaremos a API em Java e o Eclipse como IDE 1 – Baixe o Eclipse IDE:
  93. 93. Salto Preparando o AmnbaiCeonmtpeutação 2 – Baixe o jar do Selenium Server
  94. 94. Salto na Computação Preparando o Ambiente 3 – Baixe a API em Java
  95. 95. Salto na Computação Preparando o Ambiente 4 – Coloque os jars baixado em uma única pasta dentro de C:
  96. 96. Salto na Computação Preparando o Ambiente 5 – Abra o eclipse e clique em File > New > Java Project
  97. 97. Salto na Computação Preparando o Ambiente 6 – Nomear projeto
  98. 98. Salto Primeiros Passos - Automação na Computação
  99. 99. Salto na Computação Quais conhecimentos mínimos precisamos ter para automatizar uma página web? Abrir Navegador Ler URL Guardar textos da página Clicar em links Clicar em botões Preencher Campos
  100. 100. Salto na Computação Essas ações são divididas como: Sincronização Navegação Interrogação Manipulação
  101. 101. Salto Primeiros Passos - Junit na Computação
  102. 102. Salto na Computação 1. Usaremos o Junit, que é um framework de testes java, ele irá nos auxilixar nos testes pois apartir da notação @Test 2. Sempre devemos identicar um método público com o @Test
  103. 103. Salto na Computação O Junit também nos ajuda na utilização de Assertions ( assegurar informações). •assertTrue •assertEquals asserTrue ( condição) asserTrue ( mensagem,condição) assertEquals(esperado, obtido) assertEquals(mensagem, esperado, obtido)
  104. 104. Salto Primeiros Passos – Selenium WebDriver na Computação
  105. 105. Salto na Computação • Sempre devemos passar o browser que utilizaremos, no nosso caso usaremos o Firefox ( nativo ) • Usaremos a classe WebDriver como ponto de partida 1. Instanciar o browser
  106. 106. Salto na Computação Métodos de Navegação get ---- abre a página to(url) --- para uma url refresh() --- atualiza a página forward() --- avança back() --- volta
  107. 107. Salto na Computação Métodos de Interrogação Utilizando o objeto driver getTitle() getCurrentURL() getPageSource() findElement() findElements() http://www.w3.org/community/webed/wiki/HTML/Elements
  108. 108. Salto na Computação Algumas estratégias utilizadas para interrogar elementos: ID CSSSELECTOR NAME XPATH LINKNAME CLASSNAME … driver.findElement(By.cssSelector(“.class”));
  109. 109. Salto na Computação driver.findElement(By.id(“id”));" O que eu quero fazer Como eu quero fazer elemento Selenium WebDriver - ID
  110. 110. Salto Selenium WebDriver – CnSaSC Somelpeucttaoçãro Localiza o elemento utilizando seu estilo elemento #id .classe elemento[atributo='valor’] elemento > elemento driver.findElement(By.cssSelector(“.class”));"
  111. 111. Salto Selenium WebDrivern–a CXopmaptuhtação driver.findElement(By.xpath(//*[@id="div_pass_background"]
  112. 112. Salto na Computação Selenium WebDriver – Manipulação click() • clear() • sendKeys(String) • submit() driver.findElement(By.xpath(//*[@id="div_pass_background"]
  113. 113. Certificações •CBTS/ALATS http://www.alats.org.br/portal •CTFL/ISTQB - http://www.bstqb.org.br/
  114. 114. Referências •Myers, Glenford J. The Art of Software Testing. Ed. Wiley, 2004. •Whittaker, J.A. “What Is Software Testing? And Why Is It So Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. •Sembugs.com •www.saltonacomputacao.com •Base de conhecimento em testes de software
  115. 115. Referências •Myers, Glenford J. The Art of Software Testing. Ed. Wiley, 2004. •Whittaker, J.A. “What Is Software Testing? And Why Is It So Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79. •Sembugs.com •www.saltonacomputacao.com •Base de conhecimento em testes de software •http://www.w3schools.com/cssref/css_selectors.asp •http://net.tutsplus.com/tutorials/html-css-techniques/the-30- css-selectors-you-must-memorize/ •Eliasnogueira.com •http://www.devmedia.com.br/artigo-engenharia-de-software-5- melhores-praticas-na-automacao-de-testes/10249
  116. 116. Salto na Computação
  117. 117. Salto na Computação Contatos @_sandymaciel br.linkedin.com/in/sandymaciel/ sandy@saltonacomputacao.com www.saltonacomputação.com
  118. 118. Salto na Computação OBRIGADA 

×