O documento fornece informações sobre os serviços de uma empresa de testes de software chamada Qualister, incluindo treinamentos em automação de testes com Selenium, consultoria em teste, terceirização de profissionais, avaliação de usabilidade e testes de performance. O documento também apresenta detalhes sobre o instrutor de um curso de automação de testes com Selenium.
1. (48) 4052-9536 / 9540
contato@qualister.com.br
• Terceirização de profissionais
• Consultoria de teste
• Avaliação de usabilidade
• Automação de testes
• Testes de performance
• Treinamentos
Treinamento
Automação de testes com
Selenium
www.qualister.com.br
2. Quer saber mais?
Estes são apenas alguns slides do curso
de automação de testes com selenium
Para maiores informações e novas turmas, visite nosso site:
http://www.qualister.com.br/cursos
www.qualister.com.br
4. Instrutor
Elias Nogueira
Email: elias.nogueira@gmail.com
Blog: http://sembugs.blogspot.com
Arquiteto de Teste de Software com ênfase em automação de Teste. Atualmente trabalha como Consultor
Técnico na linha de ALM da Hewlett Packard e Consultor em Automação e Teste e Instrutor na Qualister.
Possui a certificação CSTE – Certified Software Tester pela QAI e possui uma Pos Graduação em Teste de
Software
Já deu diversas palestras sobre Java e Teste de Software. Ativo na comunidade de Teste também
coordenou alguns eventos e encontros de testes, como no Testadores e no The Developers Conference
@eliasnogueira
http://sembugs.blogspot.com
http://slideshare.net/elias.nogueira
http://about.ne/eliasnogueira
www.qualister.com.br
5. Sobre a Qualister
• Fundação: 2007.
• Sobre a Qualister: A Qualister é uma empresa nacional, constituída a partir da união
de profissionais qualificados e certificados na área de testes e qualidade de
software, com o objetivo de integrar, implementar e implantar soluções com base nas
melhores práticas do mercado e normas internacionais.
• Colaboradores: A Qualister é composta por colaboradores pós-graduados e
certificados na área de testes (CBTS, CSTE) com larga experiência na indústria de
Tecnologia da Informação.
• Área de atuação: A Qualister é uma empresa especializada em serviços de
qualidade e teste de software. Tem como linhas de atuação consultoria em
teste/qualidade de software, outsourcing (terceirização dos serviços através da
alocação de profissionais) e treinamentos.
www.qualister.com.br
6. Parcerias internacionais
Soluções para automação, profilling e gestão
Soluções para testes de performance
Soluções de apoio a avaliação de usabilidade
www.qualister.com.br
8. O que é o Selenium
• Selenium é um conjunto de ferramentas para automação de
browsers web
• Atualmente é composto por 4 grandes projetos
Selenium IDE
Plugin do Firefox que permite a gravação e execução de ações efetuadas
em uma página web
Selenium Remote Control
Permite o controle e execução de scripts em outros browsers e máquinas
Também utilizarmos linguagens de programação para criar os scripts
Selenium Webdriver
Emula nativamente diversos browsers localmente ou em máquinas remotas
através de programação
Selenium Grid
Habilita a execução de scripts simultaneamente em diferentes máquinas
www.qualister.com.br
9. O que é o Selenium
• Nosso foco será no Selenium IDE e no Selenium Remote
Control
• O suporte a browsers é bem extenso, como Firefox, Internet
Explorer, Opera, Safari e GoogleChrome
• Também com suporte a linguagens de programação como:
Java, C#, Python, PHP, Ruby e Perl
• E suporte a Sistemas Operacionais: Windows, Linux, OsX e
Solaris
• Para saber mais sobre o suporte do Selenium acesse
http://seleniumhq.org/about/platforms.html
www.qualister.com.br
10. O que é o Selenium
• Uma grande dica é sempre acompanhar a página de
documentação do Selenium, que é atualizada
constantemente, bem como outros itens:
• Documentação: http://seleniumhq.org/docs/
• Twitter: @SeleniumHQ
• Lista de email: http://groups.google.com/group/selenium-
users
• Blog: http://seleniumhq.wordpress.com/
www.qualister.com.br
12. Instalando o Selenium IDE
• É um plugin para gravação e execução de testes pelo
Firefox
• O Selenium IDE instala SOMENTE no browser Firefox
• Sempre verifique a página http://seleniumhq.org/download
para encontrar a versão mais recente do Selenium IDE
• O instalador é um Addon do Firefox, porém pode ser
instalado separadamente baixando o arquivo .xpi e
instalando off-line
• Para versões beta do Firefox utilize o repositório do
Selenium IDE
http://xserve.openqa.org:8085/browse/IDE-EDITOR
www.qualister.com.br
13. Instalando o Selenium IDE
• Abra o Firefox e acesse o site
http://seleniumhq.org/download
• Clique sobre o link referente a versão atual do Selenium
IDE, como mostra a imagem abaixo
www.qualister.com.br
14. Instalando o Selenium IDE
• Uma mensagem será apresentada no canto superior
esquerdo do Firefox. Clique sobre o botão “Allow” (Permitir)
• O download será executado. Aguarde o término da
instalação do Addon
www.qualister.com.br
15. Instalando o Selenium IDE
• A tela de instalação do Addon do Selenium será
apresentada. Aguarde por 5 segundos e no botão “Install
Now” (Instalar Agora)
www.qualister.com.br
16. Instalando o Selenium IDE
• Agora no canto superior esquerdo mais uma mensagem
para reiniciar o Firefox e validar a instalação do Addon do
Selenium. Clique em “Restart Now” (Reiniciar)
www.qualister.com.br
17. Instalando o Selenium IDE
• Após o Firefox reiniciar vá até o menu Firefox/Web
Developer/Selenium IDE para abrir o Selenium IDE
www.qualister.com.br
20. Instalando o Firebug
• Firebug é uma ferramenta de desenvolvimento web onde
podemos editar, debug e monitorar CSS, HTML e Javascript
em uma página web
• Utilizaremos uma pequena funcionalidade do Firebug para
nos ajudar em alguma automações com o Selenium
www.qualister.com.br
21. Instalando o Firebug
• Acesse a página http://getfirebug.com
• Clique sobre o “botão vermelho” “Install Firebug”
• Você será direcionado para a página de download. Clique
sobre o item recomendado para iniciar a instalação
www.qualister.com.br
22. Instalando o Firebug
• Você será redirecionado para a ela de Add-ons do Firefox.
Clique no botão Add to Firefox para iniciar a instalação
www.qualister.com.br
23. Instalando o Firebug
• Uma mensagem aparecerá no canto superior esquerdo do
browser. Clique no botão “Allow” (Permitir)
• Aguarde o término do download
www.qualister.com.br
24. Instalando o Firebug
• A tela de instalação do Addon do Firebug será apresentada.
Aguarde por 5 segundos e no botão “Install Now” (Instalar
Agora)
www.qualister.com.br
25. Instalando o Firebug
• Agora no canto superior esquerdo mais uma mensagem
para reiniciar o Firefox e validar a instalação do Addon do
Firebug. Clique em “Restart Now” (Reiniciar)
www.qualister.com.br
26. Instalando o Firebug
• Após o Firefox reiniciar vá até o menu Firefox/Web
Developer/Firebug ou clique sobre o botão para habilitar
a barra do Firebug
www.qualister.com.br
27. Firebug - Inspector
• A maior funcionalidade do Firebug que utilizaremos para
nos ajudar na automação com o Selenium é chamado de
Inspector.
• Podemos ativar o inspector pelo botão
• Quando o ativamos passamos o mouse sobre qualquer
elemento dentro da página web para visualizar o
código-fonte do elemento que estiver apontado com a seta
do mouse
www.qualister.com.br
29. Estrutura do Selenium IDE
URL inicial
Barra de menu
Suíte de Teste
Estrutura e edição do
script
Informações gerais
www.qualister.com.br
30. Estrutura do Selenium IDE
• A URL Base é muito importante, pois quando iniciamos a
gravação do script um comando chamado open é
adicionado com o endereço da página, menos a base de
acesso.
• Com isso podemos trocar o endereço base e o script
continua funcionando
• A barra Fast Slow controla a velocidade do script. Procure
utiliza-la somente em caráter de visualização das ações dos
scripts. Aprenderemos como fazer esperar e não depender
dessa funcionalidade do Selenium IDE
www.qualister.com.br
31. Estrutura do Selenium IDE
• A barra de TestCase lista todos os scripts criados e é onde
podemos agrupar diversos scripts e salvar uma suíte de
teste
• O conjunto de Estruturação de Script é onde visualizamos
os comandos que estão sendo gravados, onde também
podemos editá-los
• O painel de Informações Gerais apresenta o log de
execução, referência de comandos entre outras
informações
www.qualister.com.br
32. Selenese, a linguagem do Selenium IDE
• Todos os scripts gravados e salvos como TestCase são
chamados de Selenese
• Selenese é uma “linguagem” própria do Selenium através
de comandos por palavras-chave (Keyword Driven)
• A visualização do código-fonte nada mais é do que uma
tabela HTML com a mesma visualização da tabela no
Selenium IDE
www.qualister.com.br
33. Selenese, a linguagem do Selenium IDE
• As Suítes de Teste podem ser salvas com um único script
ou com vários
• A estrutura do código-fonte é nada mais que o caminho
para cada script
www.qualister.com.br
35. Comandos Básicos
• Existem uma série de comandos no Selenium IDE já
prontos
• Visualizamos estes comandos no próprio Selenium IDE pela
combo Command
www.qualister.com.br
36. Comandos Básicos
• Existem basicamente três divisões de comandos: de
garantia ou verificação, de ação e gerais
• Os comandos de garantia e verificação podem ser
identificados como verify... ou assert...
Ex: assertTextPresent garante que um determinado texto
está contido na página
• Asserts: garante que uma certa informação está na página,
se não estiver falha e para a execução do script
• Verifys: verifica se uma certa informação está na página, se
não estiver marca o comando como erro e continua a
execução do script
www.qualister.com.br
37. Comandos Básicos
• Podemos chamar os comandos de ações os que mudam o
comportamento da página como click, keys, mouse, etc...
• Um ponto importante sobre o comando click é que
podemos visualizar o comando clickAndWait...
Isso indica que o clique mudou o comportamento da página
e o Selenium fará uma espera até a página ser carregada
• Todos os comandos que terminam com AndWait fazem
uma espera até que a página seja 100% carregada ou que
o tempo total de espera seja ultrapassado. Ele é
configurado pelo menu Options/Options/Default timeout value...
www.qualister.com.br
38. Comandos Básicos
• As ações gerais são qualquer outro comando específico
dentro do Selenium
• Sempre que precisarmos entender o que faz um comando
selecionamos ele através da combo Command e a aba
Reference é habilitada.
Poderemos ver o que o comando realmente faz sobre a
página ou sobre os elementos
www.qualister.com.br
40. Conceituação para Exercício 1
• Locators: são formas de identificar um elemento dentro da
página web. É um dos principais pontos que devemos
entender no Selenium
• Os locators podem ser do tipo:
– Id: localização pelo ID de um elemento
– Nome: localização pelo nome de um elemento
– Xpath: localização ou por funções ou por navegação
– Links: localização por um link na página
– DOM: localização através de propriedades via javascript
– CSS: localização por estilos
www.qualister.com.br
41. Conceituação para Exercício 1
• Localização por ID
• Encontra um elemento pelo atributo id
• No exemplo abaixo o único elemento que podemos interagir pelo id é o
form
• Ex: id=loginForm
www.qualister.com.br
42. Conceituação para Exercício 1
• Localização por Name
• Encontra um elemento pelo atributo name
• No exemplo abaixo podemos interagir com quatro elementos: campo de
login e senha, botão de login e botão de limpar
• Ex: id=username
• Observação: como temos dois elementos com o mesmo nome (continue)
o Selenium sempre pega o primeiro que encontra
www.qualister.com.br
43. Conceituação para Exercício 1
• Localização por xpath
• Encontra um elemento através da navegação entre os elementos
• No exemplo abaixo podemos localiza qualquer elemento por xpath e de
diversas formas....
• Ex: //input[3] irá encontrar o botão de login
//input[@name=“continue” and @type=“button” ] irá encontrar o
botão de limpar
www.qualister.com.br
44. Conceituação para Exercício 1
• Localização por link
• Encontra um elemento do link (href) de uma página
• No exemplo podemos encontrar os dois links existentes
• Ex: link=Continue localiza o link de Continue (“continue.html”)
link=Cancel localiza o link de Cancel (“cancel.html”)
www.qualister.com.br
45. Conceituação para Exercício 1
• Localização por DOM
• Encontra um elemento através de javascript
• No exemplo podemos encontrar qualquer elemento
• Ex: documents.forms[0].password localiza o campo de password
www.qualister.com.br
46. Conceituação para Exercício 1
• Localização por CSS
• Encontra um elemento através de um estilo CSS ou navegação na
página
• No exemplo podemos encontrar qualquer elemento
• Ex: css=input.required[type=“text”] localiza o elemento de usuário
css=input[name=“password"] localiza o elemento de senha
www.qualister.com.br
47. Qual a melhor estratégia?
• A melhor estratégia de localização está na ordem abaixo:
– id
– name
– Link
– CSS
– DOM
– Xpath
• Embora CSS esteja em quarto, o Selenium IDE pega a
grande parte dos elementos que não tenham ID ou name por
CSS
• Embora o Xpath esteja por último, existem funções que nos
ajudam a localizar mais facilmente um elemento
www.qualister.com.br
48. Conceituação para Exercício 2
• Comumente as páginas web utilizam funções em javascript
para executarem determinadas tarefas
• O Selenium tem diversos suportes para javascript, como os
comandos abaixo:
– addScript: adiciona um script javascript na página para execução do teste
– assertEval: garante a avaliação de um resultado positivo de um javascript
– assertNotEval: garante a avaliação de um resultado negativo de um javascript
– fireEvent: simula um evento em um determinado elemento
– runScript: executa um javascript
– removeScript: remove uma tag script
– storeEval: guarda o resultado de alguma ação via javascript
– verifyEval: verifica a avaliação de um resultado positivo de um javascript
– verifyNotEval: verifica a avaliação de um resultado negativo de um javascript
– waitForEval: espera por algum resultado positivo de um javascript
– waitForNotEval: espera por algum resultado negativo de um javascript
www.qualister.com.br
49. Conceituação para Exercício 3
• Alertas são mensagens informativas em javascript que
possuem apenas um botão de OK
• Confirmações são mensagens em javascript esperando uma
determinada ação de “sim/não” ou “ok/cancelar”
• Existe uma série de comandos para cada tipo de mensagem,
mas o que não devemos confundir é o tipo de cada um.
Todos os comandos de alertas possuem a palavra alert, e as
confirmações possuem a palavra confirmation
www.qualister.com.br
50. Conceituação para Exercício 3
• Alertas
– assertAlert: garante que um alerta apareceu validando pelo seu texto
– assertAlertNotPresent: garante que um alerta não apareça validando pelo seu
texto
– assertAlertPresent: garante que qualquer alerta apareceu, independente do
seu texto
– storeAlert: guarda a mensagem/texto de um alerta
– storeAlertPresent: guarda a mensagem/texto de um alerta presente na página
– verifyAlert: verfica que um alerta apareceu validando pelo seu texto
– verifyAlertPresent: verifica que um alerta apareça validando pelo seu texto
– verifyAlertNotPresent: verifica que um alerta não apareça validando pelo seu
texto
– waitForAlert: espera por um alerta pelo seu texto
– waitForAlertNotPresent: espera que um alerta não apareça mais na página
– waitForAlertPresent: espera por qualquer alerta na página
www.qualister.com.br
51. Conceituação para Exercício 3
• Os mesmos comandos do Alerta servem para as
Confirmações e tem as mesmas ações, porém com o nome
confirmation ou invés de alert
• O único comando adicionar é
chooseCancelOnNextConfirmation, que enviar um sinal
para que o Selenium ao invés de clicar sobre o botão OK,
clique sobre o botão Cancelar.
www.qualister.com.br
52. Conceituação para Exercício 4
• Popups no Selenium tem o mesmo tratamento de janelas.
• Vale salientar que o Selenium trabalha com janelas, mas não
entende a troca de abas, logo se existirem mais de uma
página ela deverá ser aberta em um novo browser
• O Selenium possui os seguintes comandos para interagir com
janelas
– close: simula o click no botão close da janela ou popup
– descelectPopup: tira o foco atual de uma popup
– selectPopup: coloca o foco em uma popup
– selectWindow: coloca o foco sobre uma janela ou popup
– waitForPopUp: espera por uma determinada popup
– windowFocus: coloca o foco sobre uma janela ou popup
www.qualister.com.br
53. Conceituação para Exercício 5
• Uma página web possui uma série de elementos HTML.
Alguns que podemos interagir diretamente como usuários da
página e outros não.
• Veremos alguns dos principais elementos de integração com
a página, como:
– Input: que pode ser:
• Caixa de texto/Senha
• Radion button
• Checkbox
– Combobox e ListBox
– ListBox
www.qualister.com.br
54. Conceituação para Exercício 6
• Expressões regulares são muito uteis no Selenium, onde
temos três tipos de patterns (modos de uso):
– Global
– Expressões Regulares
– Exatos
• Os Globais podem utilizar a maioria dos caracteres coringa de
expressões regulares e é util quando necessitamos interagir ou
validar certos elementos que tem nomes em comum.
• Utiliza o prefixo glob nos comandos
Ex: click | link=glob: Pesquisar Relatorio *
Neste exemplo ele encontra qualquer link com o que contenha o
texto “Pesquisar Relatorio” como “Pesquisar Relatorio de Cliente”,
Pesquisar “Relatório de Fornecedor,” etc..
www.qualister.com.br
55. Conceituação para Exercício 6
• As Expressões Regulares utilizam todos os recursos da
expressão regular para localizar qualquer tipo de informação na
página ou mesmo valida-las
• Utiliza o prefixo regexp nos comandos
Ex: clicar sobre um link que é uma data na página (21/01/2011)
click | link=regexp: [0-9]{2}/[0-9]{2}/[0-9]{4}
• Para saber mais de como utilizar os recursos de expressão regular
consulte
http://pt.wikipedia.org/wiki/Express%C3%A3o_regular
www.qualister.com.br
56. Conceituação para Exercício 6
• Os Exatos são utilizados quando interagimos com algum elemento
que tenha algum tipo de caracter especial utilizado por expressões
regulares ou globais
• Utiliza o prefixo exact nos comandos
• Ex: Validação do texto “(1 U.S. dollar) * 1 Brazil real = 0.57241”
assertTextPresent | exact:(1 U.S. dollar) * 1 Brazil real = 0.57241
www.qualister.com.br
57. Conceituação para Exercício 7
• Para efetuarmos esperas por eventos em Ajax deveremos
utilizar comandos que iniciem com waitFor
• Essa é a melhor forma de esperar por qualquer informação na
página. Por padrão todas as esperas no Selenium IDE tem o tempo
de 30 segundos. Depois disso um erro de timeout é apresentado
• O ideal em uma página com requisições Ajax é entender qual a
forma de retorno da requisição, seja apresentando um texto,
apresentando uma imagem, um campo, etc... A partir dai
pesquisamos pelo comando waitFor... mais apropriado
• Ex: para uma requisição Ajax que, ao seu término, apresenta o
botão de Remover e que tenha id=delete, podemos utilizar o
comando:
waitForElementPresent | id=delete
www.qualister.com.br
58. Conceituação para Exercício 7
• O timeout do Selenium IDE é configurado pelo menu
Option/Options...
• O campo “Default timeout value of recorded command in
miliseconds” quarda o tempo de espera em milisegundos,
onde 10s = 10.000 ms
www.qualister.com.br
59. Conceituação para Exercício 8
• Para encontrarmos certos tipos de elementos na página web
podemos utilizar algumas funções do xpath
• starts-with: útil quando um elemento tem um mesmo prefixo
Ex: elemento como caixa de texto: id=name1345
click | //input[starts-with(@id,’name’)]
• ends-with: útil quando um elemento termina com uma
mesma informação
Ex: elemento imagem: <img src=“icon_1234_small32x32.png />
click | //img[ends-with(@src,’small32x32.png’)]
www.qualister.com.br
60. Conceituação para Exercício 8
• contains: muito útil para encontrarmos elementos que
contenham certa informação.
Ex: lista de informações onde cada uma é uma div, e
queremos encontrar o valor “Fulano de Tal”:
<div[id=123]>Fulano de Tal</div>
• Comando para encontrar:
//div[contains(text(),’Fulano de Tal’)]
• Neste caso utilizamos também a função text(), para pegar o texto
de cada elemento (neste caso uma div), assim todos os elementos
são verificados e somente o que satisfaz a condição retorna
www.qualister.com.br
61. Conceituação para Exercício 9
• Em diversos momentos é necessário garantir uma certa
informação, que é nosso resultado esperado.
• Muitas vezes a página possui a mesma informação em locais
diferentes, mas precisamos garantir que a infomação está em
um determinado local
• É muito valido, neste cado, que coloquemos o caminho para
esta informação através de xpath
• Isso vai garantir que a informação que foi validada é a que
esperamos
• Veremos como esperar por uma informação em determinado
local no exercício
www.qualister.com.br
62. Conceituação para Exercício 10
• Este exercício utiliza a mesma lógica das esperas com Ajax
• A dica para este exercício é identificar como é o
comportamento de cada combo e utilizar os comandos para
esperar pelas informações certas
www.qualister.com.br
63. Quer saber mais?
Estes são apenas alguns slides do curso
de automação de testes com selenium
Para maiores informações e novas turmas, visite nosso site:
http://www.qualister.com.br/cursos
contato@qualister.com.br
www.qualister.com.br