Написание синтетических тестов мониторинга для ваших сервисов с использованием Gemini

1. Введение

В этой лаборатории кода мы рассмотрим использование функции «Помоги мне написать» для создания синтетических тестов мониторинга для существующих сервисов.

Что ты сделаешь...

  • Вы развернете API для Google Cloud Run, который станет основой для нашего сервиса, который мы будем тестировать.
  • Затем вы напишете синтетический монитор, который является функцией облачного мониторинга.
  • Вы будете использовать функцию «Помоги мне написать» для написания Synthetic Monitor.

Чему вы научитесь...

  • Что такое синтетический мониторинг.
  • Как использовать функцию Gemini «Помоги мне написать» в Synthetic Monitoring для создания тестовых примеров, которые проверят основные функции службы.

Что вам понадобится...

  • Веб-браузер Chrome
  • Учетная запись Gmail
  • Облачный проект с включенной оплатой
  • Gemini Code Assist включен для вашего облачного проекта

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

2. Настройка

Теперь мы включим Gemini for Cloud в нашем проекте Google Cloud. Следуйте инструкциям ниже:

  1. Посетите https://console.cloud.google.com и убедитесь, что вы выбрали проект Google Cloud, с которым планируете работать для этой лабораторной работы. Нажмите на значок Open Gemini, который вы видите в правом верхнем углу.

28f084ec1e159938.png

  1. Окно чата Gemini for Cloud откроется в правой части консоли. Нажмите кнопку «Включить», как показано ниже. Если вы не видите кнопку «Включить» и вместо этого видите интерфейс чата, вполне вероятно, что вы уже включили Gemini for Cloud для проекта и можете сразу перейти к следующему шагу.

e8df9adc4ea43a37.png

  1. Как только он будет включен, вы сможете протестировать Gemini for Cloud, задав ему один или два запроса. Показаны несколько примеров запросов, но вы можете попробовать следующий запрос What is Synthetic Monitoring?

9859ea86a8310cb.png

Gemini for Cloud ответит на ваш вопрос. Ознакомьтесь со списком предоставленной справочной документации о том, как писать синтетические мониторы в Google Cloud.

Вы можете нажать на f68286b2b2ea5c0a.png в правом верхнем углу, чтобы закрыть окно чата Gemini for Cloud.

3. Разверните образец Inventory API в Google Cloud Run.

Прежде чем мы начнем писать тесты, нам понадобится образец API, который мы сможем протестировать. Для этого мы напишем простой API инвентаризации, который развернем в Google Cloud Run .

Мы будем использовать Cloud Shell IDE, полностью управляемую среду разработки на основе Code OSS . Среда поставляется с расширением Cloud Code IDE, которое повышает эффективность работы с облачными сервисами Google. Следуйте инструкциям ниже:

  1. Посетите ide.cloud.google.com . Для появления IDE может потребоваться некоторое время, поэтому наберитесь терпения.
  2. Нажмите кнопку Cloud Code — Войти в нижней строке состояния, как показано на рисунке. Авторизуйте плагин согласно инструкциям. Если в строке состояния вы видите «Cloud Code — нет проекта» , выберите его, а затем выберите конкретный проект Google Cloud из списка проектов, с которыми вы планируете работать.

6f5ce865fc7a3ef5.png

  1. Нажмите кнопку «Близнецы» в правом нижнем углу, как показано, и в последний раз выберите правильный проект Google Cloud. Если вас попросят включить Cloud AI Companion API , сделайте это и продолжайте.
  2. Выбрав проект Google Cloud, убедитесь, что вы видите это в сообщении о состоянии Cloud Code в строке состояния и что у вас также включен Code Assist справа в строке состояния, как показано ниже:

709e6c8248ac7d88.png

  1. Нажмите на название проекта Google Cloud в строке состояния ниже.

f151759c156c124e.png

  1. Появится список опций. Нажмите «Новое приложение» из списка ниже.

91ea9836f38b7f74.png

  1. Выберите приложение Cloud Run .
  2. Выберите шаблон приложения Python (Flask): Cloud Run .
  3. Сохраните новое приложение в предпочитаемом вами месте.
  4. Уведомление подтверждает, что ваше приложение было создано, и открывается новое окно с загруженным приложением, как показано ниже. Откроется файл README.md . Вы можете закрыть это представление на данный момент.

ed250f23b0e4fee8.png

  1. В проводнике откройте файл app.py и замените его содержимым, показанным ниже:
from flask import Flask, jsonify, request

app = Flask(__name__)

inventory = [
    {
        'id': 1,
        'name': 'Item 1',
        'quantity': 10
    },
    {
        'id': 2,
        'name': 'Item 2',
        'quantity': 20
    },
    {
        'id': 3,
        'name': 'Item 3',
        'quantity': 30
    }
]

@app.route('/inventory', methods=['GET'])
def get_inventory():
    return jsonify(inventory)

@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
    for item in inventory:
        if item['id'] == id:
            return jsonify(item)
    return jsonify({'error': 'Item not found'}), 404

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)
  1. Пришло время развернуть API инвентаризации в Cloud Run. Нам нужно будет запустить новый сеанс терминала из Cloud Shell IDE через значок меню в левом верхнем углу. Нажмите на значок меню, а затем Терминал → Новый терминал , как показано ниже:

289173c68f1addb5.png

  1. В сеансе терминала введите следующую команду:
gcloud run deploy --source .
  1. Приведенная выше команда спросит о region для развертывания, выберите us-central1 . Он попросит разрешить unauthenticated invocations , разрешите это, сказав y .
  2. После успешного развертывания службы она предоставит URL-адрес службы. Обратите внимание на это.

4. Проверьте API инвентаризации.

Теперь вы можете протестировать Inventory API, запустив браузер и выполнив следующие действия:

SERVICE_URL/inventory

Это должно вернуть вам 3 предмета инвентаря согласно образцу данных в сервисе. Пример ответа приведен ниже:

[
  {
    "id": 1,
    "name": "Item 1",
    "quantity": 10
  },
  {
    "id": 2,
    "name": "Item 2",
    "quantity": 20
  },
  {
    "id": 3,
    "name": "Item 3",
    "quantity": 30
  }
]

Теперь мы можем получить конкретный элемент инвентаря по URL-адресу ниже. Это должно вернуть вам предмет инвентаря со значением id 1.

SERVICE_URL/inventory/1

Ответ должен быть примерно таким:

{
  "id": 1,
  "name": "Item 1",
  "quantity": 10
}

Наконец, мы можем попытаться получить несуществующий предмет инвентаря.

SERVICE_URL/inventory/200

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

{
  "error": "Item not found"
}

Теперь мы готовы написать наши тесты синтетического мониторинга в Cloud Monitoring с помощью Gemini.

5. Синтетический мониторинг в Google Cloud

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

Когда вы создаете синтетический монитор, вы развертываете облачную функцию 2-го поколения , основанную на Cloud Run . Ваша функция должна быть написана на Node.js и опираться на инфраструктуру Synthetics SDK с открытым исходным кодом. Cloud Monitoring распространяет и управляет этой платформой.

Cloud Monitoring поддерживает следующие типы синтетических мониторов:

Облачный мониторинг выполняет большую тяжелую работу при выполнении этих синтетических мониторов. Он отвечает за:

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

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

6. Написание нашего синтетического монитора для тестовых случаев API инвентаризации

Теперь мы перейдем к облачной консоли, чтобы написать наш синтетический монитор.

Посетите страницу синтетического мониторинга в Cloud Console. Откроется страница, как показано ниже:

96bfce88f55442f3.png

Нажмите ссылку СОЗДАТЬ СИНТЕТИЧЕСКИЙ МОНИТОР на странице выше. Откроется форма конфигурации, как показано ниже:

af4dde3e9e0a5a16.png

Мы указали имя s1 , но вы можете выбрать любое другое имя. Обратите внимание на кнопку HELP ME CODE на экране выше. Нажмите на это.

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

a13e78db15b37dd3.png

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

Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200. 
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found". 

Обратите внимание, что мы предоставили 3 тестовых примера, и вам следует заменить значение SERVICE_URL фактическим именем Cloud Run Service для вашего сервиса.

После того, как вы нажмете «СОЗДАТЬ» , Gemini сгенерирует код Test Suite, а также файл package.json , как показано ниже. Сгенерированный для вас код может отличаться от того, который вы видите ниже. Взгляните на код и файлы зависимостей в файле package.json .

d19340c357f620bd.png

Нажмите «ВСТАВИТЬ В ОБЛАЧНУЮ ФУНКЦИЮ» . Откроется форма создания облачной функции с необходимыми значениями.

d70e50624a09149a.png

Нажмите ПРИМЕНИТЬ ФУНКЦИЮ , а затем кнопку СОЗДАТЬ . В этом примере мы не выбирали конфигурацию канала оповещения, но вы можете выбрать ее.

Это запустит процесс создания функции Google Cloud в фоновом режиме. Это может занять несколько минут, так что наберитесь терпения.

1b07702ea5ac5bdb.png

После успешного развертывания облачной функции Cloud Monitoring приступит к выполнению задачи по вызову синтетического монитора.

Вначале вы увидите, что вызовов нет, как показано ниже:

dac473269a289a3b.png

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

dc2d7dd98277fbcc.png

Если вы щелкнете по имени синтетического монитора (например, s1), он отобразит различные исполнения, как показано ниже:

8369a02b413d12cc.png

7. Поздравляем!

Поздравляем! Вы успешно развернули образец API в Google Cloud Run и написали тесты синтетического мониторинга для проверки функциональности службы. В ходе этого процесса вы использовали Gemini для создания кода для Test Suite.

8. Справочная документация