98796699 selenium-framework

53
Selenium Framework Testes Automatizados em Aplicações Web

Upload: andre-caldas

Post on 14-Jun-2015

1.779 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 98796699 selenium-framework

Selenium

Framework Testes Automatizados em

Aplicações Web

Page 2: 98796699 selenium-framework

Menú Definição

Framework Selenium

Selenese

Referência do Selenium

Expandindo Selenium

Conclusão

Duvidas?

Autores

Referências

Page 3: 98796699 selenium-framework

Definição

Page 4: 98796699 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: 98796699 selenium-framework

O que é o Selenium?

Open Source

Muito Flexível

Simula o comportamento do Usuário.

Page 6: 98796699 selenium-framework

Selenium Framework

Page 7: 98796699 selenium-framework

Framework Selenium

A Suite Selenium é composta de:

Selenium Core:

Selenium IDE:

Selenium RC:

Selenium Grid:

Selenium WebDriver(Novo):

Page 8: 98796699 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: 98796699 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: 98796699 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: 98796699 selenium-framework

Selenium IDE

Page 12: 98796699 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: 98796699 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: 98796699 selenium-framework
Page 15: 98796699 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: 98796699 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: 98796699 selenium-framework
Page 18: 98796699 selenium-framework

Selenium WebDriver

Mais nova ferramenta da Suite Selenium

Integração com a API WebDriver

Selenium 2.0!

2.0?

Page 19: 98796699 selenium-framework

Selenium WebDriver

Page 20: 98796699 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: 98796699 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: 98796699 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: 98796699 selenium-framework

Selenese

Page 24: 98796699 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: 98796699 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: 98796699 selenium-framework

Selenese

Alvos e valores são parametros a serem

usados em alguma função do Core

Exemplo de Caso de Teste com Selenese

MyTest

open /mypage

type nameField John Smith

click submitButton True

verifyText name John Smith

Page 27: 98796699 selenium-framework

Referência do Selenium

Page 28: 98796699 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: 98796699 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: 98796699 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: 98796699 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: 98796699 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: 98796699 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: 98796699 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 = bola

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

Page 35: 98796699 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: 98796699 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: 98796699 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: 98796699 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: 98796699 selenium-framework

Expandindo o Selenium

Page 40: 98796699 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: 98796699 selenium-framework

Selenium.prototype.do[NomeDoM

etodo]

• 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: 98796699 selenium-framework

Selenium.prototype.do[NomeDoM

etodo]

* 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: 98796699 selenium-framework

Selenium.prototype.do[NomeDoM

etodo]

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: 98796699 selenium-framework

Selenium.prototype.do[NomeDoM

etodo]

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: 98796699 selenium-framework

Selenium.prototype.do[NomeDoM

etodo]

Page 46: 98796699 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: 98796699 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: 98796699 selenium-framework

Conclusão

Page 50: 98796699 selenium-framework

Duvidas?

Page 51: 98796699 selenium-framework

Autores

André Fernandes de Caldas

Lysianne Couto Andrade

Wellington Narciso

Page 52: 98796699 selenium-framework

Referências

http://seleniumhq.org/

http://en.wikipedia.org/wiki/Selenium_(softwa

re)

http://wiki.openqa.org/display/SIDE/Home

http://svn.openqa.org/fisheye/browse/~raw,r

=2184/selenium/website/src/main/webapp/in

stalling.html

http://stackoverflow.com/questions/3380682/

what-exactly-is-selenese-html

Page 53: 98796699 selenium-framework

Referências

http://release.seleniumhq.org/selenium-

core/1.0.1/reference.html

http://wiki.openqa.org/display/SEL/Contribute

d+User-Extensions

http://colab.mpdl.mpg.de/mediawiki/images

/1/16/Pubman_and_Selenium_tests.ppt

http://bharath-

marrivada.blogspot.com.br/2011/02/selenium

10-vs-selenium20.html