Isso ai meus queridos.
Precisava de mais liberdade e o blog.com não dava.. e também já estava querendo um domínio próprio faz um bom tempo.
Mudei de endereço. O blog vai neste link –> leonardobg.com.br
Obrigado pelos acessos e atualizem seus feeds
Agora que você sabe como gravar seu script de teste com Selenium IDE, já sabe como converter para java e também esta familiarizado com a estrutura que é gerada, vamos mandar rodar esse script com servidor do selenium (Selenium RC) com uma ajudinha do TestNG.
Bom… porque tanta “parafernalha” para rodar um simples teste? Na teoria você nao precisa de muito, com apenas o selenium rc, um bloco de notas e a jdk devidamente instalada e com path’s configurados, você consegue escrever seus códigos e mandar compilar em linha de comando, mas esse é o modo “HARDCORE” e se você é daquelas praticas, vai querer a ferramenta que mais te da suporte, facilita sua vida e ainda faz cafezinho no final da tarde (ou quase isso..rs).
TestNG é um framework desenvolvido especialmente para testes automatizados , seja ele teste unitário, teste de carga (não é seu foco.. é melhor usar o jmeter) ou teste funcional.
A ideia por trás do TestNG é que não precisa ter uma classe “main” para chamar testes pois ele mesmo faz a gerencia do que é para testar com o uso de “annotations” que definem para que serve cada met0do.
Ex: Você tem esta planejando 1 teste.. mas sabe que amanha você terá que fazer pelo menos 7 testes diferentes e que precisa fazer um “Setup” antes de cada Teste.
Imagina se você precisasse fazer um método de” setup” a cada teste realizado, e até mesmo usando orientação a objeto, o projeto ficaria cada vez mais difícil de dar manutenção. Já usando os “annotations” do TestNG, você simplesmente define cada método de teste com ‘@Test‘ e o somente 1 método “setup” com ‘@BeforeTest‘ e pronto, o trabalho de orientação a objeto e modularizar fica a cargo do TestNG. ( para quem já é programador, isso é chover no molhado, mas para quem não é, faz toda a diferença
)
Agora que você sabe para que o TestNG serve e +- como ele funciona, vamos ver agora ele funcionando de fato.
(a partir desse ponto, estou levando em consideração que o eclipse já esta instalado junto com o plugin do testng)
Lembra daquele nosso codigo gerado pelo Selenium IDE? Vou somente usar o miolo dele (o teste em si) e adaptar o resto para usar TestNG e também para evitar confusão de Junit(eu cometi esse erro..) . Segue o novo código de exemplo que irei usar :
import com.thoughtworks.selenium.*;
import org.testng.annotations.*;
import static org.testng.Assert.*;public class teste_do_Testng
{
public String BASE_URL = “http://www.google.com”;
public Selenium selenium;@BeforeTest
public void setup() throws Exception
{
selenium = new DefaultSelenium(“localhost”, 4444, “*firefox”, BASE_URL);
selenium.start();
selenium.windowMaximize();
selenium.windowFocus();
}@AfterTest
public void finaliza() throws Exception
{
selenium.stop();
}@Test
public void testUntitled2() throws Exception
{
selenium.open(BASE_URL);
selenium.click(“btnG”);
assertTrue(selenium.isTextPresent(“leonardobg.blog.com/”));
selenium.click(“link=Java, Selenium e Coca Cola”);
selenium.waitForPageToLoad(“30000″);
assertTrue(selenium.isTextPresent(“Java, Selenium e Coca Cola”));
}
}
Ficou um pouco maior do que o que vem com o IDE mas tem suas razões:
1 – Como não estou utilizando o setUp do “Junit” e nem a extensão “SeleneseTestCase”, preciso definir o que é Selinium e depois inicialo
public Selenium selenium
selenium = new DefaultSelenium("localhost", 4444, "*firefox", BASE_URL);
2 – Criei 2 metodos “setup” e “finaliza” com os annotations do TestNG para definir o que vai fazer antes e depois do @Test.
3- Troquei os verifyTrue por assertTrue pois atualmente não sei como faz funcionar o verifyTrue dentro do TestNG (existe referência na documentação mas nem santo consegue fazer ele funcionar..)
“Oba oba! agora já até sei o que fazer.. é so colar o código lá no eclipse e mandar rodar……”
[Parser] Running:
C:\Documents and Settings\leonardo\Configurações locais\Temp\testng-eclipse\testng-customsuite.xml
FAILED CONFIGURATION: @BeforeTest setup
java.lang.RuntimeException: Could not contact Selenium Server; have you started it on ‘localhost:4444′ ?
Read more at http://seleniumhq.org/projects/remote-control/not-started.html
Connection refused: connect
at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:86)
at teste_do_Testng.setup(teste_do_Testng.java:14)
… Removed 19 stack frames
Se o mundo fosse simples como NNF (next, next, finish) da microsoft, ele ficaria demasiadamente cansativo….rs
“Já sei! Só preciso instalar o Selenium RC e pronto…… mas…. o que eu instalo o selenium RC? não é 2 cliques?”
Não!
Isso é uma dúvida tão comum que em 1 dia de vida já encontraram meu blog no google com a procurar “Como instalar Selenium RC”.
O servidor “Selenium RC” não é um servidor instalável, é como se fosse um serviço… você apenas inicia e para o serviço.
Em outras palavras, para fazer a criança funcionar, abra seu prompt de comando ( menu iniciar > executar > CMD ), acesse a pasta que você descompacto o selenium rc (selenium-remote-control-1.0.3\selenium-server-1.0.3) e digite o seguinte comando
java -jar selenium-server.jar
Com o servidor do selenium rodando, é só mandar rodar seu teste com TestNG ( clique com direito no nome da sua classe, opção Run As > TestNG )
“Bom… meu firefox abriu , o TestRunner abriu mas nao está executando nada“ ouuu ” não está abrindo a minha pagina de teste!“
Essa configuração que passei foi testada e aprovada pela minha pessoa e funciona sem problemas. Se o que foi citado acima acontecer com você, muito provavelmente você esta na sua empresa, esta acessando a internet através de um proxy para controlar o uso da rede.
O Selenium Server nada mais é que um proxy intermediário que fica entre seu browser e a internet. Ele interpreta os comandos e faz as requisições e se você já tiver usando um proxy, vai ser preciso configurar o meninão. Mais tarde eu falo sobre isso pois também vai gerar um post meio grandinho…rs
Até a próxima!
Uma pequena pausa do tutorial para um anuncio bemmm legal.
O ReportNG agora fala português BR! Isso mesmo!
Para quem não não sabe, ReportNG é um plugin do testng para gerar relatórios de execução de teste mais apresentável (Desculpa Cédric, mas o report normal do testng é de dar medo).
Agora os relatórios gerados com a versão 1.1.1 ( a 1.1 é uma aberração da natureza, espaço, tempo…) estão vindo formatadas em português graças ao nosso querido amigo nerd Felipe Knor.
Segue o link de download do novo ReportNG
Depois vou postar como usar ele em seu projeto.
[]s
Bom, como no último post mostrei o passo a passo de como configurar um ambiente de teste java para desenvolver e rodar os testes do selenium, é hora de esclarecer algumas particularidades.
Antes de mais nada, se você não tem conhecimento sobre java, ou só ouviu falar, PARE AGORA.
Não adianta sair empurrando com a barriga e pedir ajuda sem ao menos saber o que significa “instanciar uma classe”. Para te ajudar, alguns alunos do IBTA prepararam algumas vídeos aulas com o BÁSICO do BÁSICO da linguagem java bem mastigada. Assista antes de continuar
Como o selenium é uma biblioteca, um framework, ele contem funções (métodos) próprios e de terceiros como o JUnit. É preciso estar ciente disso pois, no futuro, se der algum conflito de biblioteca, vocês já sabem o que fazer (falarei isso mais para frente).

