Автоматизация тестов для REST API при помощи Postman

Регистрация на курс

Описание курса

На курсе мы будем писать автотесты для API-методов в программе Postman. Мы пройдем полный цикл — от первого автотеста до настройки CI (Continuous Integration). От Math.random до циклов и условий. От простого include до регулярных выражений. Это курс вам подойдет, если:

  1. Вы не умеете автоматизировать — Postman дает отличный и простой старт.
  2. Вы тестируете API черным ящиком — например, это «чужое» API, а вы работаете в интеграторе

После прохождения курса вы сможете настроить систему автотестов для ваших API-методов, даже если ранее на проекте никакой автоматизации не было вообще!

Главная фишка курса — МНОГО практики! На курсе 55 (!) обязательных домашних заданий. Обучение идет 15 недель (3,5 месяца) — 13 занятий и 2 недели на «хвосты», в середине курса (чтобы не копились) и в конце.

На курсе не рассказывается о том, как тестировать rest-методы. Если вы никогда раньше не тестировали API, вам лучше сначала пройти курс «Тестирование REST API». Здесь же мы будем заниматься именно автоматизацией, написанием кода.

Входной порог! Я предполагаю, что вы:

  1. Знаете английский на уровне «чтение со словарем / гуглтранслейтом». Мы будем тестировать в том числе JIRA API по стандартной документации, которая на английском. Вы должны прочитать описание метода и понять его.
  2. Знаете любой язык программирования на уровне школьной программы или «читал книгу о нем 3 года назад» — не падаете в обморок от слов «переменные», «массивы», знаете какие бывают типы данных и операторы сравнения. Тренер расскажет про эти понятия в привязке к примерам, но вам будет проще, если что-то почитаете заранее. Посмотрите этот кусок лекции, если он непонятный, то на курс рановато.
  3. Умеете тестировать: знаете про классы эквивалентности и граничные значения. Подробнее см в блоке «Вопросы и ответы»

 

Программа курса

1. Первый тест

  1. Пишем первый автотест — на status code. Разбор автотеста, что есть что.
  2. Экскурс в JS: 
    1. Синтаксис функций
    2. Анонимные функции
    3. Как вызывать функцию и функцию объекта
  3. Объект pm
  4. Название автотеста
  5. Консоль постмана
  6. Старый VS новый постман

 

2. Библиотеки Chai.js и Node.js

  1. Chai.js
    1. Как писать “я ожидаю” в тесте?
    2. Какие возможности открывает pm.expect
    3. 37 способов написать тесты на status code
  2. Node.js
    1. Assert в автотестах
    2. Еще 11 способов написать тесты на status code

 

3. Объекты и массивы: достаем данные 

  1. Разбираем тест на JSON из snippet
  2. Переменные var, let, const
  3. Как обратиться к массиву
  4. Как обратиться к объекту
  5. Как достать значение из простого JSON
  6. Как достать значение из дерева JSON
  7. Как достать значение из XML
  8. Object.keys
  9. Почему консоль не помогает достать заголовки из pm.response

 

4. Базовые тесты на ответ сервера 

  1. Тесты на text
  2. Тесты на JSON из документации Postman
  3. Разница между equal, eql и deep.equal
  4. Тесты на include — include, deep.include, nested.include
  5. Тесты на свойства объекта — property, keys

 

5. Базовые тесты на ответ сервера (продолжение)

  1. Изучаем типы элементов — .a, .instanceof
  2. Прототипы и наследование в JS
  3. Тесты на массивы в Postman-е (Chai.js) 
  4. Тесты на строку
  5. Тесты на число
  6. Тесты на JSON через Node.js
  7. Тесты на XML в ответе
  8. Тесты на заголовки
  9. Тесты на Cookie

 

6. Переменные и окружения

  1. Как запустить несколько запросов подряд 
  2. Как запустить один запрос несколько раз
  3. Как передать рандомные значения в Postman 
  4. Как считать данные из файла 
  5. Как написать тест на данные из файла
  6. Переменные в Postman
    1.  Локальные переменные, local
    2.  Переменные из файла, data
    3.  Переменные окружения, environment
    4.  Переменные коллекции, collection
    5.  Глобальные переменные, global
  7. Переменная или строка? Учимся различать
  8. Переиспользование переменных 

 

7. Условия и циклы

  1. Условие if else
  2. Цикл while
  3. Цикл for
  4. Цикл forEach 
  5. SendRequest в тестах
  6. Логические операторы &&, ||

 

7.1. Перерыв!

Неделяотдыха — чтобы закрыть все хвосты. К этому времени уже открыто 36 домашних заданий и небольшая передышка студентам бывает очень нужна :)

 

8. Math.floor и другие полезные функции JS для тестов

  1. Правила описания команд
  2. Объявление переменной в JS
  3. Методы и свойства примитивных типов:
    1. Строки
    2. Числа
    3. Массивы
    4. Даты
  4. Математические функции
  5. Пример «сложного» теста

 

