Testes automatizados com Maximo e Selenium WebDriver

Este artigo trata sobre o assunto de automação de cenários de testes, utilizando Maximo Asset Configuration Management e Google Selenium. É direcionado a usuários intermediários/avançados, principalmente aos clientes que possuem essa necessidade de testar seus produtos após aplicar um hotfix, ou instalar um novo add-on. Contém descrição da configuração de ambiente Java, explicações sobre Selenium e como utilizá-lo junto ao Maximo.

Francisco Leonardo Moro Pereira Coelho, Staff Software Engineer, IBM

Francisco Leonardo Moro Pereira CoelhoFrancisco Coelho está na IBM desde Maio/2008, trabalhando em projetos Maximo Industry Solutions, como Oil and Gas, Service Provider e ACM. Implantou automação de testes em todos os releases que participou, utilizando Rational Functional Tester, e atualmente desenvolvendo de testes automatizados em Selenium.
Perfil no MydeveloperWorks



05/Ago/2014

Testes automatizados com Maximo e Selenium WebDriver

A Google criou uma nova ferramenta de automação de testes chamada Selenium WebDriver (e Remote WebDriver). Trata-se de uma ferramenta bastante poderosa, porém leve, para criar scripts de casos de testes automatizados. Com uma simples configuração (descrita abaixo), você pode começar a executar o script usando os métodos do Selenium para lidar com a UI do aplicativo. O Selenium WebDriver é gratuito e oferece suporte a diversos tipos de navegadores e sistemas operacionais.

Em relação às diferenças entre o WebDriver e o Remote WebDriver, podemos dizer que a classe do WebDriver é usada para testes independentes em um único computador, executando um caso de teste por vez (sem paralelismo) e oferecendo suporte aos navegadores Internet Explorer (IE), Firefox (FF) e Google Chrome. Ao trabalhar com XPath, lembre-se de que alguns aplicativos podem compor a UI de diferentes formas nesses navegadores. Assim sendo, um XPath específico pode funcionar em um navegador e não funcionar em outro. O Remote WebDriver conta com os mesmos recursos do Selenium WebDriver, mais a capacidade de ser executado de forma remota e paralela em outros computadores ou VMs. Para saber mais sobre o Remote WebDriver, acesse https://code.google.com/p/selenium/wiki/Grid2. Como o driver do Selenium é um arquivo .jar, ele não é restrito apenas ao Windows, funcionando também no Linux sem que seja preciso fazer qualquer tipo de ajuste.

O Selenium é uma ferramenta gratuita e amplamente usada na comunidade de desenvolvimento de software, podendo ser facilmente baixada e instalada em um ambiente Eclipse já existente. Há diversos tutoriais sobre como instalar e configurar seu ambiente Eclipse/Selenium. As etapas básicas são:

  1. Faça o download e instale o Java (JDK) pelo site do Oracle.
  2. Faça o download do Eclipse em Eclipse.org. Ele não precisa ser instalado, basta executar o arquivo eclipse.exe.
  3. Faça o download e instale o Selenium Java WebDriver.
  4. Selenium Client & WebDriver Language Bindings

  5. O driver do cliente do Selenium Java WebDriver é transferido em formato zip. Extraia e salve-o em seu sistema no caminho C:\selenium (Windows) ou <root>/selenium (Linux). Na pasta descompactada, você terá a pasta 'libs', dois arquivos .jar e o log de alterações, conforme mostra a figura a seguir. Usaremos todos esses arquivos para configurar o WebDriver no Eclipse.
  6. Abra o Eclipse e clique em File > New Project > Java Project. Nomeie o projeto como quiser.
  7. Clique no projeto com o botão direito do mouse e selecione New > Package. Nomeie o pacote como quiser.
  8. Clique no novo pacote com o botão direito do mouse e selecione New > Class.

Certo, agora seu ambiente Java está pronto. Vamos configurar o Selenium WebDriver no ambiente Eclipse.

  1. Clique em seu projeto com o botão direito do mouse e selecione Properties > Java Build Path > Libraries (guia).
  2. Clique no botão Add External Jars. Selecione ambos os arquivos .jar em <root>\selenium.
  3. Clique no botão Add External Jars. Selecione todos os arquivos .jar em <root>\selenium\libs. Agora a configuração do Selenium está concluída.

Se quiser usar o Google Chrome como seu navegador de teste (o que eu recomendo), você precisará fazer o download do driver do Chrome em http://docs.seleniumhq.org/download/:

Third Party Drivers, Bindings, and Plugins

Clique para ver a imagem maior

Para iniciar um novo teste do Selenium WebDriver, inicie seu script através destes comandos:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class TEST {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws InterruptedException{
		
		WebDriver driver = null;
		System.setProperty("webdriver.chrome.driver", "C:/ChromeDriver/chromedriver.exe");
		driver = new ChromeDriver();
		driver.get("your URL");
		
		WebElement userName = driver.findElement("//input[@name='username']");
	    	userName.sendKeys("wilson");

	}

}

Esses comandos vão iniciar o WebDriver, definir o Chrome como seu navegador de teste, abrir o navegador e navegar até a sua página.