Primeiro vamos dissecar um código exportado do selenium IDE (depois de gravar o seu teste, dentro da janela do selenium IDE , clique em Opções > Formato Java (Junit) e depois clicar na aba Código Fonte).
** Peço para pegar a versão para JUnit porque a versão gerada para o TestNG não funciona já que atualmente a classe “SeleneseTestNgHelper” non-existe .****
Segue um exemplo de código gerado pelo selenium IDE em java:
package ;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class Untitled 2 extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://www.google.com.br/", "*chrome");
}
public void testUntitled 2() throws Exception {
selenium.open("/");
selenium.click("btnG");
verifyTrue(selenium.isTextPresent("leonardobg.blog.com/"));
selenium.click("link=Java, Selenium e Coca Cola");
selenium.waitForPageToLoad("30000");
verifyTrue(selenium.isTextPresent("Java, Selenium e Coca Cola"));
}
}
Isto é mais ou menos o código que vocês teriam se instalassem o selenium IDE agora e gravassem um teste qualquer pegando o código fonte gerado.
E como diria nosso famoso amigo Jack (para os íntimos), vamos por partes:
package ;
O selenium IDE supõe que você esteja trabalhando com pacotes dentro do seu projeto, porém vem com ele em branco. Caso você queria usar essa função, dentro do selenium IDE vá em Opções > Opções e dentro da aba Formatos, clique em Java (JUnit) e altere o nome do pacote.
Para quem está iniciando, é bom que não altere mais nada pois o mesmo já está redondinho para ser usado.
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
Aqui está o “coração” do selenium com todas as funções –> com.thoughtworks.selenium.*;
public class Untitled 2 extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://www.google.com.br/", "*chrome");
Nesta parte declaramos o nome da classe (vem como padrão “Untitled” quando o projeto não esta salvo no Selenium IDE), sendo ela uma extensão de “SeleneseTestCase” (sendo assim, “SeleneseTestCase” é superclasse e a sua seria uma “subclasse”).
Para quem esta começando,o “SeleneseTestCase” é uma mão na roda, pois nesta superclasse já está instanciado o “selenium”, é definido o proxy que o selenium vai usar, a porta, e você simplesmente roda seus testes.
Com o tempo você vai perceber ela não ajuda tanto e algumas vezes até atrapalha quando você for fazer coisas mais avançadas, mas por enquanto vamos ficar com ela.
Depois vem o método setUp() que define a pagina padrão onde começarão seus testes, e depois a configuração usada.
!Não confundir a configuração do Firefox *chrome com o Google Chrome!
public void testUntitled 2() throws Exception {
selenium.open("/");
selenium.click("btnG");
verifyTrue(selenium.isTextPresent("leonardobg.blog.com/"));
selenium.click("link=Java, Selenium e Coca Cola");
selenium.waitForPageToLoad("30000");
verifyTrue(selenium.isTextPresent("Java, Selenium e Coca Cola"));
}
Aqui vem o recheio do bolo, com o passo a passo do seu teste.
Procurem entender +- como funciona com o seguinte exemplo: selenium.click(“btnG”);
Selenium = Classe Instanciada
Click = Metodo de Selenium
(“btnG”) = Parâmetro que o método precisa
Compreendendo desta forma, você poderá customizar seus testes de uma maneira mais dinâmica e que tenha mais flexibilidade para seu projeto.
Próximo post: Rodando seu Teste com TESTNG.
Voltei do trabalho pensando no meu ultimo post, falando superficialmente do selenium IDE e fiquei com remorso…rs
Todo mundo sabe que o selenium “faz” teste automático e para por ai. Não entende o que faz com aquele código que o IDE gera, quando baixa as outras opções do site não entende para que serve tanta versão, depois que baixa o selenium não sabe como rodar os testes e fica perguntando quanto custa e se tem manual em português…
Sendo assim, vou dividir em algumas partes como fazer o setup do seu ambiente de teste e comentar um pouco sobre cada parte.
Primeiro passo é entender um pouco do Selenium. Como no site deles diz, o Selenium é um sistema de teste de aplicativos web ou como alguns desenvolvedores gostam de falar, um framework de teste web. É uma ferramenta gratuita disponibilizada pela ThoughtWorks em inglês e não existe documentação oficial em português (hora de salvar a grana do choops e pagar um cna da vida
).
Acessando o site deles na parte de download, você se depara com vários downloads de diversas versões do selenium e fica a pergunta. E agora José? Qual versão faz o que? como eu instalo? é de comer?
Basicamente vocês vão começar usando somente 2 opções ou partes do selenium: Selenium IDE e Selenium RC. Selenium Grid e Core falarei depois (ou nunca..muahudhauhdsa ->risada maléfica)
Como vocês já sabem, o IDE é o plugin do firefox que grava scripts dos seus testes web automaticamente e converte para para uma variedade de linguagens (ex: ruby, java, c#, perl, etc). O Selenium RC ou Remote Control é composto o servidor do selenium (um pacote .jar bem simpático que muita gente torce o nariz quando descobre que não consegue abrir com 2 cliques) e das bibliotecas para cada linguagem que o selenium foi portado.
******* Estou falando isso porque muita gente chega no selenium de perdido, porque ouviu falar de não sei quem, que ele é bom, faz milagre e ainda é Grátis…rs. Assim como toda ferramenta, tem seus pontos positivos e negativos mas depois falamos sobre isso *******
******* Eu resolvi utilizar Java como linguagem de “manipulação” do selenium (selenium-java-client-driver-1.0.1) por 2 motivos: O know how do meu local de trabalho (nao de selenium mas sim de java.. caso eu venha por algum motivo me abster do projeto, as pessoas que estão lah poderão entender como ele foi feito e dar manutenção) e porque existe mais documentação de selenium com referência java do que qualquer outra linguagem ( e também por causa de duas belezinhas chamadas testng e reportng que falarei mais tarde) *******
A segunda parte de Setup para começar a trabalhar com testes usando Java e Selenium é a utilização de uma IDE de programação (não confundir com IDE do selenium, plugin do firefox). A IDE mais fácil de utilizar e com vasta documentação online é o ECLIPSE Galileo que você baixa aqui.
Também não pode deixar de instalar a versão mais recente da JDK (maquina virtual java, sem ela a magica não acontece..rs) e como é um pouco complicado instalar e setar as variáveis de ambiente para você não ter problemas depois, coloco um link com artigo do Cesar Rodrigo super fácil de entender.
Link para baixar JDK6
Calma, eu sei que é muita coisa para instalar, mas é preciso deixar tudo redondinho antes de começar a brincar
Por ultimo, eu utilizo um plugin do eclipse chamado TESTNG que basicamente cria uma interface para rodar meus testes sem complicação.
Para instalar o plugin do testng no Eclipse, acesse o tutorial de como instalar plugins para ver o passo a passo e no campo “Location”, utilize o seguinte link: http://beust.com/eclipse.
Pronto, este é o setup que utilizo nas minhas desaventuras e realmente no próximo post vou detalhar um pouco da biblioteca e do script que o IDE gera.
[]s
Bom pessoal, como é um pouco frustrante pesquisar na internet e não achar muita coisa que tire suas dúvidas e ter que ficar “abusando” da boa vontade das pessoas ( meu “many thks” para o Felipe Knor (http://knorrium.info) e para o Elias), resolvi criar esse simpático blog com um pouco das minhas “desaventuras” com a linguagem java e selenium.
Mas antes de mais nada, gostaria de me apresentar:
Meu nome é Leonardo e sou Analista de Teste, com +- 3 anos de experiência na área (o que é pouco..rs) e atualmente estou em um projeto de automatização de teste funcional em java ( e como a lei de murph é a lei suprema do universo, eu so tinha experiencia de programação em C# e bem superficial) e meu pouco conhecimento da linguagem + as “frescuras” do selenium me renderam muitas buscas na internet, conversas com gente que realmente MANJA da coisa, leitura de documentação e etc.
Como acredito que o conhecimento deve ser compartilhado, assim como o Felipe, estou criando esse blog para relatar minhas dificuldades e soluções que encontrei (ou seja, entregar tudo mastigado..rs)
E como é um BLOG, por favor não reparem no tom informal dos posts
Bom.. e por onde começamos?
Se você conhece um pouco de inglês, o Felipe fez um mega post sobre Como começar a usar o selenium IDE (http://knorrium.info/2010/05/19/a-java-approach-to-selenium/).
Mas mesmo assim vou dar uma resumida para o pessoal
O que é selenium IDE?
Basicamente ele auxilia o grosso da criação de scripts com selenium, porém só funciona no firefox.
Com ele você grava o passo a passo do teste que você quer criar e depois pode dar um “play” para verificar se seu teste esta funcionando.
Links:
http://www.seleniumhq.org/ (aqui você pode ir baixar o IDE e o selenium RC, que contem o selenium server e bibliotecas para sua linguagem, que no meu caso é java)
Não vou entrar em detalhes como se cria o script porque ele é bem fácil de usar e existem milhões de sites que explicam como usar o IDE (e param por ai, infelizmente).
No próximo post já vou dar detalhes sobre a utilização do código gerado pelo IDE com o eclipse, quais bibliotecas básicas o selenium usa e PORQUE você tem que entender um pouco sobre elas para poder fazer alguma coisa funcionar…rs
[]s