9. CI: Newman + Jenkins

  1. Что такое CI
  2. Устанавливаем Newman
  3. Newman — запуск тестов
  4. Отчеты в Newman
  5. Jenkins + Newman, настраиваем связь
  6. Триггеры в jenkins  — запуск задачи по расписанию
  7. Запуск задачи в jenkins через curl
  8. Pipeline, что это такое? Пишем первый скрипт
  9. Jenkins + Git
  10. Разделение ролей в Jenkins 

Обратите внимание — на курсе мы не будем устанавливать Jenkins. Будем использовать готовую преднастроенную систему. Почему — см «вопросы и ответы» ниже.

 

10. Регулярные выражения (regexp)

  1. Что такое регулярные выражения
  2. Как и где они применяются
  3. Где можно их пощупать
  4. Поиск в регулярных выражениях
    1. Поиск текста
    2. Поиск любого символа
    3. Поиск по набору символов
    4. Перечисление вариантов
    5. Метасимволы
    6. Квантификаторы
    7. Позиция внутри строки
  5. Замена с помощью регулярных выражениях
  6. Regexp в автотестах Postman-а

 

11. Валидация ответа по JSON Schema

  1. Что такое JSON Schema
  2. Типы данных в JSON Schema
    1. Строка
    2. Число
    3. Объект
    4. Массив
    5. Boolean
    6. Null
    7. Not
  3. Аннотации в JSON Schema
  4. if else в JSON Schema
  5. Валидация JSON Schema в Postman-e

 

12. Тесты на HTML

  1. Что такое HTML
  2. Как написать автотест на HTML
  3. Basic jQuery Selectors
  4. jQuery: get Content and Attributes
  5. Attribute selectors в jQuery
  6. Документация Cheerio

 

13. Организация тестов. SQL через Postman

  1. Организация и рефакторинг тестов в Postman
  2. Postman VS REST-assured 
  3. Postman vs Framework в коде — когда что использовать
  4. SQL-запросы через Postman — зачем и как?
  5. Подводим итоги курса

 

Формат курса

Онлайн-обучение — в систему дистанционного обучения один раз в неделю выкладывается видео-лекция и домашние задания. Лекцию можно посмотреть в удобное для вас время.

В общем скайп-чате можно задать вопрос тренеру.

 

О тренере

Тренер — опытный практик.

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

Примеры моих видео-лекций:

 

Вопросы и ответы

 

Какое время занятий?

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

 

Как я получу фидбэк при online-формате?

Через телеграм, комментарии к домашним заданиям в системе дистанционного обучения.

 

Пойму ли я материал? 

Курс совмещает все виды обучения: видео-лекции + статьи в доп материалах + практическая работа (услышал, увидел, пощупал). Так что уверена, сможете! А если что-то не получается, можно задать вопрос в скайп-чате

 

Нужно ли что-то знать заранее?

Есть обязательный базовый порог:

  • знание английского со словарем — чтобы понять документацию JIRA, она на англ
  • базовые знания языка программирования (любого) — что такое переменные, массивы, какие бывают типы данных и операторы сравнения. Тренер расскажет про эти понятия в привязке к примерам, но вам будет проще, если что-то почитаете заранее. Посмотрите этот кусок лекции, если он непонятный, то на курс рановато.
  • умение тестировать — у нас не школа для начинающих, я не буду учить «как тестировать», но задачи «протестируй вот это в автотестах» будут.

 

А зачем мне уметь тестировать? Дайте мне только задания «повторить за тренером, пока пишешь автотест»

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

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

 

В Postman теперь есть Postbot — курс ещё актуален?

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

По сути своей своей этот бот — как гугл, там можно найти примеры и что-то готовое, но всё равно нужно уметь составлять тесты самостоятельно.

Мой знакомый ко мне начинающих автоматизаторов отправляет, говорит, что после моего курса проще воспринимаются курсы по «чистой» автоматизации. Так как я разжевываю базовые вещи языка, которые хоть и отличаются от языка к языку, но и общее что-то имеется.

 

Научат ли меня устанавливать Jenkins?

Нет. На курсе мы будем использовать уже готовый настроенный инструмент.

Установка системы CI — задача администратора, а не тестировщика. Конечно, тестировщик может и сам это сделать, если интересно. Но самостоятельно, в рамки курса разбирательства с «почему именно на этой OS вот такая ошибка» не входит.

Я покажу, как настроить CI, если админ поставил вам «голую» CI-систему Jenkins. Мы настроим запуск задачи с нуля, и именно для этого будем устанавливать Newman и разбираться с ним. Newman — инструмент для запуска ваших автотестов в командной строке. Освоите его, и сможете запускать свои автотесты везде — хоть в Jenkins, хоть в TeamCity, хоть вообще по крону из командной строки.

 

Можно ли работать на Mac или Linux?

Ограничений по OS нет

 

Какой API используется для практики?

Мы используем:

  1. Users
  2. Подсказки дадаты
  3. JIRA облачную
  4. Плюс еще одно приложение я сделала специально для курса

Вы можете также параллельно начинать писать автотесты на свой проект, и задавать вопросы в чате (или в СДО, если не хотите их в общий чат выносить)

Как записаться

Регистрация на курс и дата ближайшего запуска

Способы оплаты