การเขียนการทดสอบการตรวจสอบสังเคราะห์สำหรับบริการของคุณโดยใช้ Gemini

1. บทนำ

ใน Codelab นี้ เราจะมาดูการใช้ฟีเจอร์ช่วยฉันเขียนเพื่อเขียนการทดสอบการตรวจสอบสังเคราะห์สำหรับบริการที่มีอยู่ของคุณ

สิ่งที่จะต้องทำ...

  • คุณจะทำให้ API ใช้งานได้ใน Google Cloud Run ซึ่งจะทำหน้าที่เป็นพื้นฐานสำหรับบริการของเราที่เราจะทดสอบ
  • จากนั้นคุณจะเขียนการตรวจสอบสังเคราะห์ ซึ่งเป็นฟีเจอร์ของ Cloud Monitoring
  • คุณจะใช้ฟีเจอร์ช่วยฉันเขียนเพื่อเขียนหน้าจอสังเคราะห์

สิ่งที่คุณจะได้เรียนรู้...

  • การตรวจสอบสังเคราะห์คืออะไร
  • วิธีใช้ฟีเจอร์ช่วยฉันเขียนของ Gemini ในการตรวจสอบสังเคราะห์เพื่อเขียนเคสทดสอบที่จะตรวจสอบฟังก์ชันการทำงานของบริการหลัก

สิ่งที่คุณต้องมี...

  • เว็บเบราว์เซอร์ Chrome
  • บัญชี Gmail
  • โปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่เปิดใช้การเรียกเก็บเงิน
  • เปิดใช้ Gemini Code Assist สำหรับโปรเจ็กต์ระบบคลาวด์ของคุณแล้ว

ห้องทดลองนี้มุ่งเป้าไปที่นักพัฒนาซอฟต์แวร์ทุกระดับ รวมถึงผู้เริ่มต้น แม้ว่าแอปพลิเคชันตัวอย่างจะเป็นภาษา Python แต่คุณไม่จําเป็นต้องทำความคุ้นเคยกับการเขียนโปรแกรม Python เพื่อทําความเข้าใจถึงสิ่งที่เกิดขึ้น

2. ตั้งค่า

ตอนนี้เราจะเปิดใช้ Gemini สำหรับ Cloud ในโปรเจ็กต์ Google Cloud โปรดทำตามขั้นตอนที่ระบุไว้ด้านล่าง

  1. ไปที่ https://console.cloud.google.com และตรวจสอบว่าได้เลือกโปรเจ็กต์ Google Cloud ที่คุณวางแผนจะทํางานด้วยสําหรับ Lab นี้ คลิกไอคอน "เปิด Gemini" ที่คุณเห็นที่ด้านขวาบน

28f084ec1e159938.png

  1. หน้าต่างแชท Gemini สำหรับ Cloud จะเปิดขึ้นทางด้านขวาของคอนโซล คลิกปุ่ม "เปิดใช้" ตามที่แสดงด้านล่าง หากไม่เห็นปุ่มเปิดใช้ แต่เห็นอินเทอร์เฟซ Chat แทน แสดงว่าคุณอาจเปิดใช้ Gemini สำหรับ Cloud สำหรับโปรเจ็กต์แล้ว และไปที่ขั้นตอนถัดไปได้โดยตรง

e8df9adc4ea43a37.png

  1. เมื่อเปิดใช้แล้ว คุณจะทดสอบ Gemini สำหรับ Cloud ได้โดยถามจากคำค้นหาสัก 1-2 ข้อความ ตัวอย่างการค้นหาแสดงอยู่เล็กน้อย แต่คุณลองใช้คําค้นหาต่อไปนี้ได้ What is Synthetic Monitoring?

9859ea86a8310cb.png

Gemini สำหรับ Cloud จะตอบกลับด้วยคำตอบของคำถามของคุณ ดูรายการเอกสารอ้างอิงที่มีให้เกี่ยวกับวิธีเขียนการตรวจสอบสังเคราะห์ใน Google Cloud

คุณสามารถคลิกไอคอน f68286b2b2ea5c0a.png ที่มุมขวาบนเพื่อปิดหน้าต่างแชท Gemini สำหรับ Cloud

3. ทำให้ Inventory API ตัวอย่างใช้งานได้ใน Google Cloud Run

ก่อนเขียนข้อมูลการทดสอบ เราจำเป็นต้องมี API ตัวอย่างไว้นำไปทดสอบ โดยเราจะเขียน API พื้นที่โฆษณาอย่างง่ายที่เราจะทำให้ใช้งานได้ใน Google Cloud Run

เราจะใช้ Cloud Shell IDE ซึ่งเป็นสภาพแวดล้อมการพัฒนาซอฟต์แวร์ที่อิงตาม Code OSS ที่มีการจัดการครบวงจร สภาพแวดล้อมดังกล่าวมาพร้อมกับส่วนขยาย Cloud Code IDE ที่ช่วยให้การทำงานกับบริการ Google Cloud มีประสิทธิภาพ โปรดทำตามขั้นตอนที่ระบุไว้ด้านล่าง

  1. ไปที่ ide.cloud.google.com อาจใช้เวลาสักครู่กว่าที่ IDE จะปรากฏ ดังนั้นโปรดอดทนรอ
  2. คลิกปุ่ม Cloud Code - Sign inในแถบสถานะด้านล่างตามที่แสดง ให้สิทธิ์ปลั๊กอินตามคำแนะนำ หากเห็น "Cloud Code - ไม่มีโปรเจ็กต์" ในแถบสถานะ ให้เลือกโปรเจ็กต์ดังกล่าวแล้วเลือกโปรเจ็กต์ Google Cloud ที่ต้องการจากรายการโปรเจ็กต์ที่คุณวางแผนจะทำงานด้วย

6f5ce865fc7a3ef5.png

  1. คลิกปุ่ม Gemini ที่มุมขวาล่างตามที่แสดง แล้วเลือกโปรเจ็กต์ 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. จาก Explorer ให้ไปที่ไฟล์ 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. ได้เวลาทำให้ Inventory API ใช้งานได้ใน Cloud Run แล้ว เราจะต้องเปิดเซสชันเทอร์มินัลใหม่จาก Cloud Shell IDE ผ่านไอคอนเมนูที่ด้านซ้ายบน คลิกไอคอนเมนู แล้วคลิกเทอร์มินัล → เทอร์มินัลใหม่ดังที่แสดงด้านล่าง

289173c68f1addb5.png

  1. ใช้คำสั่งต่อไปนี้ในเซสชันเทอร์มินัล
gcloud run deploy --source .
  1. คำสั่งด้านบนจะถามเกี่ยวกับ region ที่จะทำให้ใช้งานได้ โปรดเลือก us-central1 การดำเนินการนี้จะขอให้อนุญาต unauthenticated invocations โปรดอนุญาตโดยพูดว่า y
  2. เมื่อมีการทำให้บริการใช้งานได้เรียบร้อยแล้ว บริการจะระบุ URL ของบริการ ข้อควรจำ

4. ทดสอบ Inventory 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 ที่แอปพลิเคชันดำเนินการกับบริการของบุคคลที่สาม

เมื่อสร้างจอภาพสังเคราะห์ คุณจะต้องทำให้ Cloud Function รุ่นที่ 2 ซึ่งสร้างขึ้นใน Cloud Run ใช้งานได้ ฟังก์ชันของคุณต้องเขียนใน Node.js และใช้เฟรมเวิร์ก SDK สังเคราะห์แบบโอเพนซอร์ส Cloud Monitoring จะกระจายและจัดการเฟรมเวิร์กนี้

Cloud Monitoring สนับสนุนการตรวจสอบสังเคราะห์ประเภทต่อไปนี้

Cloud Monitoring มีการรับภาระงานหนักมากขณะเรียกใช้การตรวจสอบสังเคราะห์เหล่านี้ ซึ่งมีหน้าที่รับผิดชอบในเรื่องต่อไปนี้

  • การดำเนินการเป็นระยะของ Cloud Function
  • การรวบรวมและการจัดเก็บผลลัพธ์ของการดำเนินการแต่ละครั้ง:
  • ข้อมูลความสำเร็จและความล้มเหลว เช่น ข้อความแสดงข้อผิดพลาด ประเภทข้อผิดพลาด และบรรทัดของโค้ด
  • เวลาดำเนินการ
  • บันทึก
  • เมตริก

เราจะอาศัยความช่วยเหลือจาก Gemini โดยเฉพาะฟีเจอร์ Help Me Write ที่จะให้โค้ดเริ่มต้นสำหรับการทดสอบแก่เรา เพื่อให้เรานำไปใช้ในการทดสอบและสร้างฟีเจอร์เพิ่มเติมได้ มาเริ่มกันเลย

6. การเขียนการตรวจสอบสังเคราะห์สำหรับกรอบการทดสอบ API ของพื้นที่โฆษณา

ตอนนี้เราจะไปที่ Cloud Console เพื่อเขียนการตรวจสอบสังเคราะห์

ไปที่หน้าการตรวจสอบสังเคราะห์ใน Cloud Console การดำเนินการนี้จะเปิดหน้าเว็บดังที่แสดงด้านล่าง

96bfce88f55442f3.png

คลิกลิงก์สร้างการตรวจสอบอย่างมีระบบในหน้าด้านบน ซึ่งจะดึงแบบฟอร์มการกำหนดค่าขึ้นมาดังที่ปรากฏด้านล่าง

af4dde3e9e0a5a16.png

เราได้ระบุชื่อไว้ว่า s1 แต่คุณสามารถเลือกชื่ออื่นได้ สังเกตปุ่มรหัสช่วยเหลือในหน้าจอด้านบน โปรดคลิกที่นั่น

ระบบจะแสดงป๊อปอัปที่คุณต้องแสดงข้อความแจ้งที่อธิบายถึงกรอบการทดสอบที่คุณต้องการดำเนินการ เพื่อให้แน่ใจว่า 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 จริงสำหรับบริการของคุณ

เมื่อคุณคลิกสร้าง Gemini จะสร้างโค้ด Test Suite และไฟล์ package.json ดังที่แสดงด้านล่าง โค้ดที่สร้างให้คุณอาจแตกต่างจากโค้ดที่คุณเห็นด้านล่าง ดูโค้ดและไฟล์ทรัพยากร Dependency ในไฟล์ package.json

d19340c357f620bd.png

คลิกแทรกฟังก์ชันระบบคลาวด์ การดำเนินการนี้จะเปิดแบบฟอร์มการสร้าง Cloud Function พร้อมค่าที่จำเป็นซึ่งป้อนข้อมูลให้คุณแล้ว

d70e50624a09149a.png

คลิกใช้ฟังก์ชัน แล้วคลิกปุ่มสร้าง เราไม่ได้เลือกการกำหนดค่าช่องทางการแจ้งเตือนใดๆ ในตัวอย่างนี้ แต่คุณสามารถเลือกได้

การดำเนินการนี้จะเริ่มต้นกระบวนการสร้าง Google Cloud Function ในเบื้องหลัง การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดใจรอ

1b07702ea5ac5bdb.png

เมื่อทำให้ Cloud Function ใช้งานได้เรียบร้อยแล้ว Cloud Monitoring จะเริ่มงานเรียกใช้การตรวจสอบสังเคราะห์ให้คุณ

ในช่วงต้น คุณจะเห็นว่าไม่มีการเรียกใช้ ตามที่แสดงด้านล่าง

dac473269a289a3b.png

เมื่อมีการเรียกใช้ที่เฉพาะเจาะจง คุณจะเห็นการดำเนินการต่างๆ หน้าจอด้านล่างแสดงให้เห็นว่ากำลังผ่านการทดสอบ

dc2d7dd98277fbcc.png

หากคุณคลิกที่ชื่อการตรวจสอบสังเคราะห์ (เช่น s1) การดำเนินการต่างๆ จะแสดงดังต่อไปนี้

8369a02b413d12cc.png

7. ยินดีด้วย

ยินดีด้วย คุณได้ทำให้ API ตัวอย่างใช้งานได้กับ Google Cloud Run และเขียนการทดสอบ Synthetic Monitoring เสร็จสมบูรณ์แล้วเพื่อตรวจสอบฟังก์ชันการทำงานของบริการ ระหว่างดำเนินการ คุณได้ใช้ Gemini เพื่อช่วยสร้างโค้ดสำหรับชุดทดสอบ

8. เอกสารอ้างอิง