1 Introdução
os testes automatizados podem ser criados com diferentes ferramentas, dependendo do tipo de testes. Os testes de integração podem ser criados com SoapUI, testes de unidade com o módulo de teste de unidade e testes de interface do usuário com o Selenium IDE. Com o Selenium IDE, você pode criar scripts para auxiliar em testes exploratórios auxiliados por automação. Se você está procurando criar testes robustos baseados em navegador, deve procurar usar uma estrutura de teste com o Selenium.
TestNG é uma estrutura de teste Java que pode ser usada para acionar o Selenium. Neste how-to, você aprenderá como criar um teste automatizado com TestNG.
Este manual vai te ensinar como fazer o seguinte:
- Criar TestNG arquivos de teste
- Executar testes automatizados com TestNG
- Gerar relatórios com TestNG
2 pré-Requisitos
Antes de começar com este manual, certifique-se de ter concluído os seguintes pré-requisitos:
- Baixe e instale o Eclipse
- baixe o Selenium Client & WebDriver para Java
este how-to usa o modelo de aplicativo despesas da empresa começando na seção Adicionar o terceiro método de teste para um cenário de exemplo. No entanto, este modelo de aplicativo não é mais compatível com a plataforma Mendix. Portanto, as seções que usam este modelo de aplicativo só podem ser usadas como referência e não como seções que podem ser concluídas passo a passo.
3 Criando um Projeto Java
neste capítulo, você irá instalar o TestNG plug-in e crie um projeto Java no Eclipse, incluindo o TestNG e Selênio bibliotecas:
- Abra o Eclipse.
- siga as instruções no plug-in Eclipse > instalar a partir da seção Atualizar site no Download TestNG.
- reinicie o Eclipse para que as alterações entrem em vigor.
- Selecione O Arquivo > Novo > Projeto Java.
- digite MyFirstTestNGProject para o nome do projeto e clique em Avançar.
- selecione a guia Bibliotecas e clique em Adicionar Biblioteca.
- selecione TestNG e clique em Avançar.
- clique em Concluir para definir a biblioteca TestNG padrão para este projeto.
- clique em Adicionar JARs externos … e navegue até onde você salvou os arquivos Selenium JAR.
-
Adicionar todos os arquivos JAR dentro do selênio – bibliotecas e pastas:
-
Clique em Concluir para criar o projeto Java. MyFirstTestNGProject será mostrado no Explorador de pacotes:
agora você acabou de configurar seu projeto!
4 Criar um TestNG Arquivo
Para criar um novo TestNG ficheiro, siga estes passos:
- clique com o botão Direito do rato a pasta src e selecione Novo > Outros…:
-
Selecione TestNG de classe e, em seguida, clique em Avançar:
-
Clique em Procurar… para selecionar uma pasta de origem, selecione MyFirstTestNGProject > src, e clique em OK.
-
Insira as seguintes informações:
- nome do Pacote: myfirsttestngpackage
- nome da Classe: MyFirstTestNGFile
- @BeforeTest: true
- @AfterTest: verdadeiro
-
Clique em Concluir. O modelo para o seu primeiro arquivo TestNG será criado automaticamente:
a anotação
@Test
é usada para afirmar que o método abaixo dele é um caso de teste. Nesse caso, o métodof
é um caso de teste. A anotação@BeforeTest
é usada para indicar que o método abaixo dele será executado antes do primeiro caso de teste. A anotação@AfterTest
é usada para indicar que o método abaixo dele será executado após o último caso de teste.
5 Criando um caso de teste
vamos agora codificar seu caso de teste.
5.1 Adicionar um WebDriver
Para criar uma variável para ser utilizada para o WebDriver, siga estes passos:
-
Procure a seguinte:
public class MyFirstTestNGFile {
-
Adicione o código abaixo na linha seguinte. Isso criará uma variável
driver
do tipo WebDriver:public WebDriver driver;
-
pressione Ctrl+Shift + o para organizar as importações. Isso importará as instruções ausentes e removerá as instruções de importação não utilizadas. A seguinte declaração será importada:
import org.openqa.selenium.WebDriver;
5.2 adicione um método BeforeTest
a anotação @BeforeTest
é usada para afirmar que o método abaixo dele será executado antes do primeiro caso de teste. Antes do primeiro caso de teste, abra o navegador Firefox, seguindo estes passos:
-
Altere o código a seguir:
@BeforeTestpublic void beforeTest() {}
em:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
Isso cria uma nova instância do Firefox driver e abre o navegador Firefox.
-
pressione CTRL+SHIFT + O. A seguinte declaração será importada:
import org.openqa.selenium.firefox.FirefoxDriver;
5.3 Adicione um método pós-teste
a anotação @AfterTest
é usada para afirmar que o método abaixo dele será executado após o último caso de teste. Após o último caso de teste, feche o navegador alterando o seguinte código:
@AfterTestpublic void afterTest() {}
em:
@AfterTestpublic void afterTest() {driver.close();}
isso fechará o navegador Firefox.
5.4 Adicionar o Primeiro Método de Teste
Para adicionar o primeiro método de teste, abrir uma URL no navegador e, em seguida, altere o código a seguir:
@Testpublic void f() {}
em:
@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}
Este método de teste irá abrir o URL http://localhost:8080/index.html
no navegador Firefox. Por padrão, os métodos anotados por @Test
são executados em ordem alfabética. Você pode usar parâmetros para modificar a função da anotação. O parâmetro priority
pode ser usado para executar os métodos em uma ordem diferente. TestNG executará a anotação @Test
com o valor de prioridade mais baixo até o maior.
5.5 adicione o segundo método de teste
agora que você está na janela de login, deseja fazer login. Para adicionar o segundo método de teste, siga estas etapas:
- abra o Firefox e vá para
http://localhost:8080/index.html
. - Use as ferramentas do desenvolvedor para inspecionar o elemento.
-
clique no campo de entrada do nome de usuário. O ID deste campo é usernameInput. O seletor CSS de um ID é uma hashtag (
#
) + o nome do ID. Para o campo Nome de usuário, este será # usernameInput. O mesmo princípio é usado para as outras etapas. O seletor CSS # usernameInput é único. Há um nó correspondente: -
repita as etapas 5-6 para o campo de entrada de senha e o botão de login:
Elemento Seletor de CSS campo de entrada de Senha #passwordInput
no botão iniciar sessão #loginButton
-
Adicionar um novo método de teste chamado
login
. Use o código a seguir:@Test(priority=2)public void login() { driver.findElement(By.cssSelector("#usernameInput")).sendKeys("MxAdmin"); driver.findElement(By.cssSelector("#passwordInput")).sendKeys("1"); driver.findElement(By.cssSelector("#loginButton")).click();}
Este método de teste contém as seguintes etapas de teste:
- Digite MxAdmin como o nome de usuário.
- digite 1 como a senha.
- clique no botão login.
5.6 Adicione o terceiro método de teste
para adicionar o terceiro método de teste, siga estas etapas:
- abra seu aplicativo e no App Explorer, abra a página ProgramDetail.
-
Selecione a guia Despesas:
O nome dos Gastos guia é tabPage4. Cada elemento receberá automaticamente a classe CSS
mx-name-
, portanto, a guia Despesas obterá a classe CSSmx-name-tabPage4
quando o aplicativo estiver em execução. -
volte para o Eclipse.
-
adicione um novo método de teste chamado
openExpensesTab
. Use o seguinte código:@Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}
este método de teste chama
ExpectedCondition
a cada 500 milissegundos até retornar com sucesso ou 10 segundos se passarem. Quando 10 segundos se passaram e o elemento não está localizado, um TimeoutException será lançado. Se o elemento estiver localizado dentro de 10 segundos, o método clicará no elemento com o nome da classemx-name-tabPage4
. A classe da guia Despesas émx-name-tabPage4
. O seletor CSS de uma classe é um ponto (.
) + o nome da classe, portanto, para a guia Despesas, será.mx-name-tabPage4
.
5.7 Adicione o Quarto Método de Teste
Agora que você está na guia Despesas, você vai querer criar uma nova despesa. Para adicionar o quarto método de teste, siga estas etapas:
- abra o Studio Pro e abra a página Desktop_AdminMenu.
-
Selecione a Nova Despesa botão:
O nome da Nova Despesa botão
newButton3
, então, o botão terá omx-name-newButton3
class CSS: -
Abra o Desktop_Expense_NewEdit_Admin página.
-
Encontre os nomes dos seguintes elementos (como você fez na Etapa 3):
Elemento Nome Valor do campo textBox6
Descrição pendente referenceSelector1
botão Salvar saveButton1
The name of an element in your app may be different than the name shown in the Name column. In step 7, use the name of the element of your app.
-
voltar para o Eclipse.
-
adicione um novo método de teste chamado
createExpense
. Use o seguinte código:@Test(priority=4)public void createExpense() { driver.findElement(By.cssSelector(".mx-name-newButton3")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).clear(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).sendKeys("15.00"); driver.findElement(By.cssSelector(".mx-window-active .mx-name-referenceSelector1 option:nth-child(2)")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-saveButton1")).click();}
este método de teste contém as seguintes etapas de teste:
- clique em Nova despesa.
- limpar o campo Quantidade.
- digite 15.00 no campo Quantidade.
- selecione a segunda opção no menu suspenso Descrição.
- Clique Em Salvar.
uma janela pop-up será exibida após clicar em Nova despesa (
.mx-name-newButton3
). Para ter certeza de que o elemento da página ativa é recuperado (que neste caso é o pop-up), você precisa adicionar.mx-window-active
ao seletor CSS dos elementos no pop-up.para cada campo de entrada, você precisa adicionar
input
no final do seletor CSS.o valor padrão do campo Valor é 0,00. Para inserir um novo valor, primeiro você precisa limpar o campo.
o seletor de referência tem seis opções; vazio, acomodação, refeição, Outros, suprimentos, transporte. Para selecionar acomodação (a segunda opção), você precisa adicionar
option:nth-child(2)
no final do seletor CSS.
5.8 adicione o quinto método de teste
depois de criar uma despesa, você desejará sair. Para adicionar o quinto método de teste, siga estas etapas:
- abra o Studio Pro e abra o snippet Desktop_MyInfo.
-
Encontre o nome do seguinte elemento:
Elemento Nome Sinal de botão signOutButton1
-
Adicionar um novo método de teste chamado
signOut
. Use o seguinte código:@Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}
este método de teste irá clicar no elemento com o
mx-name-signOutButton1
nome da classe.
6 execute o teste
Agora você está pronto para executar o teste. Para executar o teste, siga estas etapas:
- clique com o botão direito do mouse na pasta MyFirstTestNGProject.
-
selecione Executar como > teste TestNG:
Os resultados do teste serão mostradas na janela do console e o TestNG janela de resultados:
7 Relatório de Teste
TestNG gera relatórios em formato HTML. Para testar o relatório, siga estas etapas:
-
clique com o botão direito do mouse na pasta MyFirstTestNGProject e selecione Atualizar. Uma pasta de saída de teste será criada:
-
abra a pasta test-output.
-
clique com o botão direito do mouse no índice.arquivo html.
-
Selecione Abrir com > Navegador da Web. O relatório ficará assim:
-
clique em (Mostrar). Os métodos de teste são mostrados em ordem alfabética:
-
clique na visualização cronológica. Uma visão geral com os métodos em ordem cronológica será mostrada:
8 Criando um conjunto de testes
quando você executa seu teste como fez em Executar o teste, um conjunto de testes é criado automaticamente. Este conjunto de testes contém todos os arquivos testNG que podem ser encontrados no projeto. Mas e se você quiser apenas executar testes específicos? Do que você precisa criar um conjunto de testes você mesmo.
- clique com o botão direito do mouse na pasta src e selecione Novo > outro.
-
Abra a pasta XML e selecione Arquivo XML:
-
Clique em Avançar.
-
Altere o nome do arquivo para MyFirstTestSuite.xml.
-
Clique em Concluir para criar o arquivo XML:
-
Clique na guia Fonte:
-
Altere o código a seguir:
<?xml version="1.0" encoding="UTF-8"?>
em
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
isso criará o novo conjunto de testes
MyFirstTestSuite
. O conjunto de testes contém um teste:Test1
. O teste contém um arquivo testNG,myfirsttestngpackage.MyFirstTestNGFile
. -
clique com o botão direito do mouse no MyFirstTestSuite.arquivo xml e selecione Executar como > 1 suíte TestNG.
muito bem! Você criou sua primeira suíte TestNG!
9 execute seu conjunto de testes em vários navegadores usando @Parameters
o teste que você criou agora é executado apenas no Firefox. Se você quiser ter certeza de que a funcionalidade funciona como esperado em outros navegadores, você precisa executar testes de vários navegadores. Com TestNG é muito fácil realizar o mesmo teste em diferentes navegadores.
- baixe o ChromeDriver aqui: https://sites.google.com/a/chromium.org/chromedriver/downloads.
- baixe o IEDriver aqui: http://selenium-release.storage.googleapis.com/index.html.
-
No Eclipse, abra MyFirstTestNGFile e altere o código a seguir:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
em:
@Parameters("browser")@BeforeTestpublic void beforeTest(String browser) { if(browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe"); driver = new ChromeDriver(); } else if(browser.equalsIgnoreCase("ie")){ System.setProperty("webdriver.ie.driver", "C://Selenium/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } else{ driver = new FirefoxDriver(); }}
@Parameters
é usado para inserir um parâmetro (neste casobrowser
) a partir do conjunto de teste XML. Se o parâmetro do navegador forchrome
, um driver do Chrome será iniciado.nesta seção, chromedriver.exe é armazenado no C://Selenium pasta. Certifique-se de usar o caminho certo neste código.
-
Pressione Ctrl+Shift+S e as instruções a seguir serão importadas:
import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
-
Abrir MyFirstTestSuite e altere o seguinte código
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
em:
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="ChromeTest"> <parameter name="browser" value="chrome" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="IETest"> <parameter name="browser" value="ie" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
O primeiro teste (chamado de
ChromeTest
) tem o navegador parâmetrochrome
. Este parâmetro será usado no método@BeforeTest
em MyFirstTestNGFile. -
clique com o botão direito do mouse no MyFirstTestSuite.arquivo xml e selecione Executar como > TestNG Suite:
muito bem! Você criou seu primeiro teste automatizado de cross-browser com TestNG!
agora você sabe como criar um arquivo de teste TestNG, como criar um conjunto de testes e como executar o(S) teste (s) automatizado (s) em vários navegadores.
teste feliz!
10 Leia Mais
- Teste Mendix de Aplicações Utilizando o Selenium IDE
- Teste Microflows Usando o Teste de Unidade de Módulo