Comment développer des tests d'intégration pour Atlassian Jira Server (jira-func-test-plugin)



Parlons de la façon de faire des tests d'intĂ©gration pour le serveur Atlassian Jira. À ces fins, nous utiliserons les bibliothĂšques fournies par Atlassian: jira-func-test-plugin et jira-testkit-plugin.

Les tests d'intĂ©gration vous permettent de tester les performances des plugins Jira via les services exportĂ©s par le plugin et l'interface utilisateur Jira. Bien sĂ»r, vous pouvez simplement prendre Selenium WebDriver et Ă©crire du code pour tester l'interface utilisateur de Jira. Cependant, dans ce cas, vous devez prescrire vous-mĂȘme toute la logique. Par exemple, la connexion de l'utilisateur, la saisie d'une requĂȘte JQL, la crĂ©ation d'un projet, la vĂ©rification d'Ă©lĂ©ments sous la forme de la crĂ©ation d'une tĂąche, la gestion des autorisations de projet, etc. Et les bibliothĂšques Atlassian fournissent des mĂ©thodes qui sont dĂ©jĂ  prĂȘtes pour cela. De plus, votre code n'a pas besoin d'ĂȘtre modifiĂ© lors de la mise Ă  niveau vers une nouvelle version de Jira, prenez simplement les bibliothĂšques Atlassian adaptĂ©es Ă  cette version.

Il existe trois façons d'écrire des tests d'intégration pour l'Atlassian Jira qu'Atlassian fournit:

  1. Les tests cùblés vous permettent de tester les services que votre plugin exporte en externe. Un exemple d'un tel test est ici .
  2. Les tests d'intĂ©gration nĂ©cessitent l'exĂ©cution des plugins jira-func-test-plugin et jira-testkit-plugin. Ces tests vĂ©rifient le bon fonctionnement de l'interface utilisateur Jira Ă  l'aide de requĂȘtes et de rĂ©ponses HTTP. Un exemple d'un tel test est ici .
  3. Les tests d'objets de page testent également l'interface utilisateur de Jira, mais ils fonctionnent via Selenium WebDriver.

Atlassian écrit que tester l'interface utilisateur via des tests d'objets Page est plus préférable que de tester via le plug-in jira-func-test. Mais dans cet article, nous allons apprendre à écrire des tests d'intégration à l'aide de ce plugin.

Le code source du plug-in avec tests d'intĂ©gration dĂ©veloppĂ© dans l'article peut ĂȘtre trouvĂ© ici .

Que sont les tests d'intégration?


La principale différence entre les tests d'intégration et les tests unitaires est que les tests unitaires ne nécessitent pas d'instance Jira fonctionnelle, contrairement aux tests d'intégration. Par conséquent, il est nécessaire qu'une instance de Jira soit déclenchée lors des tests d'intégration. Les tests peuvent avoir lieu à la fois sur l'instance locale (Jira, extraite de notre plug-in avec des tests d'intégration) et sur celle distante.

Écrivons d'abord des tests pour une instance locale, puis je vous dirai comment exĂ©cuter les mĂȘmes tests sur une instance distante.

Créer un plugin Jira


Le plugin est créé à l'aide de la commande atlas-create-jira-plugin .

Ajouter des dépendances à notre plugin


Les dĂ©pendances suivantes doivent ĂȘtre ajoutĂ©es au fichier pom.xml de notre 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> 

Ces dépendances nous permettront de développer des tests d'intégration.

Installez les plugins nécessaires sur l'instance Jira locale


Pour que les tests d'intégration fonctionnent, nous devons nous assurer que lorsque nous démarrons notre instance Jira locale, les plugins jira-func-test-plugin et jira-testkit-plugin sont installés dessus.

Pour ce faire, ajoutez les lignes suivantes Ă  la configuration du plugin maven-jira-plugin dans 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> 

Écrire un test


Créez le fichier 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"); } 

Par dĂ©faut, tous les tests doivent avoir le suffixe Test pour que les fichiers avec des tests d'intĂ©gration s'exĂ©cutent. Cela peut ĂȘtre remplacĂ© par le paramĂštre FunctionalTestPattern dans la configuration du plugin maven-jira-plugin.

Dans le test ci-dessus, nous testons le fonctionnement de la recherche à la demande dans le navigateur de problÚmes. Dans la méthode de setup , créez un projet avec une tùche, puis écrivez une demande qui reçoit cette tùche et vérifiez que nous avons vraiment pu la sélectionner. Ensuite, dans la méthode de cleanup , nous supprimons le projet créé.

Exécutez le test


Le test est lancé à l'aide de la commande atlas-integration-test . Sur cette commande, la Jira locale monte et des tests d'intégration sont effectués dessus.

Structure de test


Il existe plusieurs classes dont vous pouvez hériter lors de l'écriture de tests d'intégration: BaseJiraEmailTest , BaseJiraFuncTest , BaseJiraRestTest .

La classe la plus utilisée est BaseJiraFuncTest . Il vous permet de tester toutes les fonctionnalités nécessaires.

Dans cette classe, il existe de telles variables de classe:

  • backdoor : permet d'exĂ©cuter des fonctions administratives, telles que la gestion de projets, d'index, de schĂ©mas d'autorisation de projet, d'utilisateurs, etc.
  • navigation : permet de naviguer dans l'interface utilisateur. Vous permet Ă©galement d'entrer et de quitter Jira sous l'utilisateur souhaitĂ©.
  • tester : vous permet de travailler avec des pages: dĂ©finissez les valeurs des champs, cliquez sur les boutons, vĂ©rifiez si un champ existe dans le formulaire, etc.

Les tests d'intégration accÚdent à Jira en tant admin avec le mot de passe admin . Par conséquent, pour les tests d'intégration dans Jira, cet utilisateur doit avoir ce mot de passe.

Lorsque vous utilisez la commande navigation.login("username") , le mot de passe de l'utilisateur sous lequel vous vous connectez Ă  Jira doit correspondre au nom d'utilisateur.

Exécution de tests d'intégration sur une instance distante


Pour que les tests d'intĂ©gration s'exĂ©cutent sur une instance distante, les plug-ins jira-func-test-plugin et jira-testkit-plugin doivent y ĂȘtre installĂ©s.

De plus, dans le plugin avec les tests d'intégration, vous devez apporter des modifications au fichier 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 

Maintenant, aprÚs avoir exécuté la commande atlas-integration-test , les tests seront exécutés sur l'instance distante.

Exemples de tests


La bonne nouvelle est que les développeurs du paquet jira-func-tests ont inclus dans ce paquet un grand nombre d'exemples avec des tests pour toutes les occasions. Ils sont dans le package webtests.

Bonne chance pour tester Jira!

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


All Articles