如何为Atlassian Jira Server开发集成测试(jira-func-test-plugin)



让我们讨论一下如何为Atlassian Jira Server进行集成测试。 为此,我们将使用Atlassian提供的库:jira-func-test-plugin和jira-testkit-plugin。

集成测试使您可以通过插件导出的服务和Jira用户界面来测试Jira插件的性能。 当然,您可以仅使用Selenium WebDriver并编写代码来测试Jira的用户界面。 但是,在这种情况下,您必须自己规定所有逻辑。 例如,用户登录,输入JQL查询,创建项目,以创建任务的形式检查元素,管理项目权限等等。 Atlassian库提供了已经为此准备好的方法。 此外,升级到新版本的Jira时不需要更改您的代码,只需使用适合该版本的Atlassian库即可。

有三种方法可以为Atlassian提供的Atlassian Jira编写集成测试:

  1. 有线测试使您可以测试插件从外部导出的服务。 这种测试的一个例子在这里
  2. 集成测试需要运行jira-func-test-plugin和jira-testkit-plugin插件。 这些测试使用HTTP请求和响应来验证Jira用户界面的正确操作。 这种测试的一个例子在这里
  3. 页面对象测试还测试了Jira用户界面,但它们通过Selenium WebDriver进行工作。

Atlassian写道,通过Page对象测试来测试用户界面比通过jira-func-test-plugin进行测试更可取。 但是在本文中,我们将学习如何使用此插件编写集成测试。

本文中开发的带有集成测试的插件的源代码可以在此处找到。

什么是集成测试?


集成测试与单元测试之间的主要区别在于,与集成测试不同,单元测试不需要有效的Jira实例。 因此,有必要在集成测试期间引发Jira实例。 测试可以在本地实例(Jira,通过集成测试从我们的插件中提升)上进行,也可以在远程实例上进行。

首先让我们为本地实例编写测试,然后告诉您如何在远程实例上运行相同的测试。

创建一个Jira插件


该插件是使用atlas-create-jira-plugin命令创建的

向我们的插件添加依赖项


必须将以下依赖项添加到我们插件的pom.xml文件中:

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

这些依赖性将使我们能够开发集成测试。

将必要的插件安装到本地Jira实例


为了进行集成测试,我们需要确保在启动本地Jira实例时,在其上安装了jira-func-test-plugin和jira-testkit-plugin插件。

为此,将以下行添加到pom.xml中的maven-jira-plugin插件配置中:

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

编写测试


创建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"); } 

默认情况下,所有测试都必须带有后缀Test才能运行带有集成测试的文件。 可以使用maven-jira-plugin插件配置中的functionalTestPattern参数覆盖此参数。

在上述测试中,我们在问题导航器中测试按需搜索的操作。 在setup方法中,创建一个带有任务的项目,然后编写一个接收该任务的请求,并验证我们是否确实能够选择它。 然后,在cleanup方法中,我们删除创建的项目。

运行测试


使用atlas-integration-test命令启动atlas-integration-test 。 使用此命令,本地Jira上升并对其执行集成测试。

测试结构


编写集成测试时,您可以继承几个类: BaseJiraEmailTestBaseJiraFuncTestBaseJiraRestTest

最常用的类是BaseJiraFuncTest 。 它允许您测试所有必要的功能。

在此类中,有这样的类变量:

  • backdoor :允许您执行管理功能,例如管理项目,索引,项目权限方案,用户等。
  • navigation :允许您在用户界面中进行导航。 还允许您在所需用户下进入和退出Jira。
  • tester :允许您使用页面:设置字段值,单击按钮,检查表单中是否存在字段等。

集成测试使用密码adminadmin身份访问Jira,因此,对于Jira中的集成测试,该用户必须具有此密码。

使用navigation.login("username")命令时,登录Jira时使用的navigation.login("username")密码必须与用户名匹配。

在远程实例上运行集成测试


为了在远程实例上运行集成测试,必须在其上安装jira-func-test-plugin和jira-testkit-plugin插件。

另外,在具有集成测试的插件中,您需要对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 

现在,在运行atlas-integration-test命令之后,将在远程实例上运行测试。

测试例


好消息是,jira-func-tests程序包的开发人员在此程序包中包含了许多适用于所有场合的测试示例。 它们在webtests包中。

祝您测试吉拉好运!

Source: https://habr.com/ru/post/zh-CN427165/


All Articles