Интеллектуальное интегрированное тестирование с TestKit

Уровень опыта: средний

Наши учебники классифицируются как «новичок», «промежуточный» и «продвинутый». Этот уровень находится на «промежуточном» уровне. Если вы еще никогда не разрабатывали плагин, вы можете найти это немного сложнее.

TestKit не следует использовать на производственных серверах, поскольку он создает «бэкдор» на уровне администратора в JIRA.

Исходный код плагина, используемого в этом учебнике, доступен в общедоступном репозитории Atlassian. Вы можете получить исходный код из bitbucket.org/atlassian_tutorial/jira-testkit-example.

Подготовка JIRA к испытаниям

Вы когда-нибудь задумывались над тем, как настроить сложные тестовые сценарии в JIRA? Например, добавьте несколько учетных записей пользователей, групп и разрешений и проверьте, правильно ли ваш плагин обрабатывает ограничения безопасности?

Вы когда-нибудь устали готовить разные дампы XML для каждой конфигурации?

Чтобы решить такие проблемы, вы можете использовать TestKit, дополнение к тестовой инфраструктуре, которое помогает разработчикам легко писать интеграционные тесты.

Мы использовали TestKit внутри JIRA в течение некоторого времени, и поскольку он созрел и охватил все больше и больше функций, мы решили, что пришло время поделиться этим с экосистемой.

В следующем документе мы поможем вам настроить ваш плагин для использования TestKit и показать вам, как использовать его с некоторыми примерами.

Преимущества использования TestKit вместо FuncTestCase

Как вы, вероятно, заметили, FuncTestCase предоставляет множество административных методов с помощью встроенного атрибута администрирования. Вы все еще можете их использовать. Все они основаны на веб-интерфейсе, что означает, что, когда вы хотите добавить пользователя, FuncTestCase переходит на страницу, заполняет форму, отправляет ее и т. д.

Вместо этого TestKit разговаривает с JIRA, используя REST, обмениваясь исключительно важными данными для выполнения задачи. Это намного быстрее. И если у вас много тестов, вы заметите разницу во времени при переключении с FuncTestCase на TestKit.

Также TestKit активно поддерживается, и вы можете ожидать появления новых функций.

JIRA TestKit - это Open Source, поэтому вы можете легко изменить его и адаптировать к вашим потребностям, а также поделиться своим кодом с нами или другими разработчиками.

Настройка плагина

В вашем pom.xml поиске конфигурации maven-jira-plugin вам необходимо расширить его, добавив jira-testkit-plugin:


<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-jira-plugin</artifactId>
    <configuration>
        <pluginArtifacts>
            <pluginArtifact>
                <groupId>com.atlassian.jira.tests</groupId>
                <artifactId>jira-testkit-plugin</artifactId>
                <version>${testkit.version}</version>
            </pluginArtifact>
        </pluginArtifacts>
[...]

Также добавьте jira-testkit-client к зависимостям вашего проекта, не забудьте использовать его только с областью тестирования:


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

Проверьте репозиторий JIRA TestKit, чтобы узнать, какая текущая версия, и, соответственно, установите свойство testkit.version.

Использование TestKit в тестах

В предыдущих разделах вы узнали о выполнении интеграционных тестов. Вот пример интеграционных тестов с помощью TestKit:


package it;
import com.atlassian.jira.functest.framework.FuncTestCase;
import com.atlassian.jira.testkit.client.Backdoor;
import com.atlassian.jira.testkit.client.util.TestKitLocalEnvironmentData;
import com.atlassian.jira.testkit.client.util.TimeBombLicence;

public class MyPluginTest extends FuncTestCase {
    @Override
    protected void setUpTest() {
        super.setUpTest();
        Backdoor testKit = new Backdoor(new TestKitLocalEnvironmentData());
        testKit.restoreBlankInstance(TimeBombLicence.LICENCE_FOR_TESTING);
        testKit.usersAndGroups().addUser("test-user");
        testKit.websudo().disable();
        testKit.subtask().enable();
    }

    public void testIntegration() {
        // Поместите свою тестовую логику здесь
    }
}

В приведенном выше примере вы можете заметить, насколько легко использовать TestKit. Вы можете использовать методы загрузки данных для заполнения JIRA с различными конфигурациями, затем вы можете настроить его дальше. Здесь мы загружаем пустой экземпляр, затем добавляем пользователя, отключаем websudo и включаем подзадачи.

Там больше - при просмотре API вы увидите методы управления схемами разрешения, проектами, свойствами приложений, почтовыми серверами, панелями мониторинга и т. д.

Идите и играйте с ним!

Теперь вы можете написать интеграционные тесты для JIRA с помощью TestKit.

О, и не забывайте, что есть шоколад!

 

По материалам Atlassian JIRA  Server Developer Smarter integration testing with TestKit