selenium framework

53
Selenium Framework Testes Automatizados em Aplicações Web

Upload: andre-caldas

Post on 24-Jul-2015

404 views

Category:

Documents


24 download

TRANSCRIPT

Page 1: Selenium Framework

Selenium Framework Testes Automatizados em Aplicações Web

Page 2: Selenium Framework

Menú Definição Framework Selenium Selenese Referência do Selenium Expandindo Selenium Conclusão Duvidas? Autores Referências

Page 3: Selenium Framework

Definição

Page 4: Selenium Framework

O que é o Selenium? Suíte de ferramentas de teste para

sistemas web

Diferentes Abordagens de Automação de Testes

Suporta Vários Browsers e S.Os

Page 5: Selenium Framework

O que é o Selenium? Open Source

Muito Flexível

Simula o comportamento do Usuário.

Page 6: Selenium Framework

Selenium Framework

Page 7: Selenium Framework

Framework Selenium A Suite Selenium é composta de:

Selenium Core: Selenium IDE: Selenium RC: Selenium Grid: Selenium WebDriver(Novo):

Page 8: Selenium Framework

Selenium Core Escrito com JavaScript/DHTML, fazendo

com que possa rodar direto no browser

Está por baixo de toda funcionalidade do Selenium RC e IDE.

Usa uma linguagem de comando chamada Selenese (será explicado depois)

Page 9: Selenium Framework

Selenium IDE IDE Completa.

Extensão do Firefox.

Grava, Edita e Reproduz as interações feitas no browser.

Não Necessita conhecer nenhuma Linguagem de Programação

Page 10: Selenium Framework

Selenium IDE Scripts gravados em formato selenese

automaticamente

Gera código para varias linguagens e frameworks de testes

Bom para aprender sobre a API do Selenium

Page 11: Selenium Framework

Selenium IDE

Page 12: Selenium Framework

Selenium RC Segue uma Arquitetura Cliente – Servidor

Servidor escrito em Java (portabilidade)

Flexibilidade de browsers

Algumas das tarefas atribuídas ao Servidor são: Receber requisições HTTP Lançar e fechar browsers Interpretar comandos Selenese Proxy HTTP

Page 13: Selenium Framework

Selenium RC Os Clientes são Bibliotecas (Drivers)

Atuam como Interfaces entre a linguagem de programação e o Servidor

Possibilita teste mais robustos

Flexibilidade de Linguagens de Programação

Page 14: Selenium Framework
Page 15: Selenium Framework

Selenium Grid Escrito em Java

Testes Paralelos em Múltiplas máquinas Redução de tempo ( Testes Paralelos) Múltiplas combinações de Ambientes

(Browsers e S.Os)

Page 16: Selenium Framework

Selenium Grid Roda em Nuvem ou em Clusters de

Servidores

Cluster: Servidor Hub distribui o teste para várias maquinas rodando Selenium RC

Nuvem: Testes podem ser rodados em servidores nas Nuvens.

Page 17: Selenium Framework
Page 18: Selenium Framework

Selenium WebDriver Mais nova ferramenta da Suite Selenium

Integração com a API WebDriver

Selenium 2.0!

2.0?

Page 19: Selenium Framework

Selenium WebDriver

Page 20: Selenium Framework

Selenium WebDriver Selenium 1.0 tinha dificuldades:

1. eventos de mouse teclado nativos 2. Same origin policy XSS/HTPP(S) 3. Pop-ups, dialogs(Basic Auth;Certificados

auto-assinados; dowload/upload de arquivos)

Page 21: Selenium Framework

Selenium WebDriver Webdriver é rápido e limpo framework para

automação de teste de browser, criado por Simon Stewart

WebDriver suportava poucos browsers(IE, Firefox)

Não suportava Testes Paralelos

Page 22: Selenium Framework

Selenium WebDriver Selenium 2.0 supera as dificuldades da

versao anterior, tendo controle do Browser

WebDriver unido ao Selenium ganha: Testes em Paralelo (Selenium Grid) Multiplicidade de Browsers

Page 23: Selenium Framework

Selenese

Page 24: Selenium Framework

Selenese Linguagem de comandos para elaboração

