Collection 1 что это

Обновлено: 25.06.2024

Это субъективный взгляд человека, который несколько часов назад впервые ознакомился с новой версией сборника программ от Adobe — тут не будет серьезной аналитики и объективных оценок.

Я ничего не читал о новых фичах каждой из программ, а если что-то и прочитал, к моменту релиза забыл :) Поэтому описывать буду только те фичи, которые сразу бросились в глаза или за время ознакомления с новой версией попались под руку. А т.к. с каждую программу я «изучал» 10-15 минут, дам по каждой буквально 3-4 замечания — остальное можно будет либо открыть самому (мне этот процесс нравится больше всего), либо прочитать в специализированных источниках.

Так что это будет похоже на самопальные видео-презентации мобильных новинок — «о, открываю коробочку… что у нас тут… ух ты — телефончик, зарядочка и диск… симпатичный».

Для каждой просмотренной мною программы я дам свою личную оценку апдейту по пятибальной шкале: 1 — втф, 2 — ухудшилось, 3 — ура, ничего не сломали, 4 — нормально, 5 — отличный апдейт.

Введение

image


1 — коллекция, 2 — папка, 3 — запрос

Главные понятия, которыми оперирует Postman это Collection (коллекция) на верхнем уровне, и Request (запрос) на нижнем. Вся работа начинается с коллекции и сводится к описанию вашего API с помощью запросов. Давайте рассмотрим подробнее всё по порядку.

Collection

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

Folder

Папка — используется для объединения запросов в одну группу внутри коллекции. К примеру, вы можете создать папку для первой версии своего API — "v1", а внутри сгруппировать запросы по смыслу выполняемых действий — "Order & Checkout", "User profile" и т. п. Всё ограничивается лишь вашей фантазией и потребностями. Папка, как и коллекция может иметь свои скрипты, но не переменные.

Request

Запрос — основная составляющая коллекции, то ради чего все и затевалось. Запрос создается в конструкторе. Конструктор запросов это главное пространство, с которым вам придётся работать. Postman умеет выполнять запросы с помощью всех стандартных HTTP методов, все параметры запроса под вашим контролем. Вы с лёгкостью можете поменять или добавить необходимые вам заголовки, cookie, и тело запроса. У запроса есть свои скрипты. Обратите внимание на вкладки "Pre-request Script" и "Tests" среди параметров запроса. Они позволяют добавить скрипты перед выполнением запроса и после. Именно эти две возможности делают Postman мощным инструментом помогающим при разработке и тестировании.

image


1 — вкладки с запросами, 2 — URL и метод, 3 — параметры запроса, 4 — параметры ответа

Скрипты

"Postman Sandbox" это среда исполнения JavaScript доступная при написании "Pre-request Script" и "Tests" скриптов. "Pre-request Script" используется для проведения необходимых операций перед запросом, например, можно сделать запрос к другой системе и использовать результат его выполнения в основном запросе. "Tests" используется для написания тестов, проверки результатов, и при необходимости их сохранения в переменные.

image


Последовательность выполнения запроса (из оф. документации)

Помимо скриптов на уровне запроса, мы можем создавать скрипты на уровне папки, и, даже, на уровне коллекции. Они называются также — "Pre-request Script" и "Tests", но их отличие в том, что они будут выполняться перед каждым и после каждого запроса в папке, или, как вы могли догадаться, во всей коллекции.

image


Последовательность выполнения запроса со скриптами папок и коллекций (из оф. документации)

Переменные

Postman имеет несколько пространств и областей видимости для переменных:

  • Глобальные переменные
  • Переменные коллекции
  • Переменные окружения
  • Локальные переменные
  • Переменные уровня данных

Глобальные переменные и переменные окружения можно создать, если нажать на шестеренку в правом верхнем углу программы. Они существуют отдельно от коллекций. Переменные уровня коллекции создаются непосредственно при редактировании параметров коллекции, а локальные переменные из выполняемых скриптов. Также существуют переменные уровня данных, но они доступны только из Runner, о котором мы поговорим позже.

image[image]


Приоритет пространств переменных (из оф. документации)

Особенностью переменных в Postman является то, что вы можете вставлять их в конструкторе запроса, в URL, в POST параметры, в Cookie, всюду, используя фигурные скобки в качестве плейсхолдера для подстановки.

image


> и > — переменные окружения DNS Checker будут заменены на значения во время выполнения запроса

Из скриптов переменные тоже доступны, но получить их поможет вызов стандартного метода встроенной библиотеки pm:

Collection Runner

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

После выполнения всех запросов формируется отчет, который покажет количество успешных и провальных проверок из скриптов "Tests".

image


Collection Runner

Console

Пользуйтесь консолью для отладки ваших скриптов, и просмотра дополнительной информации по запросам. Консоль работает, как во время запуска одного запроса, так и во время запуска пакета запросов через Runner. Чтобы её открыть, найдите иконку консоли в нижнем левом углу основного экрана приложения:

image

Полезно знать

В завершении приведем основные команды, которые вам могут понадобиться во время написания скриптов. Для лучшего усвоения, попробуйте поиграться с ними самостоятельно.

Крупнейший дамп в истории: 2,7 млрд аккаунтов, из них 773 млн уникальных


Гигантский архив содержит 2 692 818 238 записей с адресами электронной почты и паролями.

Хант раздобыл базу и провёл анализ, хотя её огромный размер вызвал определённые технические трудности из-за превышения 32-битного значения.


Трой говорит, что скачал архив с файлообменника Mega. Несколько информаторов оперативно прислали ему ссылку на файл, но вскоре его удалили с хостинга. В архиве оказалось более 12 000 отдельных файлов общим размером более 87 ГБ. Ссылка была опубликована на одном из хакерских форумов вместе со скриншотов, подтверждающим содержимое архива. Вот полный список файлов.

Пока рано говорить о том, насколько достоверная информация содержится в новой базе. Однако Трой Хант нашёл там свой адрес электронной почты и пароль, который использовал много лет назад. «К счастью, — говорит он, — эти пароли больше не используются, но я всё ещё испытываю чувство тревоги, когда вижу их снова. В результате утечки несколько лет назад были скопированы парольные хеши, но в этой базе содержатся дехешированные пароли, которые взломаны и преобразованы обратно в обычный текст».

База составлена из множества различных отдельных утечек — буквально из тысяч источников. Всего в ней 1 160 253 228 уникальных комбинаций адресов электронной почты и паролей. Это при обработке паролей с учётом регистра и адресов электронной почты без учёта регистра. Трой Хант отмечает, что в этом объёме есть определённое количество мусора, потому что хакеры не всегда аккуратно форматируют свои дампы для удобной обработки (сочетание различных типов разделителей, включая двоеточия, точки с запятой, а также сочетание различных типов файлов, таких как текстовые файлы с разделителями, файлы, содержащие операторы SQL и другие сжатые архивы).

Новых адресов электронной почты в базе 772 904 991. Все данные уже загружены на сайт и доступны для поиска. Это крупнейшее обновление в истории HIBP.

Обнаружено также 21 222 975 уникальных паролей (то есть сочетаний электронной почты и паролей). Как и в случае с адресами электронной почты, эта цифра получена после применения множества правил, чтобы максимально очистить базу от дубликатов, насколько это возможно, включая удаление паролей в хэшированной форме, игнор строк с управляющими символами и фрагментами операторов SQL и т. д. После добавления новых данных общее количество уникальных записей в базе сайта выросло до 551 509 767.

Трой Хант признаётся, что после обработки этой базы на облачном хостинге ему предстоит неприятный разговор с женой по финансовому вопросу.

В сети появилась громадная база скомпрометированных логинов и паролей. Рассказываем, как искать в ней свои данные и что делать, если вы их найдете.

Странно, что в базу не вошли логины и пароли таких известных утечек, как случай с LinkedIn в 2012 году и обе бреши Yahoo (мы уже писали и про первую брешь в Yahoo, и про вторую).

