Este
post é a primeira contribuição do nosso coladorador Thiago
Ferreira para o GUTS-PB. O mesmo espera ter colaborado com um pouco
do seu conhecimento da área de Qualidade e Testes de Software,
falando um pouco do Selenium IDE (ferramenta de automação de testes
Open Source).
Antes
de aprofundarmos mais no conhecimento da ferramenta, vamos falar um
pouco sobre o projeto Selenium.
O
Selenium (http://docs.seleniumhq.org/) é um projeto que reúne um
conjunto de ferramentas usadas para a criação de scripts de
automação de testes de regressão para aplicação Web. O Selenium
foi escrito basicamente utilizando Javascript e DHTML. Os testes
podem ser executados em qualquer navegador, desde que suporte
Javascript.
Os
testes são escritos basicamente através de tabelas HTML (isso
mesmo, as velhas conhecidas tags <table>
e </table>).
Nas tabelas são informadas as operações ou asserções de um teste
e os seus respectivos argumentos. O Selenium é responsável por
interpretar os comandos das tabelas HTML e executar as ações,
simulando um usuário real.
O
projeto Selenium é dividido em 4 módulos diferentes:
- Selenium IDE (http://docs.seleniumhq.org/projects/ide/): É o ambiente gráfico integrado ao navegador Firefox capaz de gravar e reproduzir os testes do Selenium. Utiliza o método Record/Playback, no qual registra todas as ações do usuário. Essas ações são convertidas para o Selenês automaticamente para que o teste possa ser salvo, reexecutado e depurado individualmente ou em conjunto com outros testes.
- Selenium RC (Remote Control) (http://docs.seleniumhq.org/projects/remote-control/): Neste modo os testes são dirigidos por uma das linguagens suportadas pelo Selenium (Java, Ruby, Python, entre outros).
- Selenium WebDriver (http://docs.seleniumhq.org/projects/webdriver/): Sucessor do Selenium RC, este módulo aceita comandos (escritos em Selenese) e os envia diretamente para o navegador que está sendo executado os testes. Para isso, é preciso de um driver específico para execução dos testes. Ao contrário do RC, ele não precisa de um servidor para executar os testes, pois, ele inicia uma instância do navegador e executa os comandos previamente programados no script de testes.
- Selenium Grid (http://docs.seleniumhq.org/projects/grid/): Módulo do Selenium que permite a execução de vários navegadores web em diferentes máquinas, permitindo a execução em paralelo com diversas máquinas.
O
Selenese (ou Selenês) é a sintaxe dos comandos gerados pelo
Selenium, onde um teste escrito em Selenese é basicamente composto
por uma tabela contendo três colunas. Uma coluna é usada para
operação e as duas restantes são usadas para os argumentos:
Figura
1: Exemplo
de um caso de teste escrito em Selenese.
Na
interface do Selenium IDE temos a seguinte estrutura:
Figura
2: Selenium
IDE.
Onde
no campo “Tabela”
na
interface temos:
- Comando: Neste bloco da tabela se insere as instruções que serão executadas;
- Alvo: Neste bloco é o primeiro parâmetro da função a ser executada. As funções do Selenium utilizam este parâmetro para informar qual é o elemento identificador (especificamente o ID ou o NAME da tag HTML, DOM (expressão Javascript) XPATH (expressão a ser aplicada) links, CSS, entre outros) a ser buscado;
- Valor: Insere o valor, uma identificação. Nem sempre na criação dos casos de teste este campo será preenchido.
De
modo similar, as Suítes de Testes (as chamadas “Test
Suíte”,
grupos de Casos de Testes executados em conjunto) também são
representados em tabelas HTML. Cada Suíte de Testes referencia um ou
mais casos de teste que são criados na interface do programa.
As
operações suportadas pelo Selenês são divididas em três grupos
distintos:
- Actions: Representam as operações realizadas pelo usuário durante a utilização da aplicação Web. A maioria das Actions representam ações do tipo “clicar em determinado link ou botão, selecionar determinada opção”, entre outros. Se a execução de uma Action falhar, o status do teste é modificado para “Failed” e o teste é imediatamente paralisado. Adicionalmente, você poderá adicionar o sufixo “AndWait” para a maioria das Actions. Este sufixo informa ao Selenium que a ação gerou uma requisição do servidor e a execução do teste precisa esperar que a página seja recarregada.
- Accessors: Executa uma asserção (compara o estado ou propriedade de um objeto da página contra um valor esperado) e armazena o resultado numa variável. O resultado negativo de uma Accessor não paralisa a execução do teste, no entanto, a falha é exibida no resultado dos testes.
- Assertions: Executa uma asserção (compara o estado ou propriedade de um objeto da página contra um valor esperado) No entanto, a Assertion não armazena o resultado numa variável. O resultado negativo de uma Assertion não paralisa a execução do teste, no entanto, a falha é exibida no resultado dos testes.
Uma
vez aberta a janela do Selenium IDE e clicado o botão de
Record/Playback, qualquer ação que você executar nas páginas do
navegador será convertida para uma operação em Selenês na aba
“Tabela”.
No entanto, o Selenium IDE não se limita apenas a reproduzir os
cliques ou preenchimentos dos campos realizados durante a navegação.
Pode-se também selecionar qualquer uma das operações suportadas
pelo Selenês conforme a sua necessidade por meio do campo “Comando”.
Pode-se também realizar a inserção manualmente, o que, em minha
opinião, é bem melhor, pois, fazendo dessa forma, o analista de
testes/testador mantém maior controle sobre os scripts de testes
criados, fazendo assim com que tenha um conhecimento maior sobre o
script gerado pela ferramenta.
Durante
a gravação da navegação pode-se selecionar qualquer objeto da
página e adicionar uma operação ou asserção de acordo com o
contexto do objeto selecionado ou da ação que queira executar.
E
por fim, assim que é finalizada a gravação da navegação da
aplicação Web, todos os passos executados serão convertidos
automaticamente em Selenês e estarão disponíveis na aba “Tabela”.
O teste poderá ser salvo no formato HTML para que seja
posteriormente executado. Também pode executar, pausar ou depurar o
teste por meio da ferramenta.
É
possível também testar aplicações Web baseada em AJAX (Uma página
AJAX é capaz de realizar diversas operações, sem, no entanto,
precisar buscar ou trocar muitas informações com o Web Server)
utilizando o Selenium IDE.
E
aí, se interessou pela ferramenta? Ótimo, pois, é uma excelente
solução Open Source para testes de regressão. Mas, antes de pôr a
mão na massa, veremos algumas diferenças entre os comandos que são
executados pelo Selenium IDE, que para quem está iniciando é
essencial compreender o seu funcionamento. Os comandos podem ser do
tipo:
- Assert: Todos os comandos relacionados ao Assert irão parar a execução sempre que ocorrer um erro. Bastante utilizado para verificar se o navegador encontra-se na página correta;
- Verify: Registra o erro, caso exista, sem interromper a execução do teste. Bastante útil para analisar os itens da página;
- WaitFor: Toda instrução que tiver o “WaitFor” ficará esperando até que uma outra instrução retorne um valor (true or false) para que o mesmo saia desta espera.
E
por hoje é só pessoal!
Espero
que tenham gostado dessa postagem. O Selenium IDE é uma ferramenta
poderosa, desde que seja usada de forma correta. Trabalho há algum
tempo e tenho obtido resultados satisfatórios na geração dos
scripts de testes. O único problema do Selenium IDE são os
relatórios de erro que são apontados na aba “Mensagem”,
onde, a informação gerada (quando ocorre o erro ela fica destacada
na cor vermelha) é muito confusa. Fora esse detalhe, é uma
ferramenta muito boa para automação e execução de casos de
testes.
Precisando,
estamos às ordens. Até o próximo post.
Analista de Sistema na Confederação das Unimeds Norte/Nordeste.






Parabéns pelo post. Muito importante a explanação de características de uma ferramenta que facilita a vida do Analista de Testes, sobretudo pelo fato de ser uma ferramenta Open Source.
ResponderExcluirObrigado Antônio. :)
ExcluirSempre que puder irei contribuir postando opções bacanas de ferramentas de testes open source, a fim de facilitar mais o trabalho dos analistas de testes.
Parabéns pelo post, achei muito interessante e de grande valor e contribuição!!!
ResponderExcluirMuito interessante, pesquisei em outros sites, mas este seu post está muito rico em conteúdo. PARABÉNS
ResponderExcluirThiago, seu post tem um conteúdo aprofundado e de fácil entendimento. Gostaria de ver mais publicações suas aqui!
ResponderExcluirKarina Andrade
Estudante de TI
Utilizo o selenium e também posso comprovar sua eficácia... parabéns pelo post de altíssimo nível... muito bem elaborado!!
ResponderExcluirOi Pessoal,
ResponderExcluirAgradeço todos os comentários postados.
E podem aguardar mais postagens muito em breve. :-D
Olá Thiago , gostaria de saber mais alguns detalhes específicos sobre a automação de testes usando o Selenium, trabalho com isso. Por favor me passe seu e-mail para que possamos conversar melhor a respeito. E para que eu possa tirar algumas dúvidas se você não se importar.
ResponderExcluirAguardo sua resposta.
Obrigada
Utilizo o WebDriver do Selenium + Cucumber (Cenários de testes e alimentação de dados no sistema) + Serenity (Relatório) para automação. Diria que é uma ótima ferramenta.
ResponderExcluir