de Scripts de Teste dentro de tabelas HTML

Está Presente no Selenium Core, que é incluído pelo Selenium IDE e RC

Cada comando representa uma linha desta tabela, fazendo referencia a uma função da biblioteca do Selenium Core

Page 25: Selenium Framework

Selenese Apresenta o formato de tabela abaixo:

Comando 1 Alvo 1 Valor 1

Comando 2 Alvo 2 Valor 2

Comando n Alvo n Valor n

Page 26: Selenium Framework

Selenese Alvos e valores são parametros a serem

usados em alguma função do Core

Exemplo de Caso de Teste com SeleneseMyTest

open /mypage  

type nameField John Smith

click submitButton True

verifyText name John Smith

Page 27: Selenium Framework

Referência do Selenium

Page 28: Selenium Framework

Revisão e Observações Importantes

Estrutura na IDE existem 3 campos comando, alvo e valor, onde: Comando: é o local onde se digita a instrução a ser

executada; Alvo: é o primeiro parâmetro da função a ser

executada. As funções do selenium utilizam este parâmetro para informar qual é o id/name a ser buscado;

Valor: é o campo que também é utilizado para identificar, onde a forma de identificação é feita pelo valor, “o campo contém um valor”.

Page 29: Selenium Framework

Revisão e Observações Importantes

Diferença entre assert e verify: Assert:

Pára a execução quando ocorre um erro; Mais utilizado para verificar se está na página

correta Verify:

Loga o erro, caso exista, sem parar a execução do teste;

Mais para analisar os itens da página.

Page 30: Selenium Framework

Revisão e Observações Importantes

• Comando waitFor :

Toda instrução que tiver o waitFor fica esperando até que uma outra instrução retorne um valor(true or false) para que a mesma saia dessa espera.

Page 31: Selenium Framework

Revisão Prática e Dicas Procurando por checkbox e radio Button específicos

Os checkboxes e os radiosButtons nem sempre possuem um id; No entanto, sempre possuem um name igual aos outros; Para selecionar, precisa-se de um parâmetro diferenciador, que

nesse caso existe o value do mesmo, logo é necessário selecionar utilizando 2 tipos de parâmetros ;

Dica: utilizar o xpath, pois ele consegue buscar pelo name e o value ao mesmo tempo, exemplo:

//input[@name='situacao' and @value='2'] Ele busca por um input que possua um nome situação e o valor

específico igual a 2; Logo é possível identificar e clicar, por exemplo, em um radio ou

checkbox.  

Page 32: Selenium Framework

Estrutura de pastas Pasta config

Nesta pasta devemos colocar todos os arquivos de configuração;

Dica: deve ser criado um arquivo com as configurações mais utilizadas:

Selenium.base: é a primeira url em que o teste vai acessar;

Dessa forma, deve ser configurado no arquivo de configuração e não nos arquivos de teste;

Exemplo: <link rel="selenium.base"

href="https://trunk.voxtecnologia.com.br" />

Page 33: Selenium Framework

Elementos identificadores São os elementos que indicam qual o campo(id

ou name) deve ser aplicada a ação, onde pode-se ter: Identifier = [id ou nome] id = [id] name = [nome] dom = [expressão javascript] xpath = [expressão a ser aplicada] link = [nome da âncora] css = [regra de css2 ou css3] ui = [regra específica string] UI-Elements

Page 34: Selenium Framework

Identificadores: Identifier Identifier (Identificador):

Esse elemento faz uma busca primeiro pelo elemento id, onde caso não seja possível encontrar, faz a devida busca pelo elemento name.Ex: identifier = bolaProcura primeiro pelo id=”bola”,

caso não encontre tal id o selenium procura pelo name=”bola”.

Page 35: Selenium Framework

Identificadores: Id/Name

Id: Elementos que procuram pelos respectivos

id: o Selenium só busca pelo id;

Name: Elementos que procuram pelos respectivos

name: o Selenium só busca pelo name do item requisitado.

Page 36: Selenium Framework

Identificadores: Dom Dom

Este elemento possibilita a utilização de javascript para se identificar um elemento na página;

Possibilidade em capturar um elemento; Possibilidade em executar funções javascript. Ex: dom=document.getElementById('login')

