Modularizando seu script
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