crie testes automatizados com TestNG

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:

  1. Abra o Eclipse.
  2. siga as instruções no plug-in Eclipse > instalar a partir da seção Atualizar site no Download TestNG.
  3. reinicie o Eclipse para que as alterações entrem em vigor.
  4. Selecione O Arquivo > Novo > Projeto Java.
  5. digite MyFirstTestNGProject para o nome do projeto e clique em Avançar.
  6. selecione a guia Bibliotecas e clique em Adicionar Biblioteca.
  7. selecione TestNG e clique em Avançar.
  8. clique em Concluir para definir a biblioteca TestNG padrão para este projeto.
  9. clique em Adicionar JARs externos … e navegue até onde você salvou os arquivos Selenium JAR.
  10. Adicionar todos os arquivos JAR dentro do selênio – bibliotecas e pastas:

  11. 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:

  1. clique com o botão Direito do rato a pasta src e selecione Novo > Outros…:
  2. Selecione TestNG de classe e, em seguida, clique em Avançar:

  3. Clique em Procurar… para selecionar uma pasta de origem, selecione MyFirstTestNGProject > src, e clique em OK.

  4. Insira as seguintes informações:

    • nome do Pacote: myfirsttestngpackage
    • nome da Classe: MyFirstTestNGFile
    • @BeforeTest: true
    • @AfterTest: verdadeiro

  5. 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étodo f é 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:

  1. Procure a seguinte:

    public class MyFirstTestNGFile {
  2. Adicione o código abaixo na linha seguinte. Isso criará uma variável driver do tipo WebDriver:

    public WebDriver driver;
  3. 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:

  1. 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.

  2. 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:

  1. abra o Firefox e vá para http://localhost:8080/index.html.
  2. Use as ferramentas do desenvolvedor para inspecionar o elemento.
  3. 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:

  4. 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
  5. 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:

  1. Digite MxAdmin como o nome de usuário.
  2. digite 1 como a senha.
  3. 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:

  1. abra seu aplicativo e no App Explorer, abra a página ProgramDetail.
  2. 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 CSS mx-name-tabPage4 quando o aplicativo estiver em execução.

  3. volte para o Eclipse.

  4. 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 classe mx-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:

  1. abra o Studio Pro e abra a página Desktop_AdminMenu.
  2. Selecione a Nova Despesa botão:

    O nome da Nova Despesa botão newButton3, então, o botão terá o mx-name-newButton3 class CSS:

  3. Abra o Desktop_Expense_NewEdit_Admin página.

  4. 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.
  5. voltar para o Eclipse.

  6. 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:

    1. clique em Nova despesa.
    2. limpar o campo Quantidade.
    3. digite 15.00 no campo Quantidade.
    4. selecione a segunda opção no menu suspenso Descrição.
    5. 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:

  1. abra o Studio Pro e abra o snippet Desktop_MyInfo.
  2. Encontre o nome do seguinte elemento:

    Elemento Nome
    Sinal de botão signOutButton1
  3. 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:

  1. clique com o botão direito do mouse na pasta MyFirstTestNGProject.
  2. 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:

  1. clique com o botão direito do mouse na pasta MyFirstTestNGProject e selecione Atualizar. Uma pasta de saída de teste será criada:

  2. abra a pasta test-output.

  3. clique com o botão direito do mouse no índice.arquivo html.

  4. Selecione Abrir com > Navegador da Web. O relatório ficará assim:

  5. clique em (Mostrar). Os métodos de teste são mostrados em ordem alfabética:

  6. 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.

  1. clique com o botão direito do mouse na pasta src e selecione Novo > outro.
  2. Abra a pasta XML e selecione Arquivo XML:

  3. Clique em Avançar.

  4. Altere o nome do arquivo para MyFirstTestSuite.xml.

  5. Clique em Concluir para criar o arquivo XML:

  6. Clique na guia Fonte:

  7. 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.

  8. 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.

  1. baixe o ChromeDriver aqui: https://sites.google.com/a/chromium.org/chromedriver/downloads.
  2. baixe o IEDriver aqui: http://selenium-release.storage.googleapis.com/index.html.
  3. 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 caso browser) a partir do conjunto de teste XML. Se o parâmetro do navegador for chrome, 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.

  4. 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;
  5. 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âmetro chrome. Este parâmetro será usado no método @BeforeTest em MyFirstTestNGFile.

  6. 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

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado.