
Lassen Sie uns darüber sprechen, wie Integrationstests für den Atlassian Jira Server durchgeführt werden. Für diese Zwecke verwenden wir die von Atlassian bereitgestellten Bibliotheken: jira-func-test-plugin und jira-testkit-plugin.
Mit Integrationstests können Sie die Leistung von Jira-Plugins über die vom Plugin und der Jira-Benutzeroberfläche exportierten Dienste testen. Natürlich können Sie einfach Selenium WebDriver nehmen und Code schreiben, um die Benutzeroberfläche von Jira zu testen. In diesem Fall müssen Sie jedoch die gesamte Logik selbst vorschreiben. Beispiel: Benutzeranmeldung, Eingabe einer JQL-Abfrage, Erstellen eines Projekts, Überprüfen von Elementen in Form des Erstellens einer Aufgabe, Verwalten von Projektberechtigungen usw. Und Atlassian-Bibliotheken bieten Methoden an, die bereits dafür bereit sind. Darüber hinaus muss Ihr Code beim Upgrade auf die neue Version von Jira nicht geändert werden. Nehmen Sie einfach die für diese Version geeigneten Atlassian-Bibliotheken.
Es gibt drei Möglichkeiten, Integrationstests für den von Atlassian bereitgestellten Atlassian Jira zu schreiben:
- Mit kabelgebundenen Tests können Sie die Dienste testen, die Ihr Plugin extern exportiert. Ein Beispiel für einen solchen Test finden Sie hier .
- Für Integrationstests müssen die Plugins jira-func-test-plugin und jira-testkit-plugin ausgeführt werden. Diese Tests überprüfen den korrekten Betrieb der Jira-Benutzeroberfläche mithilfe von HTTP-Anforderungen und -Antworten. Ein Beispiel für einen solchen Test finden Sie hier .
- Seitenobjekttests testen auch die Jira-Benutzeroberfläche, funktionieren jedoch über Selenium WebDriver.
Atlassian schreibt, dass das Testen der Benutzeroberfläche durch Seitenobjekttests dem Testen mit dem jira-func-test-Plugin vorzuziehen ist. In diesem Artikel erfahren Sie jedoch, wie Sie Integrationstests mit diesem Plugin schreiben.
Den im Artikel entwickelten Quellcode des Plugins mit Integrationstests finden Sie
hier .
Was sind Integrationstests?
Der Hauptunterschied zwischen Integrationstests und Komponententests besteht darin, dass für Komponententests im Gegensatz zu Integrationstests keine funktionierende Jira-Instanz erforderlich ist. Daher muss während des Integrationstests eine Instanz von Jira ausgelöst werden. Das Testen kann sowohl auf der lokalen Instanz (Jira, die mit Integrationstests aus unserem Plug-In entfernt wurde) als auch auf der Remote-Instanz erfolgen.
Schreiben wir zuerst Tests für eine lokale Instanz, und dann erkläre ich Ihnen, wie Sie dieselben Tests auf einer Remote-Instanz ausführen.
Erstellen Sie ein Jira-Plugin
Das Plugin wird mit dem
Befehl atlas-create-jira-plugin erstellt .
Fügen Sie unserem Plugin Abhängigkeiten hinzu
Die folgenden Abhängigkeiten müssen zur Datei pom.xml unseres Plugins hinzugefügt werden:
<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>
Diese Abhängigkeiten ermöglichen es uns, Integrationstests zu entwickeln.
Installieren Sie die erforderlichen Plugins auf der lokalen Jira-Instanz
Damit Integrationstests funktionieren, müssen wir sicherstellen, dass beim Starten unserer lokalen Jira-Instanz die Plugins jira-func-test-plugin und jira-testkit-plugin darauf installiert sind.
Fügen Sie dazu der Konfiguration des maven-jira-plugin-Plugins in pom.xml die folgenden Zeilen hinzu:
<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>
Einen Test schreiben
Erstellen Sie die Datei src / test / java / it / ru / matveev / alexey / jira / integrationsprüfungen / 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"); }
Standardmäßig müssen alle Tests das Suffix
Test
, damit Dateien mit Integrationstests ausgeführt werden können. Dies kann mit dem Parameter
functionalTestPattern
in der Plugin-Konfiguration des Maven-Jira-Plugins überschrieben werden.
Im obigen Test testen wir den Betrieb der Suche bei Bedarf im Issue Navigator. Erstellen Sie in der
setup
Methode ein Projekt mit einer Aufgabe, schreiben Sie dann eine Anforderung, die diese Aufgabe empfängt, und überprüfen Sie, ob wir sie wirklich auswählen konnten. Dann löschen wir in der
cleanup
das erstellte Projekt.
Führen Sie den Test aus
Der Test wird mit dem Befehl
atlas-integration-test
gestartet. Bei diesem Befehl steigt der lokale Jira an und es werden Integrationstests durchgeführt.
Teststruktur
Es gibt mehrere Klassen, von denen Sie beim Schreiben von Integrationstests erben können:
BaseJiraEmailTest
,
BaseJiraFuncTest
,
BaseJiraRestTest
.
Die am häufigsten verwendete Klasse ist
BaseJiraFuncTest
. Hier können Sie alle erforderlichen Funktionen testen.
In dieser Klasse gibt es solche Klassenvariablen:
backdoor
: Ermöglicht die Ausführung von Verwaltungsfunktionen wie das Verwalten von Projekten, Indizes, Projektberechtigungsschemata, Benutzern usw.navigation
: Ermöglicht die Navigation in der Benutzeroberfläche. Außerdem können Sie Jira unter dem gewünschten Benutzer betreten und verlassen.tester
: Ermöglicht das Arbeiten mit Seiten: Festlegen von Feldwerten, Klicken auf Schaltflächen, Überprüfen, ob ein Feld im Formular vorhanden ist usw.
Integrationstests greifen mit dem Kennwort
admin
auf Jira als
admin
zu. Für Integrationstests in Jira muss dieser Benutzer über dieses Kennwort verfügen.
Bei Verwendung des Befehls
navigation.login("username")
muss das Kennwort des Benutzers, unter dem Sie sich bei Jira anmelden, mit dem Benutzernamen übereinstimmen.
Ausführen von Integrationstests auf einer Remote-Instanz
Damit Integrationstests auf einer Remote-Instanz ausgeführt werden können, müssen die Plugins jira-func-test-plugin und jira-testkit-plugin darauf installiert sein.
Darüber hinaus müssen Sie im Plugin mit Integrationstests Änderungen an der Datei src / test / resources / localtest.properties vornehmen:
jira.protocol = http jira.host = remote-instance jira.port = 2991 jira.context = /jira jira.edition = all jira.xml.data.location = src/test/xml
Nachdem Sie den Befehl
atlas-integration-test
ausgeführt haben, werden die Tests auf der Remote-Instanz ausgeführt.
Testbeispiele
Die gute Nachricht ist, dass die Entwickler des Pakets jira-func-tests eine große Anzahl von Beispielen mit Tests für alle Gelegenheiten in dieses Paket aufgenommen haben. Sie sind im Webtest-Paket enthalten.
Viel Glück beim Testen von Jira!