Criando seu Projeto de Teste

Posted on 7 de junho de 2010 by Leonardo Galani 2 Comments

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 :D ), 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.

2 Comments

  1. 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();
    }

  2. 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á. ;)

Post a Comment

Your email is never published or shared. Required fields are marked *