Руководство по desktop-приложению: обзор продукта, скрипты, фаззинг JSON, мультиплексор
запросов. Раздел про REST API сервиса появится, когда он станет публичным.
О приложении
Laitap — бесплатный desktop API-клиент для Windows, macOS и Linux.
Отправляйте HTTP-запросы, собирайте коллекции, работайте в команде и публикуйте
документацию API — в духе Postman, но со своими возможностями.
Основные возможности
Коллекции и папки — структура запросов, переменные на уровне
коллекции и папок, наследование auth.
Импорт Postman — загрузка коллекций v2.x в приложение.
Фаззинг JSON — генерация «мусорных» и граничных вариантов тела
запроса для проверки устойчивости API.
Перейти к разделу Фаззинг JSON →
Мультиплексор (ковёр) — до 10 запросов параллельно или с задержкой;
ответы на одном экране плитками, красные — ошибки и 5xx.
Перейти к разделу Мультиплексор →
Снимок запроса (.snapshot) — один файл со всем контекстом бага:
URL, тело, переменные, auth, scripts, последний ответ.
Перейти к разделу Снимок →
Теги и умные папки
Теги на запросах — вкладка Tags в редакторе
запроса (#платёжка, #баг, #wip).
Умная папка — в контекстном меню коллекции или папки:
«Умная папка». Режим по тегам (любой / все) или по правилам:
код ответа, запуск за N дней, метод, URL, имя.
Правила по ответу работают после Send — сохраняются
lastStatusCode и lastRunAt на запросе.
Zero Knowledge шифрование
Для каждого workspace (личного или командного) можно включить
отдельное шифрование коллекций. Это режим Zero Knowledge:
сервер хранит только зашифрованные данные и не может прочитать содержимое без
вашего пароля.
Пароль vault создаётся и проверяется только на устройстве.
У каждого workspace свой пароль — личный и командные не связаны.
В команде шифрование включают владелец и
администраторы; участники разблокируют хранилище локально.
«Заблокировать» убирает ключ из памяти для выбранного workspace и скрывает его
коллекции до повторного ввода пароля.
Включить: Настройки → Приложение → Шифрование по workspace.
Потеря пароля означает потерю доступа к зашифрованным данным — восстановить
содержимое на сервере нельзя.
Фаззинг JSON — встроенный генератор вариантов тела запроса для
ручного тестирования API. Вы задаёте «эталонный» JSON, приложение по правилам
меняет отдельные поля на граничные и «плохие» значения. Без нейросетей: только
комбинаторика и заранее заданные мутации.
Кому полезно: QA и разработчикам, которые проверяют, как API
реагирует на пустые строки, огромные числа, null, бинарный мусор в
тексте, пустые массивы и прочий невалидный с точки зрения бизнес-логики ввод.
Где находится в приложении
Откройте запрос в коллекции или создайте новый.
Перейдите на вкладку Body.
Для REST: режим raw и тип JSON — панель
«Фаззинг JSON» появится над редактором тела.
Для GraphQL: панель находится над полем Variables (переменные
тоже должны быть валидным JSON).
Как работать: пошагово
Вставьте или напишите валидный JSON — тот, который обычно
отправляете на сервер (happy path).
Укажите количество вариантов (по умолчанию 10, максимум
50).
Нажмите «Сгенерировать N вариантов». Список появится под
панелью: для каждого варианта видны путь к полю ($.user.age),
описание мутации и превью JSON.
Нажмите «Применить» у нужного варианта — тело запроса
заменится на сгенерированное.
Нажмите Send и зафиксируйте код ответа, тело, время, ошибки
валидации.
Повторите для других вариантов из списка (или сгенерируйте список заново после
правки эталонного JSON).
Типичный сценарий тестировщика: один запрос в коллекции → 10 вариантов → 10
отправок с записью результатов в таблицу или в post-response скрипт.
Как устроена генерация
Приложение разбирает JSON как дерево и находит все изменяемые
узлы: числа, строки, массивы, объекты, null, булевы значения —
включая вложенные поля и элементы массивов.
Для каждого узла применяется фиксированный набор правил по
типу (см. таблицу ниже).
Каждый вариант — это копия исходного JSON с изменением
одного узла. Остальные поля остаются как в эталоне.
Из всех возможных мутаций выбирается до N вариантов с приоритетом
разнообразия по полям: сначала по одному варианту на разные
пути ($.name, $.count, …), чтобы не получить десять
мутаций одного и того же ключа.
Дубликаты с одинаковым телом отбрасываются.
Фаззинг не подставляет случайные байты и не
ломает синтаксис JSON — вы всегда отправляете синтаксически корректный JSON с
«плохими» значениями внутри. Для проверки битого JSON используйте ручное
редактирование тела.
Генератор находит пути вроде $.user.email, $.user.age,
$.items[0].sku, $.items[0].qty, а также сам массив
$.items и объект $.user. Мутации распределяются по
разным путям, чтобы за один прогон покрыть несколько полей.
Пример 3: GraphQL variables
На вкладке Body в режиме GraphQL эталон variables:
Фаззинг меняет, например, $.id на пустую строку или строку с
нулевыми байтами, а $.limit — на 0 или
999999. После «Применить» отправьте запрос с тем же query — меняются
только variables.
Чек-лист для тестировщика
Сервер возвращает 4xx с внятным сообщением, а не 500?
Валидация срабатывает на пустых строках и null?
Большие числа и длинные строки не кладут сервис (таймаут, OOM)?
Пустой массив / один элемент — ожидаемое поведение по спецификации?
Лишнее поле __fuzz игнорируется или отклоняется?
Кириллица и спецсимволы в строках обрабатываются корректно (кодировка)?
Ограничения
Нужен синтаксически валидный JSON до генерации (комментарии в стиле Postman поддерживаются при разборе).
Не более 50 вариантов за один клик.
Один вариант меняет одно поле/узел за раз (не полный combinatorial explosion всех полей сразу).
Режимы body form-data, x-www-form-urlencoded и binary не поддерживаются — только raw JSON и GraphQL variables.
Автоматическая отправка всех вариантов подряд пока не реализована: каждый вариант применяется и отправляется вручную (или через свой скрипт).
Связь с другими возможностями
Post-response Script — можно писать pm.test на код
ответа после каждого фазз-варианта.
Раздел Scripts →
Симуляция сети (вкладка Network) — комбинируйте с фаззингом,
чтобы проверять retry при плохом теле и обрыве соединения.
Примеры (Examples) — сохраняйте удачные/падающие варианты как
examples в коллекции для регрессии.
Мультиплексор запускает набор из 5–10 запросов одновременно (или с
паузой между стартами) и показывает все ответы на одном экране в виде плиток —
«ковёр». Удобно после деплоя: проверить health-check, auth, основные CRUD-эндпоинты
за один клик.
Отличие от Postman Runner: в Postman параллельный прогон коллекции
доступен только в платных планах; здесь параллельный запуск встроен и бесплатен.
Как открыть
В боковой панели коллекций откройте контекстное меню (ПКМ) на коллекции или папке.
Выберите «Мультиплексор (ковёр)».
В модальном окне появятся запросы из выбранной области (до 10 штук).
Настройка и запуск
Снимите галочки с запросов, которые не нужны в этом прогоне.
У каждого включённого запроса поле × N — сколько раз отправить его
за прогон (до 20). Например, × 8 на одном POST — восемь одинаковых
запросов параллельно, чтобы проверить гонки и идемпотентность на бэкенде.
Счётчик «Запусков» — сумма всех × N (максимум 50 HTTP за один ковёр).
Выберите режим: Параллельно — все стартуют сразу;
С задержкой — между стартами пауза (мс), удобно для rate-limit.
Нажмите «Запустить ковёр». Во время выполнения доступна кнопка «Остановить».
Чтение плиток
Зелёная — HTTP 2xx.
Жёлтая — редиректы и 4xx (запрос дошёл, но ответ «не OK»).
Красная — сеть/DNS/TLS, отмена, 5xx и прочие сбои.
На плитке: метод, имя запроса, код ответа, время, превью тела.
При повторе одного запроса на плитке виден номер #1, #2…
Что учитывается при отправке
Переменные коллекции и папок, auth, Pre-request Script на запросе и предках.
Настройки запроса (таймаут, редиректы, SSL) и вкладка Network (симуляция сети).
Каждый запрос идёт с отдельным clientRequestId — параллельные запросы не блокируют друг друга.
Типичные сценарии
Smoke-тест после деплоя: 8 health/auth/API эндпоинтов параллельно.
Проверка папки «Payments» с задержкой 200 мс между стартами.
Быстрый обзор: какие из сохранённых запросов сейчас отвечают 200.
Нагрузочный мини-тест: один эндпоинт × 10 параллельно — как сервер отвечает на дубли.
Снимок — полный слепок состояния запроса в одном файле
.snapshot. Нашли баг → сохранили снимок → отправили разработчику → он
открыл и видит ту же среду, что была у вас.
Отличие от Postman: там экспорт коллекции, окружения и переменных — отдельно.
В Laitap всё в одном файле, включая последний ответ и отличия от сохранённой версии в коллекции.
Где в приложении
В строке URL запроса кнопка Snapshot (рядом с Examples и Send).
Основной клик — сохранить; меню ▾ — «Сохранить» или «Открыть снимок…».
Запишите реальный трафик на Production через браузер, Fiddler, Charles или Wireshark —
импортируйте лог в Laitap и получите коллекцию: каждый HTTP-запрос с сохранённым ответом
(как Postman Example). Можно сразу повторять локально.
Горячая клавиша:Ctrl+Shift+O или кнопка
с иконкой сигнала в боковой панели коллекций.
Поддерживаемые форматы
.har — Chrome DevTools, Firefox, Charles (Export HAR), Fiddler Everywhere
.saz — Fiddler Classic (File → Save → All Sessions)
.chls / .chlsj — Charles Session (или экспорт HAR из Charles)
.pcap — Wireshark, только HTTP без TLS (HTTPS нужен HAR из прокси)
Как импортировать
File → Import Traffic Log… или кнопка в сайдбаре.
Выберите файл лога.
Коллекция создаётся с папками по хостам; у каждого запроса — example с телом ответа.
До 500 запросов за импорт; CONNECT и служебный трафик пропускаются.
Ограничения
Зашифрованный HTTPS из PCAP без ключей не восстанавливается — используйте HAR из прокси.
pcapng: экспортируйте HTTP как HAR или сохраните classic pcap.