Modularizando seu script

Posted on 24 de junho de 2010 by Leonardo Galani No Comments

Antes de colocar a mão no código e começar a gerar scripts igual um robozinho, gostaria de pedir um “favor” para você.
Pare e olhe para aplicação (ou site) que o seus scripts irão testar.

Toda aplicação tem objetos em comum, sejam eles menu, cabeçalho ou rodapé e também processos em comum (em linguagem de “certificação” seria chamado de “pré-processo”) como “Logar”, “criar um usuário”, “confirmar ação”, “verificar relatório” e por ai vai.

Imagine que você é responsável pela automatização de um portal (ou até um site de médio porte), gravou todos os scripts de teste e no meio do projeto, os desenvolvedores acharam que era melhor o cabeçalho exibir o nome do cliente e que o menu deve vai ter mais três opções que acarretaria na quebra de sua referência de XPATH…. e agora? vai atualizar na mão os seus 500 scripts?  Nem a maior boa vontade do mundo te ajuda nessas horas e ainda mais quando isso se torna rotina.

Automatização de testes É programação e seu planejamento DEVE ser similar ao de qualquer software!


Sendo assim,  antes de sair criando scripts a “torto e a direito”, faça primeiro o planejamento do seu projeto de teste.
Depois analise e verifique quais operações que serão sempre realizadas e modularize!
Como fazer isso com selenium? simples!

Imagine no seguinte cenário de teste:
- Usuário acessa a aplicação
- Usuário digita login e senha para acessar aplicação
- O sistema deve logar verificar o login e senha e exibir que o o login X está autenticado
- Usuário acessa menu “Cadastros”
- Usuário acessa submenu “Consultar Cadastros”
- Usuário consulta um cadastro qualquer
- Usuário desloga do sistema

Segue a ideia do código de uma forma mais simplificada

public class Cadastro

public String url = "http://endereDoMeuAplicativo.com";
public static Selenium selenium;
public String login = "login";
public String senha = "senha";

public void ConsultaCadastro () {

selenium = new DefaultSelenium("localhost", 4444, "*firefox", url);
selenium.start();

selenium=PacoteModularização.Comum.Login (login,senha, url, selenium);
selenium=PacoteModularização.Comum.Menu("cadastro", "consultar", selenium);
selenium..... ;// procedimentos de consulta
selenium=PacoteModularização.Comum.LogOff(selenium);

Segue abaixo o exemplo de login:

public static  Selenium login  (String usuario, String senha, String url, Selenium selenium) throws Exception   {

selenium.open("url");
selenium.waitForPageToLoad("30000");
selenium.type("actionForm_login", usuario);
selenium.type("actionForm_senha", senha);
selenium.click("//input[@value='Login']");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Usuario" + login + " logado."), "Mensagem de sucesso de login não encontrada");
return selenium;

}

Existem outras maneiras de mandar e receber a instância de “selenium” mas eu achei essa a mais fácil de entender.
Na modularização, você manda por parâmetros as coisas que você quer usar naquele módulo e também manda “selenium” para que a operação continue na mesma instância ( caso contrario dá nullPointException ;) ).

Depois de toda a operação, ele retorna selenium para seu cenário de teste principal e o teste continua.

O código meio que fala por sí.
Caso tenham alguma dúvida, é só comentar ;)

Post a Comment

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