GraphQL API

Практическое руководство для тестировщиков

Откройте для себя мощь GraphQL API и узнайте, как эффективно его тестировать

Что такое GraphQL API и чем он отличается от REST API?

GraphQL API

– это язык запросов и среда выполнения для API, позволяющая клиентам запрашивать только необходимые данные. Он предоставляет единую точку доступа к данным, позволяя клиентам получать именно то, что им нужно, без избыточности.

REST API

– это архитектурный стиль для веб-сервисов, который использует HTTP-методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами. REST-API часто возвращают фиксированные структуры данных, которые могут содержать ненужную информацию.

Основные понятия GraphQL

запросы, мутации, типы данных

Запросы

- это отправляемые клиентом инструкции для получения данных от GraphQL API. Они определяют, какие данные нужно получить, используя язык GraphQL.

Мутации

- это операции, которые изменяют данные в GraphQL API. Они используются для создания, обновления или удаления данных.

Типы данных

Типы данных определяют структуру данных в GraphQL API. Они могут быть скалярными (например, строка, число) или сложными (объекты, списки).

Установка и настройка GraphQL-клиента

Выбор инструмента

Существует множество инструментов для работы с GraphQL API, таких как GraphiQL, Insomnia, Postman.

Установка

Установим выбранный инструмент. Инструкции по установке будет ниже.

Настройка

Настроим инструмент, указав URL-адрес GraphQL-сервера.

Тестирование

Напишем тестовый запрос, чтобы убедиться, что инструмент настроен правильно и может успешно взаимодействовать с GraphQL API.

Работа с фрагментами и переменными в запросах

  • Фрагменты

    Фрагменты - это части GraphQL-запросов, которые можно повторно использовать в других запросах.

  • Переменные

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

  • Преимущества

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

Выполнение мутаций и управление состоянием

  • Определение мутации

    Мутации - это операции, которые изменяют данные в GraphQL API. Их можно использовать для создания, обновления или удаления данных.

  • Передача аргументов

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

  • Обработка результата

    После успешного выполнения мутации GraphQL API возвращает информацию об изменении данных.

Тестирование GraphQL API: инструменты и подходы

Интеграционное тестирование

Проверка взаимодействия между GraphQL API и другими компонентами системы, такими как базы данных или внешние сервисы.

Функциональное тестирование

Проверка корректности работы GraphQL API, его способности выполнять запросы и возвращать ожидаемые результаты.

Нагрузочное тестирование

Проверка способности GraphQL API обрабатывать большие объемы запросов и выдерживать пиковые нагрузки.

Documentation- List of Posts

context

Scope under which the request is made; determines fields present in response.

Default: view

One of: view, embed, edit

page

Current page of the collection.

Default: 1

per_page

Maximum number of items to be returned in result set.

Default: 10

search

Limit results to those matching a string.

after

Limit response to posts published after a given ISO8601 compliant date.

modified_after

Limit response to posts modified after a given ISO8601 compliant date.

author

Limit result set to posts assigned to specific authors.

author_exclude

Ensure result set excludes posts assigned to specific authors.

before

Limit response to posts published before a given ISO8601 compliant date.

modified_before

Limit response to posts modified before a given ISO8601 compliant date.

exclude

Ensure result set excludes specific IDs.

include

Limit result set to specific IDs.

offset

Offset the result set by a specific number of items.

order

Order sort attribute ascending or descending.

Default: desc

One of: asc, desc

orderby

Sort collection by post attribute.

Default: date

One of: author, date, id, include, modified, parent, relevance, slug, include_slugs, title

search_columns

Array of column names to be searched.

slug

Limit result set to posts with one or more specific slugs.

status

Limit result set to posts assigned one or more statuses.

Default: publish

tax_relation

Limit result set based on relationship between multiple taxonomies.

One of: AND, OR

categories

Limit result set to items with specific terms assigned in the categories taxonomy.

categories_exclude

