# Быстрый старт

{% hint style="info" %}
В этом руководстве мы протестируем работу back-end сервера для записей типа post на следующем сценарии:

* запросим у сервера все имеющиеся записи
* добавим новую запись
* проверим корректное добавление записи
* обновим только что созданную запись и проверим корректность обновления через ответ от сервера
* запросим обновленную запись от сервера
* проверим, что на сервере запись действительно обновлена
* удалим запись
* проверим, что на сервере запись не существует

**Для этого нам потребуется не более 10 минут, после запуска программы.**
{% endhint %}

## Установка TestMace

Скачать TestMace можно по ссылкам ниже или с сайта <https://client.testmace.com>

* Windows <https://client.testmace.com/download/?os=windows>&#x20;
* Mac OS <https://client.testmace.com/download/?os=mac>
* Linux <https://client.testmace.com/download/?os=linux>

Запустите скачанный файл  и следуйте инструкциям инсталлятора, во время установки будет предложено выбрать директорию установки приложения.

{% hint style="warning" %}
*Для установки TestMace на Windows запустите инсталлятор **с правами администратора.***
{% endhint %}

По завершению установки запустите приложение. Перед вами откроется новый проект.&#x20;

## Обзор интерфейса

![](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-Lvej9kSTR5zIj5eqAT6%2F-LvejCCMEOC2u95BBA49%2Fmain%20screen.jpg?alt=media\&token=b31121b3-89e6-4899-88e0-a1b0e5b51ca0)

## Ваш первый GET запрос

Для создания первого запроса создайте новую вкладку нажав на **+**. При этом в зоне "Scrathes Area" будет создан узел с названием **Scratch 1**. Вставьте в поле URL адрес: <https://testmace-stage.herokuapp.com/posts>. Можно сразу протестировать ответ сервера из "Scrathes Area" или перенести наш черновик в проект. Для удобства переименуйте этот узел, дав ему название **getPosts**.&#x20;

{% hint style="info" %}
Обратите внимание, что все изменения в проекте сохраняются автоматически в режиме реального времени.
{% endhint %}

![Создание шаблона GET запроса](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMhWmHEyt7Wg_pwGOK%2Fgetting_started_1.gif?alt=media\&token=a449b957-5d13-4714-bd85-ffdf0a8506de)

Создайте в проекте узел типа [Folder](https://docs-ru.testmace.com/node-types/folder) с названием **posts** и перенесите созданный черновик **getPosts** из "Scratch Area" в "Project Area".

![Создание Folder узла и перенос шаблона GET запроса](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMhbUocmpVlEgJv8Wx%2Fgetting_started_2.gif?alt=media\&token=98edc4c3-659c-45f8-bb60-14fc441b0161)

Откройте двойным кликом созданный запрос **getPosts** и выполните его нажав на кнопку "Run".

![Запуск GET запроса](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMhh6Qu8HogBVo8YVV%2Fgetting_started_3.gif?alt=media\&token=2994c506-2517-4eb5-8d5b-0cfdac3e46ef)

Мы видим, что запрос выполнен успешно, в **Response Area** получен список существующих записей.  Давайте рассмотрим этот экран подробнее:

![](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMhmH053dp3fjyobYv%2Frun%20screen.png?alt=media\&token=f7605fac-dd77-40c1-a4a7-eb21b3810a93)

{% hint style="info" %}

#### Request parameters

Здесь вы можете указать http заголовки, а так же передать параметры запросу с автодополнением и использование переменных.

#### Request type

* **GET** — получение ресурса
* **POST** — создание ресурса
* **PUT** — обновление ресурса
* **DELETE** — удаление ресурса
* **PATCH** — для частичного изменения ресурса
* **OPTIONS** — для описания параметров соединения с ресурсом

#### URL

Поле URL поддерживает автодополнение, а так же использование переменных. Мы воспользуемся этими функциями чуть позже.&#x20;

#### Make Request

Выполнение запроса или группы запросов при запуске из корня проекта или ноды типа folder

#### Response area

Зона ответа сервера, вкладка Response Body может быть представлена в виде: Parsed, JSON, text. В соседних вкладках можно посмотреть Response Headers, а так же создать или посмотреть существующие Assertion узлы для запроса.
{% endhint %}

## POST запрос и Assertion

Давайте теперь добавим новую запись типа post на сервер, для этого нам нужно создать новый [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) узел.&#x20;

{% hint style="info" %}
**Существует три способа добавления нового узла в проект:**

1. Мы можем создать черновик (Scratch) нажав на **+** и позже перенести его в проект используя Drag and Drop;&#x20;
2. Можно нажать правой кнопкой мыши по узлу родителю и выбрать **Add node -> Request step**;&#x20;
3. Можно нажать на кнопку **Add project node-> Add node -> Request step**.&#x20;
   {% endhint %}

Создайте новый узел любым из этих способов и задайте ему имя **createPost**.&#x20;

1. Выберите для этого узла "**Request type**" значением POST
2. В поле URL вставьте <https://testmace-stage.herokuapp.com/posts>
3. Во вкладке body выберите тип данных JSON и добавьте `{"title": "Testing post", "content": "Sendt via TestMace"}`
4. Выполните запрос нажав на кнопку RUN.&#x20;

Будет получен ответ об успешном добавлении записи, но нам нужно проверить, что запись добавлена корректно, для этого мы воспользуемся механизмом быстрого создания [Assertion](https://docs-ru.testmace.com/node-types/assertion) узлов. Мы сравним отправляемые данные с полученными от сервера.

В зоне "Response Area" в формате Parsed нажмите правой кнопкой мыши по **значению title**, которое мы передавали в  запросе, выберите **Create Assertion -> Compare -> Equal.** После этого узел [Assertion](https://docs-ru.testmace.com/node-types/assertion) будет создан и открыт, нам дополнительной настройки не требуется, поэтому закроем его. Аналогично создадим Assertion узел для значения Content.

А теперь запустим запрос **createPost** и интерфейс проинформирует нас об успешном выполнении теста. Это совсем не сложно, посмотрите анимацию ниже:

![POST запрос и создание Assertion](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMi-YplERQn7P7vAdh%2Fgetting_started_4.gif?alt=media\&token=72a8ead4-09d7-4042-bcf3-5dfc4baac62b)

### Динамические переменные

Для того, чтобы мы могли взаимодействовать с созданной нами записью на сервере, нужно передавать в последующие [Request step](https://docs-ru.testmace.com/node-types/requeststep) значение её **Id**. Создадим динамическую переменную **postId** и присвоим ей значение Id возвращаемое в записи после выполнения **CreatePost**.&#x20;

1. Кликните правой кнопкой мыши по значению **Id** в Response body ноды **CreatePost**,&#x20;
2. Выберите пункт **Assign to variable**.&#x20;
3. Во всплывающем окне в качестве ноды выберите директорию проекта **posts**, введите имя переменной: **postId** и нажмите **ОК**.

Для того чтобы обратиться к переменной используйте [встроенную переменную](https://docs-ru.testmace.com/variables/variables) `$dynamicVar`:

```
${$dynamicVar.postId}
```

![Создание динамической переменной](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMi7013WKadQVvXiGl%2Fgetting_started_5.gif?alt=media\&token=062fae05-2749-47ee-8cb9-f3ca2ebb949b)

## PUT запрос&#x20;

На этом этапе мы будем использовать запрос типа PUT. Обратимся  к записи созданной на предыдущем шаге при помощи динамической переменной: `${$dynamicVar.postId}` и обновим  значения записи **title** и **content**.

1. Создайте [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) узел c именем **updatePost**
2. Request type выберите **PUT**
3. URL: [https://testmace-stage.herokuapp.com/posts/${$dynamicVar.postId}](https://testmace-stage.herokuapp.com/posts/$%7B$dynamicVar.postId%7D)
4. Body: `{"title": "Testing post updated", "content": "Updated via TestMace"}`
5. Выполним запрос и аналогично шагу **POST запрос**, создадим два [Assertion](https://docs-ru.testmace.com/node-types/assertion) узла для сравнения отправленных и полученных значений **title** и **content**.

![Создание PUT запроса](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMiCJFpZet2AU5b53U%2Fgetting_started_6.gif?alt=media\&token=f2afbe7f-c124-4766-a83f-f9a41eeba3fd)

## Проверка изменений

В некоторых случаях необходимо провести дополнительную проверку изменений записи, так как сервер может ответить на PUT запрос успешным выполнением, а при обращении через GET запрос мы получим старую запись.&#x20;

Для этого мы создадим GET запрос по URL записи с использованием динамической переменной:

1. Создайте новый [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) узел с именем **getPost**
2. Тип запроса: GET
3. URL: [https://testmace-stage.herokuapp.com/posts/${$dynamicVar.postId}](https://testmace-stage.herokuapp.com/posts/$%7B$dynamicVar.postId%7D)
4. Выполните запрос и создайте 2 [Assertion](https://docs-ru.testmace.com/node-types/assertion) узла для сравнения данных **title** и **content**.

![Проверка изменений через GET запрос](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMiT5mOsq1gAMPerMW%2Fgetting_started_7.gif?alt=media\&token=5e59de9b-f62d-41bc-837b-64cc73fefb57)

## DELETE запрос

Следующий шаг - удаление созданной нами записи по URL записи с использованием динамической переменной:

1. Создайте узел типа [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) с именем **deletePost**
2. Тип запроса: DELETE
3. URL: [https://testmace-stage.herokuapp.com/posts/${$dynamicVar.postId}](https://testmace-stage.herokuapp.com/posts/$%7B$dynamicVar.postId%7D)

![DELETE запрос](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMiZW7ZpmWWOjtKxmv%2Fgetting_started_8.gif?alt=media\&token=85f97180-fbe5-49ed-9f42-9bb64452d528)

## Проверка DELETE

Для того, чтобы убедиться, что созданная запись была удалена с сервера, создадим GET запрос  по URL записи с использованием динамической переменной, мы ожидаем, что при запросе получим ответ сервера: 404, поэтому создадим соответствующий Assertion узел:

1. Создайте узел типа [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) с именем **checkIfNodeExists**
2. Тип запроса: GET
3. URL: [https://testmace-stage.herokuapp.com/posts/${$dynamicVar.postId}](https://testmace-stage.herokuapp.com/posts/$%7B$dynamicVar.postId%7D)
4. Выполните запрос и в зоне Response Area выберите пункт **Assertions** и добавьте новый [Assertion](https://docs-ru.testmace.com/node-types/assertion) узел, нажав ADD. Внесите данные узла:
   1. Actual value: `${$response.code}`
   2. Operator: `=`
   3. Expected value: `404`

![](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMifs1DC9bLBWd_0OX%2Fgetting_started_9.gif?alt=media\&token=2a4955ea-9330-482d-bfd4-79856fea6587)

## Заключение

В результате мы получили набор тестов для нашего сервера, которые можно последовательно выполнить, перейдите в узел **posts** и нажмите RUN.&#x20;

![Запуск сценария](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMgwmbAbE7nK7xCbnP%2F-LiMijSU3AugGlYW8Hb9%2Fgetting_started_10.gif?alt=media\&token=19974399-a80a-4c9d-8929-1481ff85ddff)

## Видео инструкция

Посмотрите весь процесс создания сценария описанного в руководстве на видео

{% embed url="<https://youtu.be/Gyg_4w78KBo>" %}

## Код для импорта через [shared](https://docs-ru.testmace.com/other/import/shared)

{% file src="<https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMcRqm3jOlWR7Y2Baj%2F-LiMgl1CXlo1QrHQ-pvL%2Fgetting_started_shareCode.txt?alt=media&token=b5e7d344-675d-496f-9ab6-f46b2eb33817>" %}
Быстрый старт Share код
{% endfile %}

## Скачать проект

Разархивируйте  в директорию проектов TestMace.

{% file src="<https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMcRqm3jOlWR7Y2Baj%2F-LiMgePcyczxfcL4KgnN%2FTestMace_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9_%D1%81%D1%82%D0%B0%D1%80%D1%82.zip?alt=media&token=ba20e623-8cf6-43f6-9cbd-1fa3b5f7ad31>" %}
Быстрый старт
{% endfile %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-ru.testmace.com/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
