Введение в курс 0:01 Приветствие от Валентина, разработчика программного обеспечения. Объяснение цели курса: изучение Postman для тестирования API. Упоминание о практических заданиях и автоматизации тестирования.
Основы API 1:15 Определение API как интерфейса к серверу. Аналогия с розеткой: API имеет спецификации, которые нужно соблюдать. Рекомендация курса Крейга Денниса для новичков.
Что такое Postman 2:15 Postman как инструмент для взаимодействия с веб-API. Преимущества использования Postman для отправки и получения данных.
Установка Postman 3:10 Модель ценообразования Postman: freemium. Два способа запуска Postman: через браузер или как отдельное приложение. Инструкции по установке в примечаниях к курсу.
Начало работы с API 4:49 Использование API для заказа книг. Важность ознакомления с документацией API. Пример конечной точки состояния API.
Первый запрос в Postman 5:46 Копирование адреса API и создание рабочей области. Отправка запроса на конечную точку статуса. Получение ответа от API.
Основы HTTP 7:10 Объяснение протокола HTTPS и его преимуществ. Структура HTTP-сообщения: запрос и ответ.
Параметры запроса в Postman 8:09 Настройка параметров запроса: URL, метод, заголовки, текст. Пример заголовка content-type и его значение.
Структура ответа 10:35 Основная часть ответа как наиболее важная часть. Содержание основной части ответа.
Сохранение запроса в Postman 11:14 Нажимаем кнопку «Сохранить» и присваиваем запросу название, например, «статус API». Создаём коллекцию для нескольких запросов, связанных с одним API. Пример создания коллекции: «simple book api».
Работа с коллекциями 12:20 Закрываем вкладку и находим коллекцию в списке. При нажатии на запрос внутри коллекции автоматически открывается вкладка для его запуска.
Использование переменных в запросах 12:42 Избегаем указания адресов и конфигурации в запросах, используя переменные. Устанавливаем базовый URL как переменную, например, «базовый URL». Выбираем область действия переменной: «область сбора данных».
Изменение переменных 14:15 Наводим курсор на название коллекции, выбираем «Редактировать» и вкладку «Переменные». Видим начальное и текущее значение переменной. Начальное значение доступно другим пользователям, текущее — личное.
Отправка запроса на конечную точку books 15:59 Выбираем адрес API, открываем новую вкладку и вставляем адрес. Сохраняем запрос в коллекции «API simple books». Отправляем запрос GET на конечную точку books.
Анализ ответа 17:12 Получаем статус 200, указывающий на успешную отправку запроса. Данные возвращаются в формате JSON, который легко анализируется.
Параметры запроса 18:18 Параметры запроса — дополнительные данные, которые можно предоставить вместе с запросом. Пример добавления параметра «type» со значением «преступление». Ошибка 400 указывает на неверный запрос.
Работа с ошибками 19:45 Ошибки в ответе API могут быть техническими и сложными для понимания. Важно ознакомиться с ошибками и понять их смысл. Замена параметра на «художественная литература» исправляет ошибку.
Управление параметрами запроса в Postman 22:21 Добавляем и удаляем параметры запроса через флажок и крестик. Необязательные параметры запроса можно удалить, если они больше не нужны.
Начало выполнения задания 22:54 Изучите документацию по API. Используйте параметр запроса `limit` и добавьте его в запрос. Попробуйте различные значения параметра.
Работа с параметром `limit` 23:18 Следуйте документации для правильного использования параметра. `limit` должен быть числом от 1 до 20. Пример использования: `limit=2` возвращает только две книги.
Ограничения API 24:18 API не позволяет получить более 20 книг за один запрос. Важно правильно писать имя параметра, например, `limit` с заглавной буквы «Л» и строчными буквами.
Получение одной книги 25:25 Упрощённый вид списка книг не содержит много информации. Используйте конечную точку для получения одной книги. Путь к конечной точке отличается от списка книг.
Параметр пути `book_id` 26:19 `book_id` — это параметр пути, который постоянно меняется. Каждая книга имеет уникальный идентификатор. Изменение `book_id` позволяет получить подробную информацию о книге.
Детализация информации о книге 27:09 Конечная точка предоставляет подробную информацию о книге: идентификатор, название, автор, код книги, цена, количество в каталоге, акции и т. д. Если идентификатор несуществующий, API вернёт ошибку 404 «не найдено».
Различие между параметрами пути и запроса 28:30 Параметры пути не содержат вопросительного знака. Ключ параметра пути не отправляется в запросе. Можно использовать как параметры пути, так и параметры запроса.
Завершение 30:11 Определите книгу, которую хотите заказать. Следующий шаг зависит от ваших потребностей.
Отправка заказа через Postman 30:20 Используем конечную точку «заказы» и метод HTTP-запроса POST. Создаём запрос на отправку с помощью Postman, дублируя существующий запрос. Вводим новый путь и изменяем имя запроса.
Ошибка 401 Unauthorized 31:19 При попытке отправить запрос GET получаем ошибку 401 Unauthorized. Для создания данных требуется аутентификация. Некоторые конечные точки API могут быть общедоступными, другие требуют аутентификации.
Регистрация клиента API 32:40 Для отправки заказа необходимо зарегистрировать клиента API. Регистрация позволяет получить токен доступа, который используется для подтверждения подлинности запросов. Пример запроса для регистрации: POST в конечную точку «api-клиенты» с телом в формате JSON.
Отправка запроса на регистрацию 34:11 Выбираем метод HTTP-запроса POST и тип тела raw, затем выбираем JSON. Вставляем пример тела запроса из документации API. Убеждаемся, что JSON-файл действителен, проверяя наличие двойных кавычек.
Получение токена доступа 36:16 После отправки запроса получаем код статуса 201 Created. Получаем токен доступа, который сохраняем в переменной коллекции Postman. Проверяем, что токен не используется другим клиентом, чтобы избежать конфликта.
Добавление заголовка авторизации 38:05 Добавляем заголовок авторизации в запрос POST. Используем помощник по авторизации в Postman для автоматического добавления заголовка. Пример заголовка: «Authorization: Bearer <токен доступа>».
Повторная отправка запроса 40:16 После добавления заголовка авторизации отправляем запрос повторно. Получаем ошибку 400 Bad Request из-за недействительного идентификатора книги. Исправляем идентификатор книги и повторяем попытку отправки заказа.
Отправка заказа через API 41:24 Для заказа книги через API необходимо указать её идентификатор. Использование raw-запроса без JSON может привести к непониманию со стороны API. Важно изучить документацию API для правильного представления данных.
Работа с JSON 42:01 Для отправки заказа нужно использовать JSON-запрос с определёнными свойствами. JSON передаёт данные в формате «ключ-значение». Пример JSON-запроса: идентификатор книги — «единица», имя клиента — «Джон».
Правила синтаксиса JSON 42:58 Запятая разделяет пары «ключ-значение». Строки в JSON должны быть в двойных кавычках. Исключения: числа и логические значения могут быть без кавычек.
Ошибки при работе с JSON 43:56 Неверный JSON может привести к ошибке «невозможно обработать». Postman предупреждает о недопустимых синтаксических ошибках. Необходимо внимательно проверять JSON-запросы.
Задание на создание запроса 45:15 Создать запрос на публикацию и отправить его. Проверить, что происходит при попытке заказать книгу, которой нет на складе.
Проверка наличия книги 46:45 Использовать фильтры для поиска книги с нулевым запасом. При попытке заказать книгу, которой нет на складе, получить ошибку 404.
Использование случайных переменных в Postman 47:35 Postman позволяет отправлять случайные данные с запросами. Пример использования случайной переменной для имени клиента.
Консоль Postman 49:05 Консоль Postman полезна для отладки запросов. Просмотреть текст запроса и заголовки в консоли.
Ограничения Postman 51:03 Postman не предназначен для взаимодействия с пользователем или тестирования производительности. Для тестирования безопасности существуют другие инструменты.
Получение всех заказов 52:20 Использовать конечную точку «получить все заказы» для получения списка заказов. Дублировать запрос в Postman с заголовком авторизации. Получить список всех заказов с идентификаторами, названиями книг, именами клиентов и количеством.
Просмотр отдельного заказа 54:02 Возьмите один идентификатор заказа и найдите конечную точку для его просмотра. Используйте Postman для отправки запроса на получение заказа. Убедитесь, что в адресе запроса нет пробелов, чтобы избежать сбоя.
Получение заказа 55:26 Если идентификатор заказа не существует, получите ответ «404 не найдено». Вставьте реальный идентификатор заказа для получения информации о нём.
Обновление заказа 56:00 Для обновления заказа используйте метод HTTP-запроса «patch». Потребуется аутентификация для обновления заказа. Пример обновления: изменение имени клиента.
Удаление заказа 59:07 Для удаления заказа используйте метод HTTP-запроса «delete». Укажите идентификатор заказа в запросе. Проверьте удаление заказа, получив статус 204.
Автоматизация тестирования API 1:01:53 Автоматизация тестирования API позволяет избежать ручной работы и ускорить процесс. Postman может выполнять тесты автоматически, вмешиваясь только при ошибках. К концу курса вы сможете тестировать API одной командой или щелчком мыши.
Написание тестов API 1:02:56 Проверьте статус API, получите список книг, закажите книгу, получите индивидуальный заказ, обновите и удалите его. Postman не знает, был ли запрос успешным, пока вы не сообщите ему об этом. Напишите тесты в разделе «здесь проводятся тесты» с помощью JavaScript.
Фрагменты кода в Postman 1:04:54 Фрагменты кода позволяют быстро выполнить несколько действий с помощью JavaScript без написания большого количества кода. Это удобно для начинающих, особенно при работе с JavaScript.
Проверка кода состояния 200 1:05:05 Простой тест: проверка, что код состояния равен 200. Использование фрагментов кода для проверки статуса ответа. Возможность ввода фрагментов вручную, если они изменились.
Неудачные тесты 1:06:05 Важность написания тестов, которые могут быть неудачными. Пример неудачного теста: ввод несущего адреса. Ошибка утверждения при получении кода состояния 404 вместо ожидаемого 200.
Анализ текста ответа JSON 1:06:58 JSON как простой способ отправки данных из API. Преобразование JSON в объект JavaScript с помощью функции `json`. Доступ к свойствам объекта JavaScript через консоль Postman.
Доступ к свойствам объекта 1:09:44 Два способа доступа к свойству «статус» в JavaScript. Проверка наличия свойства «статус» в объекте. Использование квадратных скобок для работы со специальными символами в именах свойств.
Написание тестов в Postman 1:11:43 Начало теста с функции `pm.test`. Параметры функции: название теста и функция обратного вызова. Пример утверждения: проверка равенства значений.
Утверждение статуса 1:13:42 Проверка, содержит ли объект свойство «нормально». Тестирование с разными значениями для свойства «статус». Ошибка при получении кода состояния 404.
Тестирование коллекции запросов 1:14:58 Написание тестов для всех запросов внутри коллекции. Адаптация тестов для разных статусов ответов. Проверка результатов тестов для различных операций: создание, получение, исправление, удаление заказов.
Заключение 1:18:42 Подведение итогов: каждый запрос в коллекции возвращает код состояния. Важность тестов для определения успешности запросов.
Проблема копирования идентификатора заказа 1:19:24 Копирование идентификатора заказа из одного запроса в другой раздражает. В Почтальоне есть переменные коллекции и глобальные переменные, которые помогают решить эту проблему.
Использование сред в Почтальоне 1:20:18 Среды полезны для переключения между локальной, тестовой и производственной средами разработки. Можно легко заменить базовый URL-адрес в зависимости от среды.
Определение глобальной переменной 1:21:16 Для хранения идентификатора заказа используется глобальная переменная. Текущее значение идентификатора сохраняется в переменной.
Использование переменной в запросах 1:21:52 При создании нового запроса можно использовать сохранённый идентификатор заказа. Важно не добавлять пробелы или новые строки при вставке данных в переменную.
Тестирование и обновление данных 1:22:35 Переменная используется в запросах для получения и удаления заказов. Можно сопоставлять значение переменной с ответом сервера.
Результаты тестирования 1:23:32 После удаления заказа его больше нет в списке. Тесты Почтальона в фоновом режиме помогают оценить результаты. Сокращение ручного труда при тестировании.
Проблемы с жёстко закодированными данными 1:24:17 Жёстко закодированные данные делают тесты уязвимыми к изменениям. Пример с идентификатором книги показывает, как жёстко закодированные данные могут привести к ошибкам. Необходимо сделать данные более динамичными.
Использование фильтра для поиска книг 1:25:14 Применение фильтра для поиска научно-популярных книг. Изменение параметра фильтра для получения только научно-популярных книг.
Анализ ответа и получение идентификатора 1:26:21 Определение переменной response и синтаксический анализ ответа. Преобразование JSON в объект JavaScript. Получение идентификатора книги из массива объектов.
Проблемы с жёстко закодированными данными и их решение 1:28:09 Жёстко закодированные данные могут вызвать проблемы при изменении данных. Использование функции filter для фильтрации доступных книг. Извлечение первого доступного элемента из массива.
Установка глобальной переменной 1:31:33 Использование фрагмента кода «установить глобальную переменную» в Postman. Установка идентификатора книги в переменную. Проверка значения переменной после отправки запроса.
Тестирование ответа 1:33:04 Написание теста для проверки наличия книги. Ожидание, что книга станет объектом и будет доступна. Обработка ошибок при отсутствии книги.
Дополнительное тестирование жанра книги 1:36:54 Проверка, что книга относится к жанру научной литературы. Изменение свойства «доступно» на «тип» для тестирования. Успешное прохождение теста при правильном типе книги. Неудачное прохождение теста при неправильном типе книги.
Введение в задание 1:38:32 Задание включает два пункта: использование переменной идентификатора книги и проверка текущего запаса. Переменная идентификатора книги сохранена как глобальная переменная. Необходимо использовать идентификатор в запросах на получение книги и книгу заказов.
Структура теста 1:39:29 Копирование структуры теста для проверки наличия книги. Ожидание, что текущий запас больше нуля, проверяется с помощью математического ожидания.
Замена значений 1:40:17 Замена жёстко закодированных значений на глобальную переменную идентификатор книги. Проверка работы книги заказов без ошибок.
Анализ ответа 1:41:00 Определение переменной response для анализа ответа JSON. Проблема с синтаксисом при получении свойств с дефисом решается использованием квадратных скобок.
Проверка свойства 1:42:25 Проверка наличия свойства «запас» в ответе. Если книги нет на складе, тест не пройдёт. С правильным идентификатором книги тест проходит успешно.
Подготовка к автоматизации тестирования 1:42:55 Написаны тесты API, которые гарантируют ожидаемую реакцию API. Добавлены переменные, избавляющие от необходимости копировать данные между запросами. Следующий шаг — использование встроенного инструмента Postman для автоматизации управления коллекцией запросов.
Запуск коллекции запросов 1:43:49 Закрытие ненужных запросов для освобождения места. Использование кнопки-бегунка для запуска коллекции. Настройка порядка выполнения запросов.
Управление порядком запросов 1:44:47 Изменение порядка запросов в коллекции. Возможность отключения ненужных запросов. Сохранение ответов для анализа ошибок.
Анализ результатов тестирования 1:45:47 Некоторые запросы успешны, некоторые — нет. Пример сбоя при регистрации клиента API. Анализ причин сбоев через сохранение ответов.
Исправление ручного кодирования 1:46:20 Обнаружение проблемы с ручным кодированием идентификатора заказа. Обновление идентификатора заказа из ответа API. Проверка корректности обновления идентификатора.
Автоматизация выполнения запросов 1:49:08 Влияние на порядок выполнения запросов с помощью кода. Указание следующего запроса в коде Postman. Пример пропуска запроса статуса API и перехода к списку книг.
Завершение цикла запросов 1:51:40 Остановка цикла запросов с помощью значения null. Важность осторожности при использовании условий для остановки циклов. Риск бесконечного выполнения запросов без условий остановки.
Тестирование условий 1:52:56 Демонстрация бесконечного выполнения запросов без условий остановки. Рекомендация тестировать условия перед автоматизацией. Подчёркивание необходимости осторожности при использовании условий.
Автоматизация с помощью Postman 1:53:36 Использование средства сбора данных для автоматизации. Функция мониторов в Postman для автоматического запуска коллекций. Создание монитора для проверки работы API.
Настройка периодичности 1:54:34 Определение периодичности запуска монитора, например, каждый день или каждый будний день. Выбор коллекции для мониторинга.
Запуск монитора 1:55:04 Монитор запускается автоматически и отправляет уведомления по электронной почте при ошибках. Тестирование монитора вручную для проверки работы.
Анализ ошибок 1:55:26 Ошибка 401 несанкционированный доступ из-за отсутствия начального значения токена. Решение проблемы путём добавления текущего значения токена к исходному.
Проблемы с автоматизацией 1:57:12 Сложности отладки из-за ограниченного доступа к информации в Postman. Распространённые причины ошибок: отсутствующие переменные Postman или неправильная настройка.
Инструмент Newman 1:57:53 Newman как инструмент командной строки для автоматизации сбора данных. Возможность запуска коллекций Postman на профессиональных серверах. Необходимость установки Node.js для использования Newman.
Экспорт и запуск коллекции 1:59:14 Экспорт коллекции в виде файла JSON. Получение общедоступной ссылки на коллекцию через контекстное меню. Обновление ссылки вручную при изменениях в коллекции.
Запуск коллекции через Newman 2:00:32 Запуск коллекции с указанием пути к файлу JSON. Альтернативный способ запуска через ссылку на коллекцию.
Создание отчётов 2:02:01 Использование HTML Extra Report для генерации отчётов. Установка и настройка репортера. Преимущества HTML-отчёта: удобство чтения и отладка ошибок.
Анализ отчётов 2:04:04 Обзор запросов и ответов в отчёте. Проверка заголовков запросов и переменных Postman. Конфигурации Newman и HTML Reporter для дополнительной настройки.
Введение в автоматизацию с Newman 2:05:32 Объяснение важности Newman для автоматизации процессов. Описание реалистичного проекта API с конвейером сборки. Процесс компиляции кода, выполнения тестов и развёртывания API на сервере.
Тестирование API с помощью Newman 2:06:25 Использование коллекции Postman в Newman для тестирования API. Уведомления о проблемах через тесты Postman и конвейер. Настройка сред и репортеров в Newman.
Интеграция с GitLab CI 2:07:21 Пример интеграции Newman с GitLab CI. Возможность интеграции с Jenkins, TeamCity, CircleCI и другими серверами непрерывной интеграции.
Заключение и рекомендации 2:08:28 Подведение итогов курса и призыв к дальнейшему изучению. Рекомендации по базовому курсу программирования на JavaScript. Темы для изучения: тесты с управляемыми данными, проверка схемы, аутентификация OAuth 2.0.
Завершение 2:09:23 Ссылки на продвинутые учебные пособия в примечаниях к курсу. Прощание и приглашение к повторному курсу.