Criando seu Projeto de Teste
Bom, agora você já sabe criar scripts de teste e converte-los para linguagem java com o selenium IDE, adaptar o script para usar TestNG ao invês do “campenga” Junit (mentira.. não é não.. mas eu prefiro o TestNG
), rodar o servidor selenium RC e depois, rodar seus testes usando o plug in do testng.
Isso tudo é muito bonito, roda muito bem, mas você pode jogar no LIXO se você não souber estruturar seu projeto teste.
É amigão… testes automáticos também devem obedecer roteiros de testes, devem ter uma estrutura que diminua o retrabalho e que gere um relatório final amigável pelo menos para nível gerencial.
Muita gente que começa estudar testes automáticos com selenium geralmente para no IDE. O tamanho de scripts começa aumentar, o gerenciamento de todos aqueles scripts fica complicado, você acaba perdendo o tracking do que esta testando e começa a colocar culpa na ferramenta.
É preciso reconhecer limitações das ferramentas. O selenium é um ótimo framework de testes e para por ai, dando espaço para outras ferramentas fazerem o que fazem de melhor.
O TestNG é uma ótima ferramente de apoio a teste, tanto para executar, gerar relatório (feio.. mas gera.. por isso usamos reportng, pequeno padawan) e ajudar seu gestor de pacote (ant ou maven) a fazer build e rodar o teste do jeito que você quer.
Muitos automatizadores utilizam só o plugin do Eclipse que nos livra de toda a dor de cabeça do mundo pois eles mesmos fazem a gestão dos testes, mas como a lei de murphy é a única certeza que temos em vida, é melhor conhecer também o lado mais complicado.
Nesta primeira parte vou explicar um pouco como funciona o XML do TestNG e como agregá-lo a um build do Ant (não conhece Ant? você pode ver como ele funciona aqui e aqui) e na segunda parte, como é chamar o TestNG via programação
(método que uso atualmente e que é bemmm legal e fácil de entender) .
O Xml do TestNG não tem muito segredo, ele é divido em partes que são intuitivas, ou seja, um pouco de bom senso e o minimo de inglês e você já consegue estruturar seu xml. (Caso queria ver a documentação, clique aqui)
Segue aqui um exemplo:
<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >
<suite name=”NomeDaSuite” verbose=”1″ >
<test name=”ExemploDeNomeDeTeste-SemPacote” >
<classes>
<class name=”NomeDeClasse” />
</classes>
</test><test name=”Exemplo2 – Regressão”>
<classes>
<class name=”test.exemplo.Teste1″/>
<class name=”test.exemplo.Teste2″/>
</classes>
</test>
</suite>
Este exemplo não tem segredos. Você define uma suíte de testes e depois um agrupamento de testes “<teste>” onde você irá definir as classes que fazem parte deste agrupamento.
Você pode definir cada .class por vez ou pode definir um pacote com os .class, que é bemm mais inteligente.
<packages>
<package name=”Pacote.Pasta” />
</packages>
Este é meio que o básico que você precisa saber para estruturar testng.xml. Existem outras configurações como separar os testes em Grupo, definir o numero de vezes aquele teste vai ser rodado (stress?) e definir parâmetros(o que você pode/DEVE fazer via programação – um post no futuro..) mas isso não irei abordar agora pois foge um pouco do escopo, e porque não precisei usar eles também para estruturação do meu projeto.
Tendo esse XML em mãos, agora você só precisa pegar seu build.xml do ant e adicionar algumas linhas como pode ser visto aqui.
Peço desculpas por não me aprofundar muito no assunto. Ant é uma ótima ferramenta para se trabalhar mas é um pouco complicada para quem esta começando e nada melhor que usar o plugin do eclipse primeiro para se familiarizar com a ferramenta para depois dar o segundo passo.
Acredito que temos que ter ciência todas as possibilidades, pois se uma porta se fecha devido a restrição da ferramenta / linguagem / framework, podemos seguir em frente por outro caminho.

Lucas
565 dias ago
Olá Leonardo,
Em todos os meus testes estão os seguintes annotations…
Quando eu rodo eles através de .. os testes rodam em paralelo e é iniciado vários seleniums pois cada teste tem um método iniciaSelenium() no annotations @BeforeTest.
Como devo fazer para que rodem em sequencia?
Obrigado!
@BeforeTest
public void setup() throws Exception {
l.iniciaSelenium();
l.logarComoAluno();
}
@Test
… meu teste
@AfterTest
public void finaliza() throws Exception {
l.deslogar();
l.getSelenium().stop();
}
Leonardo Galani
565 dias ago
Muda para @beforeSuite a função I.iniciaSelenium
Não sei como esta sua logica.. mas da para manter o l.logarComoAluno ( se precisa logar cada vez que irá fazer um test ) no @beforeTest.
Não sei pq está instanciando desse jeito o selenium.
um simples public selenium Selenium; já basta para vc chamar selenium.start()
Outra coisa.. tira o selenium.stop() [ ou I.getSelenium().stop() ] e coloca em um @afterSuite
O deslogar pode ficar aonde está.