Limit result set to items except those with specific terms assigned in the categories taxonomy.

tags

Limit result set to items with specific terms assigned in the tags taxonomy.

tags_exclude

Limit result set to items except those with specific terms assigned in the tags taxonomy.

sticky

Limit result set to items that are sticky.

Работа с Apollo Client и GraphQL API

Это руководство поможет вам настроить проект для работы с WordPress GraphQL API используя Apollo Client. Вы научитесь отправлять запросы к API и обрабатывать полученные данные.

Предварительные требования

  • Базовые знания JavaScript и Node.js
  • Установленный Node.js и npm на вашем компьютере
  • Установленный Visual Studio Code (VS Code)

Шаг 1: Настройка проекта

Создайте новую директорию graphql-project   и перейдите в неё

В VS Code откройте новый терминал (Terminal -> New Terminal) и выполните:
npm init -y

Появится новый файл package.json в корне проекта и вставьте следующее содержимое:

{
“name”: “graphql-project”,
“version”: “1.0.0”,
“type”: “module”,
“main”: “index.js”,
“scripts”: {
“start”: “node index.js”
},
“dependencies”: {
“@apollo/client”: “^3.11.5”,
“cross-fetch”: “^3.1.8”,
“graphql”: “^16.9.0”
}
}

В терминале VS Code установите зависимости, выполнив команду:

npm install

Шаг 2: Создание Apollo Client

  • В VS Code создайте новый файл index.js в корне проекта.
  • Вставьте следующий код в index.js:

import pkg from ‘@apollo/client’;
const { ApolloClient, InMemoryCache, gql } = pkg;
import fetch from ‘cross-fetch’;

// Создаем экземпляр Apollo Client
const client = new ApolloClient({
uri: ‘http://dev.emeli.in.ua/graphql’, // URL нашего GraphQL API
cache: new InMemoryCache(),
fetch: fetch
});

// Определяем GraphQL запрос
const GET_POSTS = gql`
query GetPosts {
posts {
nodes {
id
title
date
}
}
}
`;

// Функция для выполнения запроса
async function fetchPosts() {
try {
const { data } = await client.query({
query: GET_POSTS
});
console.log(‘Posts:’, data.posts.nodes);
} catch (error) {
console.error(‘Error fetching posts:’, error);
}
}

// Вызываем функцию
fetchPosts();

Шаг 3: Запуск проекта

В терминале VS Code выполните команду:

npm start

Результаты запроса будут выведены в терминал VS Code.

 

Шаг 4: Дальнейшие шаги

  • Изучите структуру данных, возвращаемых API.
  • Модифицируйте запросы для получения дополнительных данных.
  • Попробуйте создать новые запросы для других типов данных.

Тестирование GraphQL с помощью Postman

Установка Postman

Если у тебя ещё нет Postman, скачай и установи его с официального сайта: https://www.postman.com/downloads/

Подготовка запроса в Postman

Создай новый запрос:

  • Открой Postman и нажми на кнопку “New” -> “HTTP Request”.
  • В выпадающем меню метода выбери POST, так как GraphQL запросы обычно отправляются через POST.

Укажи URL для API:

    • В поле URL введи: http://dev.emeli.in.ua/graphql

Перейди на вкладку GraphQL:

  • Находясь в запросе, выбери вкладку GraphQL рядом с опцией Body.

Вставь запрос:

  • В поле запроса просто напиши свой GraphQL-запрос:

query GetPosts {
posts {
nodes {
id
title
date
}
}
}

 

 

Этот запрос делает следующее:

  • Тип запроса: query GetPosts

    • Это GraphQL запрос, который запрашивает данные о постах.
  • Структура ответа:

    • Он запрашивает у API список постов.
    • В каждом посте (в узле nodes) возвращаются три поля:
      • id: уникальный идентификатор поста.
      • title: заголовок поста.
      • date: дата публикации поста.

