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:
- 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.
- 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.
- 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?
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ę 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:
- Otwórz stronę ide.cloud.google.com. IDE może pojawić się dopiero po pewnym czasie, dlatego prosimy o cierpliwość.
- 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ć.
- 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.
- 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:
- Kliknij nazwę projektu Google Cloud na pasku stanu poniżej.
- Pojawi się lista opcji. Na liście poniżej kliknij New Application (Nowa aplikacja).
- Wybierz aplikację Cloud Run.
- Wybierz szablon aplikacji Python (Flask): Cloud Run.
- Zapisz nową aplikację w wybranej przez siebie lokalizacji.
- 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.
- 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)
- 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:
- W sesji terminala wpisz to polecenie:
gcloud run deploy --source .
- Powyższe polecenie spowoduje wyświetlenie prośby o
region
do wdrożenia. Wybierzus-central1
. Pojawi się prośba o zezwolenie naunauthenticated invocations
. Aby to zrobić, powiedzy
. - 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:
- Monitory syntetyczne lub niestandardowe monitory syntetyczne umożliwiają wdrażanie w pełni konfigurowalnej funkcji w Cloud Functions przeznaczonej do jednego celu.
- Przed wdrożeniem wstępnie skonfigurowanej funkcji w Cloud Functions narzędzia do sprawdzania uszkodzonych linków pozwalają określić takie opcje jak identyfikator URI źródła, liczba testowanych linków i liczba ponownych prób.
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:
Na powyższej stronie kliknij link UTWÓRZ MONITOR SYNTETYCZNY. Wyświetli się formularz konfiguracji przedstawiony poniżej:
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.
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
.
Kliknij WSTAW FUNKCJĘ W CHMURZE. Spowoduje to wyświetlenie formularza tworzenia funkcji w Cloud Functions z odpowiednimi wartościami.
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.
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:
Gdy pojawią się konkretne uruchomienia, zobaczysz różne wykonania. Poniższy ekran przedstawia, że testy zostały zaliczone:
Po kliknięciu nazwy monitora syntetycznego (np. s1) wyświetlą się różne wykonania, jak pokazano poniżej:
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.