Pisanie testów monitorowania syntetycznego na potrzeby usług z użyciem Gemini

1. Wprowadzenie

W tym ćwiczeniu w programowaniu przyjrzymy się wykorzystaniu funkcji Pomóż mi napisać do tworzenia testów monitorowania syntetycznego dla istniejących usług.

Co możesz zrobić...

  • Wdrożysz w Google Cloud Run interfejs API, który będzie stanowić podstawę naszej usługi, którą będziemy testować.
  • Napiszesz monitor syntetyczny, który jest funkcją Cloud Monitoring.
  • Do napisania monitora syntetycznego użyjesz funkcji Pomóż mi w pisaniu.

Czego się nauczysz...

  • Czym jest monitorowanie syntetyczne.
  • Jak używać funkcji Pomóż mi napisać Gemini w monitorowaniu syntetycznym do tworzenia przypadków testowych, które weryfikują działanie funkcji usługi podstawowej.

Co będzie Ci potrzebne...

  • Przeglądarka Chrome
  • konto Gmail,
  • Projekt Cloud z włączonymi płatnościami
  • Usługa Gemini Code Assist została włączona w Twoim projekcie Cloud

Ten moduł jest przeznaczony dla programistów na wszystkich poziomach zaawansowania, w tym początkujących. Chociaż przykładowa aplikacja jest w języku Python, nie musisz znać się na programowaniu, by zrozumieć, co się dzieje.

2. Konfiguracja

Teraz włączymy Gemini dla Cloud w naszym projekcie Google Cloud. Wykonaj te czynności:

  1. Otwórz stronę https://console.cloud.google.com i upewnij się, że wybrany jest projekt Google Cloud, z którym zamierzasz pracować w tym module. Kliknij ikonę Otwórz Gemini widoczną w prawym górnym rogu.

28f084ec1e159938.png

  1. Po prawej stronie konsoli otworzy się okno czatu Gemini w Cloud. Kliknij przycisk Włącz, jak pokazano poniżej. Jeśli nie widzisz przycisku Włącz, a zamiast niego widzisz interfejs Google Chat, prawdopodobnie usługa Gemini for Cloud została już włączona w projekcie i możesz przejść bezpośrednio do następnego kroku.

e8df9adc4ea43a37.png

  1. Gdy zostanie włączona, możesz przetestować Gemini dla Cloud, zadając mu jedno lub dwa zapytania. Wyświetlamy kilka przykładowych zapytań, ale możesz wypróbować to: What is Synthetic Monitoring?

9859Ea86a8310cb.png

Gemini w Cloud odpowie na Twoje pytanie. Zapoznaj się z udostępnioną listą dokumentacji referencyjnej dotyczącej sposobu tworzenia monitorów syntetycznych w Google Cloud.

Możesz kliknąć ikonę f68286b2b2ea5c0a.png w prawym górnym rogu, aby zamknąć okno czatu Gemini w Cloud.

3. Wdrażanie przykładowego interfejsu Inventory API w Google Cloud Run

Zanim przejdziemy do opisania testów, będziemy potrzebować przykładowego interfejsu API, z którym będziemy mogli je przetestować. Na potrzeby tego napiszemy prosty interfejs Inventory API, który wdrożymy w Google Cloud Run.

Będziemy korzystać z Cloud Shell IDE – w pełni zarządzanego środowiska programistycznego opartego na Code OSS. Środowisko zawiera rozszerzenie Cloud Code IDE, które zwiększa wydajność pracy z usługami Google Cloud. Wykonaj te czynności:

  1. Otwórz stronę ide.cloud.google.com. IDE może pojawić się dopiero po pewnym czasie, dlatego prosimy o cierpliwość.
  2. Kliknij przycisk Cloud Code – Zaloguj się na dolnym pasku stanu, jak pokazano na ilustracji. Autoryzuj wtyczkę zgodnie z instrukcjami. Jeśli na pasku stanu widzisz komunikat „Cloud Code – no project” (Cloud Code – brak projektu), zaznacz tę pozycję, a następnie wybierz konkretny projekt Google Cloud z listy projektów, z którymi zamierzasz pracować.

6f5ce865fc7a3ef5.png

  1. W prawym dolnym rogu kliknij przycisk Gemini, jak pokazano na ekranie, i po raz ostatni wybierz właściwy projekt Google Cloud. Jeśli pojawi się prośba o włączenie interfejsu Cloud AI Companion API, zrób to i przejdź dalej.
  2. Po wybraniu projektu Google Cloud sprawdź, czy widzisz komunikat o stanie Cloud Code na pasku stanu oraz czy masz włączoną funkcję Code Assist po prawej stronie, na pasku stanu, jak pokazano poniżej:

709e6c8248ac7d88.png

  1. Kliknij nazwę projektu Google Cloud na pasku stanu poniżej.

f151759c156c124e.png

  1. Pojawi się lista opcji. Na liście poniżej kliknij New Application (Nowa aplikacja).

91ea9836f38b7f74.png

  1. Wybierz aplikację Cloud Run.
  2. Wybierz szablon aplikacji Python (Flask): Cloud Run.
  3. Zapisz nową aplikację w wybranej przez siebie lokalizacji.
  4. Zostanie wyświetlone powiadomienie z potwierdzeniem utworzenia aplikacji oraz otwarcie nowego okna z aplikacją załadowaną w sposób pokazany poniżej. Otwarto plik README.md. Możesz na razie zamknąć ten widok.

ed250f23b0e4fee8.png

  1. W Eksploratorze otwórz plik app.py i zastąp go zawartością widoczną poniżej:
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. Czas wdrożyć interfejs Inventory API w Cloud Run. Konieczne będzie uruchomienie nowej sesji terminala w Cloud Shell IDE za pomocą ikony menu w lewym górnym rogu. Kliknij ikonę menu, a następnie Terminal → Nowy terminal, jak pokazano poniżej:

289173c68f1addb5.png

  1. W sesji terminala wpisz to polecenie:
gcloud run deploy --source .
  1. Powyższe polecenie spowoduje wyświetlenie prośby o region do wdrożenia. Wybierz us-central1. Pojawi się prośba o zezwolenie na unauthenticated invocations. Aby to zrobić, powiedz y.
  2. Po pomyślnym wdrożeniu usługa udostępni adres URL usługi. Uwaga:

4. Testowanie interfejsu Inventory API

Możesz teraz przetestować Inventory API, uruchamiając przeglądarkę i kontaktując się z tymi punktami końcowymi:

SERVICE_URL/inventory

Powinno to spowodować zwrócenie 3 pozycji asortymentu zgodnie z przykładowymi danymi w usłudze. Przykładowa odpowiedź:

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

Teraz możemy pobrać konkretną pozycję asortymentu za pomocą poniższego adresu URL. Powinno to zwrócić element asortymentu, który ma wartość id równą 1.

SERVICE_URL/inventory/1

Odpowiedź powinna być podobna do tej:

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

Możemy też spróbować pobrać element asortymentu, który nie istnieje.

SERVICE_URL/inventory/200

Powinien wyświetlić się komunikat o błędzie, ponieważ nie ma elementu asortymentu o wartości id o wartości 200. Odpowiedź powinna być podobna do tej:

{
  "error": "Item not found"
}

Teraz możemy pisać testy monitorowania syntetycznego w Cloud Monitoring z pomocą Gemini.

5. Monitorowanie syntetyczne w Google Cloud

Zgodnie z informacjami w dokumentacji monitory syntetyczne pozwalają określić, co zostanie przetestowane, oraz sekwencję testów. Możesz na przykład przetestować stronę logowania w aplikacji, proces płatności w sklepie e-commerce lub wywołania interfejsu API, które Twoja aplikacja wysyła do usług innych firm.

Podczas tworzenia monitora syntetycznego wdrażasz funkcję w Cloud Functions drugiej generacji, która jest stworzona w Cloud Run. Twoja funkcja musi być napisana w środowisku Node.js i korzystać z platformy pakietu SDK Synthetics typu open source. Cloud Monitoring zarządza tą platformą i nią zarządza.

Cloud Monitoring obsługuje następujące typy monitorów syntetycznych:

Cloud Monitoring wykonuje wiele zadań podczas wykonywania tych monitorów syntetycznych. Odpowiada za:

  • Okresowe wykonywanie Twojej funkcji w Cloud Functions.
  • Zbieranie i przechowywanie wyników każdego wykonania:
  • informacje o powodzeniu i niepowodzeniu, takie jak komunikat o błędzie, typ błędu i wiersz kodu;
  • Czas wykonywania
  • Logi
  • Dane

Użyjemy Gemini, a zwłaszcza funkcji Help Me Write, która dostarczy nam początkowy kod do testów. Dzięki temu będziemy mogli go przetestować, a także opracować dodatkowe funkcje. Zaczynajmy.

6. Pisanie monitora syntetycznego dla przypadków testowych interfejsu Inventory API

Przechodzimy teraz do konsoli Cloud, aby napisać nasz monitor syntetyczny.

Otwórz stronę Monitorowanie syntetyczne w konsoli Cloud. Spowoduje to otwarcie strony, jak pokazano poniżej:

96bfce88f55442f3.png

Na powyższej stronie kliknij link UTWÓRZ MONITOR SYNTETYCZNY. Wyświetli się formularz konfiguracji przedstawiony poniżej:

af4dde3e9e0a5a16.png

Podaliśmy nazwę s1, ale możesz wybrać inną. Zwróć uwagę na przycisk KOD POMOCY na ekranie powyżej. Kliknij tę opcję.

Wyświetli się wyskakujące okienko, w którym musisz wpisać prompt opisujący przypadki testowe, które chcesz przeprowadzić, aby upewnić się, że interfejs Inventory API działa prawidłowo.

a13e78db15b37dd3.png

W polu edycji promptu wpisz prompt podobny do tego poniżej:

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". 

Zwróć uwagę, że udostępniliśmy 3 przypadki testowe. Zastąp wartość SERVICE_URL rzeczywistą nazwą usługi Cloud Run.

Gdy klikniesz WYGENERUJ, Gemini wygeneruje kod pakietu testowego i plik package.json, jak pokazano poniżej. Wygenerowany kod może się różnić od tego, który widzisz poniżej. Przyjrzyj się kodowi i plikom zależności w pliku package.json.

d19340c357f620bd.png

Kliknij WSTAW FUNKCJĘ W CHMURZE. Spowoduje to wyświetlenie formularza tworzenia funkcji w Cloud Functions z odpowiednimi wartościami.

d70e50624a09149a.png

Kliknij ZASTOSUJ FUNKCJĘ, a następnie przycisk UTWÓRZ. W tym przykładzie nie wybraliśmy żadnej konfiguracji kanału alertu, ale możesz ją wybrać.

Spowoduje to rozpoczęcie procesu tworzenia funkcji w Google Cloud Functions w tle. Zachowaj cierpliwość, gdyż może to potrwać kilka minut.

1b07702ea5ac5bdb.png

Po wdrożeniu funkcji w Cloud Functions usługa Cloud Monitoring rozpocznie zadanie wywoływania monitora syntetycznego.

Na początku nie ma żadnych wywołań, jak pokazano poniżej:

dac473269a289a3b.png

Gdy pojawią się konkretne uruchomienia, zobaczysz różne wykonania. Poniższy ekran przedstawia, że testy zostały zaliczone:

dc2d7dd98277fbcc.png

Po kliknięciu nazwy monitora syntetycznego (np. s1) wyświetlą się różne wykonania, jak pokazano poniżej:

8369a02b413d12cc.png

7. Gratulacje!

Gratulujemy! Udało Ci się wdrożyć przykładowy interfejs API w Google Cloud Run i napisać testy monitorowania syntetycznego, aby sprawdzić działanie usługi. W wygenerowaniu kodu na potrzeby pakietu testów posłużył Ci Gemini.

8. Dokumenty referencyjne