1. Wprowadzenie
W tym laboratorium kodowania przyjrzymy się wykorzystaniu funkcji Pomóż mi pisać do tworzenia testów monitorowania syntetycznego dla istniejących usług.
Co musisz zrobić...
- Wdrożysz interfejs API w Google Cloud Run, który będzie podstawą usługi, którą przetestujemy.
- Następnie napiszesz monitor syntetyczny, który jest funkcją Cloud Monitoring.
- Do napisania monitora syntetycznego użyjesz funkcji Pomóż mi pisać.
Czego się nauczysz...
- Czym jest monitorowanie syntetyczne.
- Jak używać funkcji Pomóż mi pisać w Gemini w monitorowaniu syntetycznym do tworzenia przypadków testowych, które będą weryfikować podstawową funkcjonalność usługi.
Co będzie Ci potrzebne...
- przeglądarki Chrome,
- konto Gmail,
- Projekt w chmurze z włączonymi płatnościami
- Usługa Gemini Code Assist jest włączona w Twoim projekcie w Cloud
Ten moduł jest przeznaczony dla deweloperów na wszystkich poziomach zaawansowania, w tym dla początkujących. Chociaż przykładowa aplikacja jest napisana w języku Python, nie musisz znać tego języka, aby zrozumieć, co się dzieje.
2. Konfiguracja
Teraz włączymy Gemini w Cloud w naszym projekcie Google Cloud. Wykonaj te czynności:
- Otwórz https://console.cloud.google.com i upewnij się, że masz wybrany projekt Google Cloud, w którym chcesz pracować w tym module. Kliknij ikonę Otwórz Gemini w prawym górnym rogu.

- 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 czatu, prawdopodobnie masz już włączoną usługę Gemini w Cloud w projekcie i możesz przejść bezpośrednio do następnego kroku.

- Po włączeniu możesz przetestować Gemini w Cloud, zadając mu kilka pytań. Wyświetlonych jest kilka przykładowych zapytań, ale możesz wypróbować to:
What is Synthetic Monitoring?

Gemini w Cloud odpowie na Twoje pytanie. Zapoznaj się z listą dokumentacji referencyjnej, która zawiera informacje o tym, jak pisać monitory syntetyczne w Google Cloud.
Aby zamknąć okno czatu Gemini w Cloud, w prawym górnym rogu kliknij ikonę
.
3. Wdrażanie przykładowego interfejsu Inventory API w Google Cloud Run
Zanim zaczniemy pisać testy, potrzebujemy przykładowego interfejsu API, który będziemy mogli testować. W tym celu napiszemy prosty interfejs API do zarządzania asortymentem, który wdrożymy w usłudze 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 ułatwia pracę z usługami Google Cloud. Wykonaj te czynności:
- Otwórz stronę ide.cloud.google.com. Wyświetlenie środowiska IDE może zająć trochę czasu, więc uzbrój się w cierpliwość.
- Na pasku stanu u dołu kliknij przycisk Cloud Code – zaloguj się, jak pokazano na ilustracji. Autoryzuj wtyczkę zgodnie z instrukcjami. Jeśli na pasku stanu widzisz „Cloud Code – brak projektu”, wybierz tę opcję, a następnie wybierz z listy projekt Google Cloud, z którym chcesz pracować.

- Kliknij przycisk Gemini w prawym dolnym rogu, jak pokazano, i jeszcze raz wybierz właściwy projekt w chmurze Google. Jeśli pojawi się prośba o włączenie interfejsu Cloud AI Companion API, zrób to i przejdź dalej.
- Po wybraniu projektu Google Cloud sprawdź, czy jest on widoczny w komunikacie o stanie Cloud Code na pasku stanu oraz czy po prawej stronie na pasku stanu masz włączoną funkcję Code Assist, jak pokazano poniżej:

- Na pasku stanu poniżej kliknij nazwę projektu Google Cloud.

- Pojawi się lista opcji. Na liście poniżej kliknij Nowa aplikacja.

- Wybierz aplikację Cloud Run.
- Wybierz szablon aplikacji Python (Flask): Cloud Run.
- Zapisz nową aplikację w wybranej lokalizacji.
- Pojawi się powiadomienie potwierdzające utworzenie aplikacji, a w nowym oknie otworzy się aplikacja, jak pokazano poniżej. Otworzy się plik
README.md. Możesz na razie zamknąć ten widok.

- W Eksploratorze otwórz plik
app.pyi zastąp jego zawartość treścią 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)
- Czas wdrożyć interfejs Inventory API w Cloud Run. Musimy uruchomić nową sesję terminala z IDE Cloud Shell, klikając ikonę menu w lewym górnym rogu. Kliknij ikonę menu, a następnie Terminal → Nowy terminal, jak pokazano poniżej:

- W sesji terminala wpisz to polecenie:
gcloud run deploy --source .
- Powyższe polecenie spowoduje wyświetlenie pytania o
regiondo wdrożenia. Wybierzus-central1. Pojawi się prośba o zezwolenie na dostęp dounauthenticated invocations. Zezwól na to, mówiący. - Po pomyślnym wdrożeniu usługi zostanie podany jej adres URL. Zapisz to.
4. Wypróbuj interfejs Inventory API
Możesz teraz przetestować interfejs Inventory API, uruchamiając przeglądarkę i otwierając te punkty końcowe:
SERVICE_URL/inventory
Powinny zostać zwrócone 3 produkty z asortymentu zgodnie z danymi przykładowymi w usłudze. Przykładowa odpowiedź jest podana poniżej:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
Możemy teraz pobrać konkretny produkt z asortymentu za pomocą poniższego adresu URL. Powinno to zwrócić produkt, którego wartość id wynosi 1.
SERVICE_URL/inventory/1
Odpowiedź powinna być podobna do tej:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
Na koniec możemy spróbować pobrać element asortymentu, który nie istnieje.
SERVICE_URL/inventory/200
Powinien pojawić się komunikat o błędzie, ponieważ nie ma produktu z wartością id równą 200. Odpowiedź powinna być podobna do tej:
{
"error": "Item not found"
}
Możemy teraz pisać testy monitorowania syntetycznego w Cloud Monitoring za pomocą Gemini.
5. Monitorowanie syntetyczne w Google Cloud
Jak podano w dokumentacji, monitory syntetyczne umożliwiają zdefiniowanie tego, co i w jakiej kolejności ma być testowane. Możesz na przykład przetestować stronę logowania aplikacji, proces płatności w sklepie internetowym lub wywołania interfejsu API, które aplikacja wykonuje w usługach innych firm.
Gdy tworzysz monitor syntetyczny, wdrażasz funkcję w Cloud Functions 2 generacji, która jest oparta na Cloud Run. Funkcja musi być napisana w Node.js i korzystać z platformy Synthetics SDK typu open source. Cloud Monitoring dystrybuuje tę platformę i nią zarządza.
Cloud Monitoring obsługuje te typy monitorów syntetycznych:
- Niestandardowe monitory syntetyczne lub monitory syntetyczne oparte na Mocha umożliwiają wdrażanie w pełni konfigurowalnych funkcji w Cloud Functions o jednym przeznaczeniu.
- Sprawdzanie uszkodzonych linków umożliwia określenie opcji, takich jak źródłowy identyfikator URI, liczba testowanych linków i liczba ponownych prób, przed wdrożeniem wstępnie skonfigurowanej funkcji w Cloud Functions.
Cloud Monitoring wykonuje wiele zadań podczas uruchamiania tych monitorów syntetycznych. Odpowiada za:
- Okresowe wykonywanie funkcji Cloud Function.
- Zbieranie i przechowywanie wyników każdego wykonania:
- Informacje o sukcesie i niepowodzeniu, takie jak komunikat o błędzie, typ błędu i wiersz kodu.
- Czas wykonywania
- Logi
- Dane
Skorzystamy z pomocy Gemini, a konkretnie z funkcji Help Me Write, która dostarczy nam początkowy kod testów. Będziemy mogli go użyć do testowania i tworzenia dodatkowych funkcji. Zaczynajmy.
6. Tworzenie monitora syntetycznego na potrzeby przypadków testowych interfejsu API asortymentu
Teraz przejdziemy do Cloud Console, aby napisać monitor syntetyczny.
Otwórz stronę Synthetic Monitoring w konsoli Cloud. Spowoduje to wyświetlenie strony jak poniżej:

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

Podaliśmy nazwę s1, ale możesz wybrać dowolną inną. Zwróć uwagę na przycisk POMÓŻ MI NAPISAĆ KOD na powyższym ekranie. Kliknij ten element.
Wyświetli się wyskakujące okienko, w którym musisz podać prompt opisujący przypadki testowe, które chcesz wykonać, aby sprawdzić, czy interfejs Inventory API działa prawidłowo.

W polu edycji prompta użyj prompta podobnego 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 podaliśmy 3 przypadki testowe. Wartość SERVICE_URL należy zastąpić rzeczywistą nazwą usługi Cloud Run.
Gdy klikniesz WYGENERUJ, Gemini wygeneruje kod zestawu testów i plik package.json, jak pokazano poniżej. Wygenerowany kod może się różnić od kodu widocznego poniżej. Zapoznaj się z kodem i plikami zależności w pliku package.json.

Kliknij INSERT INTO CLOUD FUNCTION (Wstaw do funkcji Cloud). Spowoduje to wyświetlenie formularza tworzenia funkcji w Cloud Functions z wypełnionymi niezbędnymi wartościami.

Kliknij ZASTOSUJ FUNKCJĘ, a potem przycisk UTWÓRZ. W tym przykładzie nie wybraliśmy żadnej konfiguracji kanału alertów, ale możesz to zrobić.
Spowoduje to rozpoczęcie procesu tworzenia funkcji w Cloud Functions w tle. Może to potrwać kilka minut, więc zachowaj cierpliwość.

Po wdrożeniu funkcji w Cloud Functions usługa Cloud Monitoring rozpocznie wywoływanie monitora syntetycznego.
Na początku zobaczysz, że nie ma żadnych wywołań, jak pokazano poniżej:

Gdy pojawią się konkretne uruchomienia, będziesz mieć wgląd w różne wykonania. Poniższy ekran pokazuje, że testy zakończyły się powodzeniem:

Jeśli klikniesz nazwę monitora syntetycznego (np. s1), zobaczysz różne wykonania, jak pokazano poniżej:

7. Gratulacje!
Gratulacje – 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 trakcie tego procesu używasz Gemini do generowania kodu pakietu testów.