Procura na pagina um elemento que tenha o id login.

Page 37: Selenium Framework

Identificadores: XPath XPath

Esse elemento possibilita localizar de acordo com expressões xpath

Ex: xpath=//input[@id='login']Procura na página um elemento que tenha o id login.

Ex: xpath=//input[@id='login' and @class='campo-texto']Procura na página um elemento com o id login e a classe campo-texto.

Page 38: Selenium Framework

Identificadores: Css Css

Esse elemento torna possível localizar um elemento utilizando regras do tipo css, onde pode ser css2 ou css3;

Boa dica: utilizar das propriedades ^=(inicia com), $=(termina com) e *=(possui em) como medida de busca por um elemento.

Ex css: css=a[title=${sistema}] Procura na página pelo elemento a

onde possuia o titulo gravado na variável sistema.

Page 39: Selenium Framework

Expandindo o Selenium

Page 40: Selenium Framework

Estrutura de Codificação Quando não é possível automatizar com

a IDE do selenium, o que fazer? Utilizar o recurso de inclusão de arquivos

javascript, onde para acessar no selenium necessita respeitar uma estrutura básica de chamada do objeto:

Selenium.prototype.do[NomeDoMetodo]

Page 41: Selenium Framework

Selenium.prototype.do[NomeDoMetodo]• Estrutura que cria uma nomeclatura para o Selenium

IDE. É possível chamar de duas formas:

nomeDoMetodo: não espera por uma instrução ter um resultado para continuar a execução do caso de teste.

nomeDoMetodoAndWait : espera por uma instrução ter um resultado para continuar a execução do caso de teste.

Page 42: Selenium Framework

Selenium.prototype.do[NomeDoMetodo] * Método que realiza o check ou o uncheck do

locator * @param locator string * @param value bool */Selenium.prototype.doCheckByValue = function(locator, value){

value == 'true' ? value = 'checked' : value = '';

this.page().findElement(locator).checked = value;}

Page 43: Selenium Framework

Selenium.prototype.do[NomeDoMetodo]

Observações importantes

Na estrutura do Selenium é possível informar até dois parâmetros;

Quando é criado o método é necessário colocar o “do” antes do nome do mesmo, onde o doTeste na IDE do Selenium o, método a ser chamado é o teste.

Page 44: Selenium Framework

Selenium.prototype.do[NomeDoMetodo]

Passo-a-passo

Crio um arquivo javascript: o UserExtensions.js;

Adiciono os métodos, seguindo o padrão: Selenium.prototype.do[NomeDoMetodo], conforme explicações anteriores;

Adiciono no Selenium IDE, conforma imagem seguinte

Page 45: Selenium Framework

Selenium.prototype.do[NomeDoMetodo]

Page 46: Selenium Framework

Métodos e Objetos auxiliares

Para se trabalhar com o Selenium é necessário utilizar arquivos javascript, pois existem casos que o próprio Selenium não consegue automatizar sem o auxílio de javascript;

Nesse contexto, é recomendado que se utilize uma escrita de código fora do padrão do Selenium;

Dessa maneira, os métodos podem ser chamados sem a limitação de tamanho e os mesmos não possuem a necessidade de serem chamados na IDE do Selenium.

Page 48: Selenium Framework

Como Sobrescrever métodos da API do Selenium IDE?

/** * Método que sobrescreve o comando type do Selenium, executando

somente * se o valor não for vazio ou nulo */ Selenium.prototype.doType = function(locator, value) { if(value == '' || value == null) return ;

if (this.browserbot.controlKeyDown || this.browserbot.altKeyDown || this.browserbot.metaKeyDown) {

throw new SeleniumError("type not supported immediately after call to controlKeyDown() or altKeyDown() or metaKeyDown()");

} // TODO fail if it can't be typed into. var element = this.browserbot.findElement(locator); if (this.browserbot.shiftKeyDown) { value = new String(value).toUpperCase(); } this.browserbot.replaceText(element, value); };

Page 49: Selenium Framework

Conclusão

Page 50: Selenium Framework

Duvidas?

Page 51: Selenium Framework

Autores André Fernandes de Caldas Lysianne Couto Andrade Wellington Narciso