O Selenium conta com um elemento de pesquisa bastante eficaz chamado de XPath. Ele executa pesquisas de elementos navegando pelo código html e salvando sua posição entre as tags html (<tr>, <td>, <div> etc.). É possível usar vários atributos de um único elemento para identificá-lo (.alt, .src, .id, .text, .class etc.). O XPath pode variar desde um caminho bem simples a um bastante complexo. Aqui estão alguns exemplos de como identificar um elemento:

  1. Este simples caminho pode ser usado para localizar o campo de texto User Name na tela de login: //input[@name='username']"
  2. Este caminho complexo também pode ser usado para localizar um elemento: /html/body/table[2]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/div/table/tbody/tr[2]/td/table/tbody/tr/td/div/table/tbody/tr[3]/td/table/tbody/tr/td/div/table/tbody/tr/td[2]/div[2]/input

Saber como escrever um XPath pode ser um pouco complicado, mas é algo que você aprende depressa. Há também algumas ferramentas que ajudam a extrair XPaths, como o Firebug (um plug-in do Firefox) e o XPath Helper (uma extensão do Chrome). Além disso, há outras fontes na Internet que podem ajudar os iniciantes.

Depois de identificar os elementos, o Selenium oferece as opções de escrever, obter o valor, clicar, clicar com o botão direito, arrastar, deslizar etc. Em testes preliminares, todos os elementos de UI do Maximo puderam ser identificados e manipulados.

Aplicando o Selenium ao Maximo: Como sabemos, o Maximo tem uma interface de usuário bastante peculiar que não é compatível com boa parte dos mecanismos de automação existentes no mercado. Seus elementos possuem IDs dinâmicos (até a versão 7.5.x.x) que quebram os métodos de pesquisa por elementos, de forma que uma simples ferramenta de gravação/reprodução não é o suficiente para gravar os scripts de teste. A maioria das ferramentas de automação existentes usa a propriedade .id dos elementos, e isso simplesmente não funciona com o Maximo.

Pensando nas necessidades dos usuários do Maximo ao testar um novo hotfix ou executar uma rotina de teste (o que consome muito tempo e dinheiro), a equipe de teste do produto esteve experimentando novas formas e ferramentas para tornar a automação do Maximo mais fácil e prática. O Selenium atendeu a essas necessidades. Ele funciona muito bem com o Maximo. O Selenium conta com um conjunto de ferramentas de pesquisa que atende às necessidades do Maximo, como a pesquisa por nome de elemento, por ID (para objetos cuja propriedade .id é conhecida e estática) e, especialmente, por XPath.

Todos os objetos existentes na apresentação de xml podem ser encontrados pelo localizador XPath, e uma das maiores vantagens do Selenium é que ele é 100% Java. Você pode escrever seus scripts da maneira que quiser e eles serão compatíveis com outras ferramentas e poderão ser executados remotamente. Além disso, você pode configurar tudo o que quiser, sem qualquer custo.

Em anexo, há um script totalmente comentado que pode ser usado como referência. Ele efetua login no Maximo, clica no menu Go To > módulo Assets > aplicativo Assets > Create a new simple Asset record. Depois salva e sai. Antes da execução, toda a configuração anterior deve ser feita e o ambiente Maximo deve estar usando a skin padrão. Se o script não puder encontrar nenhum dos elementos e exibir uma mensagem de erro, pesquise pela linha indicada no console do Eclipse e recapture o XPath do elemento. Ele pode variar em diferentes ambientes.

Explicação rápida sobre a estrutura do script:

Seção 1: É onde todos os elementos de UI são mapeados. Neste script, mapeei todos eles usando o localizador XPath. Se preferir, use By.id(), By.name (caso seu ambiente ofereça suporte a esse tipo de localizador).
Seção 2: Criação da instância do Selenium WebDriver que será usada em todo o script.
Seção 3: Criação de alguns métodos para facilitar a escrita do caso de teste. Como setText(), waitForElementDisplayed() e clickOnObject().
Seção 4: É o caso de teste propriamente dito. Ele chama os métodos criados na seção 3 na ordem exigida pelo cenário.
Seção 5: Requisito Java. Método principal com a instanciação de classe. Também uma linha de comando para especificar a localização do Chromedriver.exe em seu computador. Basta clicar no ícone Play do Eclipse e observar a execução do caso de teste. Se houver algum erro, o stacktrace será exibido no console com a linha exata em que ocorreu a falha.

Agora você está pronto para começar a escrever scripts de testes automatizados usando o Selenium WebDriver. Você pode fazer praticamente tudo no Maximo com os comandos básicos apresentados neste artigo. É possível mapear os objetos com facilidade uma única vez e, se houver alguma grande mudança na UI, basta remapeá-los. Você também pode estruturar seu framework como quiser usando as ferramentas Java. Há diversos comentários, sugestões e tutoriais caso você precise usar algum recurso avançado. Como se trata de um arquivo Java, é sempre possível criar um arquivo .jar e executá-lo em qualquer lugar, sem qualquer custo. Quanto mais scripts você tiver, mais elementos estarão mapeados. Assim, ao escrever novos scripts, só será preciso chamar os métodos já existentes na ordem desejada.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tivoli
ArticleID=979903
ArticleTitle=Testes automatizados com Maximo e Selenium WebDriver
publish-date=08052014