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. Salto
na Computação
Sandy Maciel
@_sandymaciel
br.linkedin.com/in/sandymaciel/
sandy@saltonacomputacao.com
www.saltonacomputação.com
Quem sou
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
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. 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)
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. 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. 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. 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. 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. Salto
Ciclo de vida de desenvolvimento
na Computação
Big-Bang
15. Salto
Ciclo de vida de desennavCoomlvpuimtaçeãonto
Modelo Cascata
16. Salto
Ciclo de vida de desennavCoomlvpuimtaçeãonto
Modelo em Espiral
17. Salto
Ciclo de vida de desennavCoomlvpuimtaçeãonto
Modelo Incremental e Iterativo
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.
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. 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
24. Salto
na Computação Processo de Teste
Um software é considerado com qualidade quando atende as
categorias da qualidade - ISO/IEC 9126-1
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
27. Salto
na Computação Por que planejar?
Para planejarmos os testes temos que
conhecer os requisitos do projeto a ser
desenvolvido
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. Salto
na Computação Para elaborar o teste, devemos saber:
O que vamos testar?
Quando vamos testar?
Como iremos testar?
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. Salto
Fatores de Qualidade
na Computação
Correção
Confiabilidade
Eficiência
Integridade
Usabilidade
Manutenabilidade
Testabilidade
Flexibilidade
Reusabilidade
Interoperabilidade
Portabilidade
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.
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.
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. 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. 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. 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.
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. 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. 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. 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. 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. 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. 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. 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. Salto
Gerência de Configuração (GCS)
na Computação
Controle de Versão – Algumas Ferramentas
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. 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. 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. Salto
Desafios para um bom Caso de Teste
na Computação
•Mudança de Requisito
•Mudança de Cronograma
•Rotatividade da Equipe
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. 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. 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.
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.
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.
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. 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. 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.
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. 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. 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
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. Salto
na Computação
Essas ações são divididas como:
Sincronização
Navegação
Interrogação
Manipulação
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. 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)
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. 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. 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. Salto
na Computação
Algumas estratégias utilizadas para interrogar
elementos:
ID
CSSSELECTOR
NAME
XPATH
LINKNAME
CLASSNAME
…
driver.findElement(By.cssSelector(“.class”));
109. Salto
na Computação
driver.findElement(By.id(“id”));"
O que eu quero fazer
Como eu quero fazer
elemento
Selenium WebDriver - ID
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”));"
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. 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