Первый вариант: вы используете один и тот же пароль в нескольких аккаунтах, привязанных к одному почтовому ящику. В этом случае придется попотеть — вам нужно будет сменить пароли везде, где использован этот злосчастный e-mail. Да, на каждом сайте. Не забудьте, что пароли должны быть длинными и уникальными. Понятное дело, если вы привыкли использовать один и тот же пароль на всех сайтах, запомнить кучу новых комбинаций будет трудновато. В этом случае может пригодиться менеджер паролей.

Второй вариант: вы используете уникальные пароли во всех аккаунтах, привязанных к одному почтовому ящику. Спешим вас обрадовать: это сильно упрощает задачу. Конечно, можно поступить как в первом случае — взять и сменить все пароли подряд. Но реальной необходимости в этом нет. Сначала стоит проверить пароли с помощью Pwned Passwords, еще одной полезной функции haveibeenpwned.

Достаточно ввести в поле пароль к одному из ваших аккаунтов, чтобы узнать, хранится ли он в базе данных сервиса — в виде простого текста или хэша. Если haveibeenpwned скажет, что ваш пароль был затронут при утечке данных хотя бы один раз, лучше его сменить. Если нет, то все в порядке и можно приступать к проверке следующего пароля.

Если вы не хотите слепо довериться haveibeenpwned и выдать сайту свои конфиденциальные данные, то вместо пароля вы можете ввести в поисковую строку его хэш SHA-1. Сервис покажет те же результаты. В Интернете есть куча ресурсов, которым можно скормить любую информацию и получить ее хэш SHA-1 (можете не гуглить, вот они). Попробуйте этот способ, если не доверяете haveibeenpwned, — одним поводом для паранойи меньше.

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

Postman

Основное предназначение приложения — создание коллекций с запросами к вашему API. Любой разработчик или тестировщик, открыв коллекцию, сможет с лёгкостью разобраться в работе вашего сервиса. Ко всему прочему, Postman позволяет проектировать дизайн API и создавать на его основе Mock-сервер. Вашим разработчикам больше нет необходимости тратить время на создание "заглушек". Реализацию сервера и клиента можно запустить одновременно. Тестировщики могут писать тесты и производить автоматизированное тестирование прямо из Postman. А инструменты для автоматического документирования по описаниям из ваших коллекций сэкономят время на ещё одну "полезную фичу". Есть кое-что и для администраторов — авторы предусмотрели возможность создания коллекций для мониторинга сервисов.

Практика

Так как создание коллекций и запросов в конструкторе не должно вызвать затруднений, практическую часть посвятим написанию скриптов, и рассмотрим как создать цепочку запросов с тестами. Перед началом создайте новую коллекцию, назовите её “Habra”, затем создайте новое окружение под названием "Habra.Env"

Шаг 1

Создайте новый запрос, в качестве URL укажите https://postman-echo.com/get?userId=777, а метод оставьте GET. Здесь и далее для простоты и удобства мы будем использовать echo-сервер любезно предоставленный разработчиками Postman. Сохраните запрос в коллекцию "Habra" и назовите “Get user id”, он будет имитировать получение идентификатора пользователя от сервера. Перейдите на вкладку "Tests" и напишите следующий код:

С помощью этого скрипта мы проверили статус и формат ответа, а также сохранили полученный из ответа идентификатор пользователя в переменную окружения для последующего использования в других запросах. Чтобы проверить работу нашего теста, запустите запрос. В панели информации об ответе, во вкладке "Tests" вы должны увидеть зелёный лейбл “PASS”, а рядом надпись “Status is ok, response is json”.

Шаг 2

Сохраните запрос в нашу коллекцию, и назовите "Update username", он будет запрашивать импровизированную конечную точку для обновления username пользователя. Теперь при вызове запроса вместо > система автоматически будет подставлять значение из переменной окружения. Давайте проверим, что это действительно так, и напишем небольшой тест для нашего нового запроса:

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

Шаг 3

Вы могли заметить, что два тестовых скрипта имеют одинаковую проверку формата и статуса:

Пока мы не зашли слишком далеко, давайте исправим эту ситуацию и перенесем эти тесты на уровень коллекции. Откройте редактирование нашей коллекции, и перенесите проверку формата и статуса во вкладку "Tests", а из запросов их можно удалить. Теперь эти проверки будут автоматически вызываться перед скриптами "Tests" для каждого запроса в коллекции. Таким образом мы избавились от копирования данной проверки в каждый запрос.

Шаг 4

После запуска запроса echo-сервер должен вернуть нам нашу json модель в качестве ответа в поле "data", таким образом мы имитируем работу реального сервера, который мог бы прислать нам информацию о профиле Боба. Модель готова, напишем тест, проверяющий правильность схемы:

Готово, мы провалидировали схему объекта profile. Запустите запрос и убедитесь, что тесты проходят.

Шаг 5

У нас получился небольшой путь из 3-х запросов и нескольких тестов. Настало время полностью его протестировать. Но перед этим, давайте внесем небольшую модификацию в наш первый запрос: замените значение “777” в URL на плейсхолдер “>”, и через интерфейс добавьте в окружение "Habra.Env" переменную “newUserId” со значением “777”. Создайте файл users.json на своём компьютере и поместите туда следующий json массив:

Теперь запустим Runner. В качестве "Collection Folder" выберем "Habra". В качестве "Environment" поставим "Habra.Env". Количество итераций оставляем 0, а в поле "Data" выбираем наш файл users.json. По этому файлу "Collection Runner" поймет, что ему нужно совершить 4 итерации, и в каждой итерации он заменит значение переменной "newUserId" значением из массива в файле. Если указать количество итераций больше, чем количество элементов в массиве, то все последующие итерации будут происходить с последним значением из массива данных. В нашем случае после 4 итерации значение "newUserId" всегда будет равно 50000. Наш “Data” файл поможет пройти весь наш путь с разными newUserId, и убедиться, что независимо от пользователя все выполняется стабильно.

Запускаем наши тесты нажатием "Run Habra". Поздравляем вы успешно создали коллекцию и протестировали наш импровизированный путь с помощью автотестов!

image


Тестирование коллекции "Habra"

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

Отдельно хочу отметить, что в реальном проекте мы не держим все запросы в корне коллекции, а стараемся раскладывать их по папкам. Например, в папке "Requests" мы складываем все возможные запросы описывающие наш API, а тесты храним в отдельной папке "Tests". И когда нам нужно протестировать проект, в "Runner" запускаем только папочку "Tests".

Введение в Postman

image

Когда видишь описание инструментов Postman — захватывает дух, просыпается чувство всевластия над своим будущим детищем. Кажется, что и взрощенные в прошлом "монстры" наконец-то падут перед тобой!

В этой статье мы расскажем о Postman и попробуем написать свой первый скрипт.

garbage.collect()

Браузеру для исполнения JavaScript нужно немножко памяти, нужно же где-то хранить объекты, примитивы, функции, которые создаются на все действия пользователя. Поэтому браузер сначала выделяет нужный объем RAM, а когда объекты не используются — чистит её самостоятельно.

В теории звучит хорошо. На практике пользователь открывает 20 вкладок с YouTube, соцсетями, что-то читает, работает, браузер ест память, как Hummer H2 — бензин. Сборщик мусора, как этот монстр с шваброй, бегает по всей памяти и добавляет неразберихи, все тормозит и падает.


Чтобы таких ситуаций не происходило и производительность наших сайтов и приложений не страдала, фронтенд-разработчику стоит знать, как мусор влияет на приложения, как браузер его собирает и оптимизирует работу с памятью и как это все отличается от суровой реальности. Как раз об этом доклад Андрея Роенко (flapenguin) на Frontend Conf 2018.

Мы пользуемся сборщиком мусора (не дома — во фронтенд-разработке) каждый день, но особо не задумываемся, что он вообще есть, чего это нам стоит и какие у него есть возможности и ограничения.

Если бы в JavaScript действительно работала сборка мусора, большинство npm-модулей удаляли бы сами себя сразу после установки.

Но пока это не так, и мы поговорим про то, что есть — про сборку ненужных объектов.

Читайте также: