Почему Rest Assured не так уж и хорош

Давно ничего не писал. Навалилось много дел, да и лето - не самая активная пора для работы. В этот раз решил поделиться своими мыслями по поводу Rest Assured и того, почему он не подходит для написания тестов в том виде, в котором его подают в официальных туториалах и доках.

Прошло уже почти три года с момента написания одной из самых популярных заметок в этом блоге с подборкой рест клиентов.

Я использую Rest assured очень активно и все, что я напишу ниже, основано на моем практическом опыте. У вас может быть другое мнение и это отлично, так как блоги и выступления на конференциях - это в первую очередь обмен опытом.

Официальная документация учит нас, что тесты на Rest Assured писать легко и просто с использованием BDD стиля:

public class SwapiTest {

    @Test
    public void shouldGetLuke() {
        get("http://swapi.co/api/people/1/")
                .then().statusCode(200)
                .and()
                .assertThat()
                .body("name", equalTo("Luke Skywalker"));
    }
}

Все это хорошо до момента, пока ваших тестов становится больше, чем пару штук. С ростом количества тестов начинаются проблемы. Большинство испытывает их из-за слабого знания языка программивания и умения внятно разбивать проект на компоненты. Правильная архитектура и разделение проекта на слои - это основное, что нужно продумывать в вашем проекте по автоматизации. Библиотека, на основе которой вы строите свое решение, - второстепенна.

Если вы не правильно построите архитектуру и будете писать тесты в таком стиле, как предлагают официальные туториалы, то, несомненно, наткнетесь на проблемы с логированиеи и дублированием кода.

В дополнение ко всему, Rest assured медленный. Так как это обертка, состоящая из Java/Groovy кода, то и работает он значительно медленее, чем его конкуренты. Для тестов это может быть и не сильно критично, но вот проверку json схемы, которая встроена в Rest Assured, я рекомендую не делать: работать оно будет ооочень медленно.

Если вы решаетесь на использование рест ашурда в своем проекте, хорошо подумайте, как вы хотите видеть ваши тесты, отчеты и сколько времени хотите тратить на поддержку этих тестов.

После того, как Allure добавил поддержку Rest Assured c отчетами по REST API тестам, ситуация значительно улучшилась.

Еще одной проблемой является отсутсвие вменяемых примеров кода и хороших практик работы с Rest Assured. Складывается впечатление, что все фигачат как попало и это всех устраивает.

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

Не упустите свой шанс сделать автоматизацию тестирования REST API на своем проекте действительно правильной.