Отправка запроса

  • Нажми кнопку Send.
  • Результаты запроса будут показаны в разделе “Response”.

Дополнительные шаги

  • Просмотр ответа: в разделе “Response” ты увидишь данные, которые API вернул в ответ на запрос. Это должны быть посты с полями id, title и date.
  • Обработка ошибок: если сервер вернет ошибку, она также будет показана в разделе “Response”. Убедись, что URL правильный, и GraphQL API доступен.

Тестирования и получения данных

Получение категорий постов

Этот запрос возвращает список категорий для постов, если такие есть.

query GetCategories { categories { nodes { id name slug } } }
 

Пояснение: Этот запрос вернёт категории с их ID, именем и slug (уникальная строка для URL).

Получение всех комментариев к постам

query GetComments { comments { nodes { id content author { node { name } }

Получение последних опубликованных постов

query GetRecentPosts {

posts(first: 5, where: {orderby: {field: DATE, order: DESC}}) {
nodes {
id
title
date
}
}
}
Пояснение: Этот запрос возвращает последние 5 постов, отсортированных по дате публикации в порядке убывания.

Самостоятельная работа

Задание 1: Получение постов по автору

Цель: Написать запрос для получения постов определённого автора.

Инструкции:

  1. Используя Postman, создайте новый запрос к API.
  2. Установите метод на POST и введите URL: http://dev.emeli.in.ua/graphql.
  3. На вкладке GraphQL напишите запрос, который вернёт все посты, написанные автором с ID 1.
  4. Нажмите кнопку Send и проверьте, что запрос выполнен успешно.

Задание 2: Исключение постов определённого автора

Цель: Написать запрос, который исключает посты, написанные конкретным автором.

Инструкции:

  1. Создайте новый запрос в Postman.
  2. Установите метод на POST и введите URL: http://dev.emeli.in.ua/graphql.
  3. На вкладке GraphQL напишите запрос, который вернёт все посты, исключая посты автора с ID 2.
  4. Нажмите кнопку Send и проверьте, что в результате нет постов от указанного автора.

Задание 3: Фильтрация по дате публикации

Цель: Написать запрос для получения постов, опубликованных после определённой даты.

Инструкции:

  1. Создайте новый запрос в Postman.
  2. Установите метод на POST и введите URL: http://dev.emeli.in.ua/graphql.
  3. На вкладке GraphQL напишите запрос, который возвращает посты, опубликованные после 1 января 2023 года.
  4. Нажмите кнопку Send и проверьте, что все возвращённые посты были опубликованы после указанной даты.

Задание 4: Ограничение результатов и пагинация

Цель: Написать запрос с ограничением количества возвращаемых постов.

Инструкции:

  1. Создайте новый запрос в Postman.
  2. Установите метод на POST и введите URL: http://dev.emeli.in.ua/graphql.
  3. На вкладке GraphQL напишите запрос, который возвращает не более 5 постов на второй странице результатов.
  4. Нажмите кнопку Send и проверьте, что возвращается не более 5 постов.

Задание 5: Поиск по заголовкам постов

Цель: Написать запрос для поиска постов по заголовкам.

Инструкции:

  1. Создайте новый запрос в Postman.
  2. Установите метод на POST и введите URL: http://dev.emeli.in.ua/graphql.
  3. На вкладке GraphQL напишите запрос, который возвращает посты, содержащие определённый текст в заголовке. Замените текст на ваш выбор.
  4. Нажмите кнопку Send и проверьте, что возвращаются посты, содержащие указанный текст в заголовке.

Хотите узнать больше о GraphQL?

Пройдите наш месячный практикум!

В рамках практикума вы получите:

  • Полное понимание GraphQL и его возможностей.
  • Практические навыки написания запросов, мутаций и работы с переменными.
  • Опыт работы с реальными API и интеграции GraphQL в проекты.
  • Сертификат

Формат занятий:     
       Онлайн: Все занятия проходят вживую через Skype.

Рекомендованные курсы

Basic

REST API TESTING

Преимущества

  • Инструменты для тестирования REST API Популярные инструменты, такие как Postman, Swagger
  • Автоматизация тестирования Рассмотрение автоматизации тестов REST API с помощью снипетов в Postman
  • Обучение на реальных проектах Выполнение практических задач и создание автоматизированных тестов для реальных REST API.
  • Индивидуальный подход
  • Сертификат и признание
Срок обучения -> 1 месяц
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее
Basic

Тестирование баз данных

Преимущества

  • Основы баз данных Понимание терминов, таких как таблица, строка, столбец, ключ, индекс, SQL и многие другие.
  • Язык запросов SQL Основы языка SQL для выполнения запросов, вставки, обновления и удаления данных.
  • Типы баз данных Реляционные, NoSQL и другие типы базы данных и их особенности.
  • Обучение на реальных проектах Выполнение практических задач и проектов для приобретения практических навыков в тестировании баз данных.
  • Индивидуальный подход
  • Сертификат и признание
Срок обучения -> 1 месяц
Вечернее обучение -> 1 раз в неделю
Формат обучения -> вживую в Skype
Подробнее
SELENIUM WEBDRIVER

JAVA QA BASIC AUTOMATION

Преимущества

  • Освоение языка Java Java – это один из самых популярных языков программирования в индустрии программного обеспечения. Изучение Java позволит вам работать с множеством инструментов и технологий в области разработки и автоматизированного тестирования.
  • Умение создавать автоматизированные тесты Навыки автоматизации тестирования чрезвычайно важны для повышения эффективности и точности тестирования программного обеспечения.
  • Освоение jUnit, TestNG, Cucumber jUnit – это один из самых популярных фреймворков для юнит-тестирования в Java. TestNG предоставляет больше возможностей для настройки тестовых сценариев и группирования тестов. Cucumber позволяет писать тесты в виде читаемых сценариев, которые может понимать даже человек, не занятый тестированием.
  • Обучение на реальных проектах
  • Индивидуальный подход
  • Сертификат и признание
Срок обучения -> 2 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее

JAVA QA ADVANCED AUTOMATION

Преимущества

  • Углубленные знания Java Курс позволяет расширить и углубить ваши знания в языке программирования Java, что является фундаментом для многих автоматизированных тестов и разработки программного обеспечения.
  • Расширение автом. навыков Вы изучите продвинутые техники автоматизированного тестирования, которые помогут вам создавать более сложные тестовые сценарии и обеспечить высокое качество тестов.
  • Углубление в архитектуре ПО Курс может предоставить знания по архитектурным паттернам и структурам программного обеспечения, что может быть полезным для создания более расширяемых и поддерживаемых автоматизированных тестовых наборов.
  • Индивидуальный подход
  • Повышение карьерных возможностей Знание продвинутых техник автоматизации тестирования может повысить вашу конкурентоспособность на рынке труда и привести к улучшению вашей заработной платы.
  • Сертификат и признание
Срок обучения: от 1 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее
CYPRESS (NODE.JS)

JAVASCRIPT QA BASIC AUTOMATION

Преимущества

  • Использование JavaScript и Cypress JavaScript – один из самых популярных языков программирования веб-разработчиков, а Cypress – мощный фреймворк для автоматизированного тестирования веб-приложений.
  • Сосредоточенность на веб-автоматизации Курс специализируется на автоматизации тестирования веб-приложений, что является важным навыком для качества инженера QA.
  • Практические задачи и проекты Важным преимуществом может быть возможность практического применения знаний посредством выполнения задач и разработки автоматизированных тестовых сценариев для реальных веб-приложений.
  • Индивидуальный подход
  • Работа с GIT
  • Сертификат и признание
Срок обучения -> 2 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее

Поддержка и вопросы

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.

Через чат-бот

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

Курсы

Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков