Como desenvolver testes de integração para o Atlassian Jira Server (jira-func-test-plugin)



Vamos falar sobre como fazer testes de integração para o Atlassian Jira Server. Para esses fins, usaremos as bibliotecas fornecidas pelo Atlassian: jira-func-test-plugin e jira-testkit-plugin.

Os testes de integração permitem testar a operação dos plug-ins do Jira por meio dos serviços exportados pelo plug-in e pela interface do usuário do Jira. Obviamente, você pode usar o Selenium WebDriver e escrever um código para testar a interface do usuário do Jira. No entanto, neste caso, você deve prescrever toda a lógica. Por exemplo, login do usuário, inserindo uma consulta JQL, criando um projeto, verificando elementos na forma de criação de uma tarefa, gerenciando permissões do projeto e assim por diante. E as bibliotecas Atlassian fornecem métodos que já estão prontos para isso. Além disso, seu código não precisa ser alterado ao atualizar para uma nova versão do Jira, basta usar as bibliotecas Atlassian adequadas para esta versão.

Existem três maneiras de escrever testes de integração para o Atlassian Jira que o Atlassian fornece:

  1. Os testes com fio permitem testar os serviços que seu plug-in exporta externamente. Um exemplo desse teste está aqui .
  2. Os testes de integração requerem a execução dos plugins jira-func-test-plugin e jira-testkit-plugin. Esses testes verificam a operação correta da interface com o usuário do Jira usando solicitações e respostas HTTP. Um exemplo desse teste está aqui .
  3. Os testes de objetos de página também testam a interface do usuário do Jira, mas funcionam com o Selenium WebDriver.

Atlassian escreve que testar a interface do usuário através de testes de objetos de Página é mais preferível do que testar através do plugin jira-func-test-plugin. Mas neste artigo, aprenderemos como escrever testes de integração usando este plugin.

O código-fonte do plug-in com testes de integração desenvolvidos no artigo pode ser encontrado aqui .

O que são testes de integração?


A principal diferença entre testes de integração e testes de unidade é que os testes de unidade não requerem uma instância do Jira em funcionamento, diferentemente dos testes de integração. Portanto, é necessário que uma instância do Jira seja criada durante o teste de integração. Os testes podem ocorrer tanto na instância local (Jira, extraída de nosso plug-in com testes de integração) quanto na remota.

Vamos primeiro escrever testes para uma instância local e, em seguida, mostrarei como executar os mesmos testes em uma instância remota.

Crie um plugin Jira


O plug-in é criado usando o comando atlas-create-jira-plugin .

Adicione dependências ao nosso plugin


As seguintes dependências devem ser adicionadas ao arquivo pom.xml do nosso plugin:

<dependency> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-client</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-tests</artifactId> <version>${jira.version}</version> <scope>test</scope> </dependency> 

Essas dependências nos permitirão desenvolver testes de integração.

Instale os plugins necessários na instância local do Jira


Para que os testes de integração funcionem, precisamos garantir que, quando iniciarmos a instância Jira local, os plug-ins jira-func-test-plugin e jira-testkit-plugin estejam instalados nela.

Para fazer isso, adicione as seguintes linhas à configuração do plug-in maven-jira-plugin no pom.xml:

 <pluginArtifacts> <pluginArtifact> <groupId>com.atlassian.jira</groupId> <artifactId>jira-func-test-plugin</artifactId> <version>${jira.version}</version> </pluginArtifact> <pluginArtifact> <groupId>com.atlassian.jira.tests</groupId> <artifactId>jira-testkit-plugin</artifactId> <version>7.12.3</version> </pluginArtifact> </pluginArtifacts> 

Escrevendo um teste


Crie o arquivo src / test / java / it / ru / matveev / alexey / jira / integrationtests / selenium / ExampleTest.java:

 package it.ru.matveev.alexey.jira.integrationtests.selenium; import com.atlassian.jira.functest.framework.BaseJiraFuncTest; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ExampleTest extends BaseJiraFuncTest { @Before public void setup() { backdoor.project().addProject("testproject", "TP", "admin"); backdoor.issues().createIssue("TP", "test issue"); } @Test public void goToIssueNavigator() { navigation.login("admin"); navigation.issueNavigator().createSearch("project = TP"); tester.assertTextPresent("TP-1"); } @After public void cleanup() { backdoor.project().deleteProject("TP"); } 

Por padrão, todos os testes devem ter o sufixo Test para que arquivos com testes de integração sejam executados. Isso pode ser substituído pelo parâmetro functionalTestPattern na configuração do plug-in maven-jira-plugin.

No teste acima, testamos a operação da pesquisa sob demanda no Issue Navigator. No método de setup , crie um projeto com uma tarefa, depois escreva uma solicitação que receba essa tarefa e verifique se realmente conseguimos selecioná-la. Em seguida, no método de cleanup , excluímos o projeto criado.

Execute o teste


O teste é iniciado usando o comando atlas-integration-test . Nesse comando, o Jira local sobe e os testes de integração são executados nele.

Estrutura de teste


Você pode herdar várias classes ao escrever testes de integração: BaseJiraEmailTest , BaseJiraFuncTest , BaseJiraRestTest .

A classe mais usada é BaseJiraFuncTest . Ele permite que você teste todas as funcionalidades necessárias.

Nesta classe, existem variáveis ​​de classe:

  • backdoor : permite executar funções administrativas, como gerenciar projetos, índices, esquemas de permissão de projeto, usuários e assim por diante.
  • navigation : permite navegar na interface do usuário. Também permite que você entre e saia do Jira com o usuário desejado.
  • tester : permite trabalhar com páginas: defina valores de campos, clique em botões, verifique se existe um campo no formulário e assim por diante.

Os testes de integração acessam o Jira como admin com a senha admin ; portanto, para testes de integração no Jira, esse usuário deve ter essa senha.

Ao usar o comando navigation.login("username") , a senha do usuário sob o qual você efetua login no Jira deve corresponder ao nome de usuário.

Executando testes de integração em uma instância remota


Para que os testes de integração sejam executados em uma instância remota, os plugins jira-func-test-plugin e jira-testkit-plugin devem estar instalados nele.

Além disso, no plug-in com testes de integração, é necessário fazer alterações no arquivo src / test / resources / localtest.properties:

 jira.protocol = http jira.host = remote-instance jira.port = 2991 jira.context = /jira jira.edition = all jira.xml.data.location = src/test/xml 

Agora, depois de executar o comando atlas-integration-test , os testes serão executados na instância remota.

Exemplos de teste


A boa notícia é que os desenvolvedores do pacote jira-func-tests incluíram neste pacote um grande número de exemplos com testes para todas as ocasiões. Eles estão no pacote de testes da web.

Boa sorte com o teste de Jira!

Source: https://habr.com/ru/post/pt427165/


All Articles