ทดสอบกับ Google Cloud CLI

คู่มือนี้จะอธิบายวิธีเรียกใช้การทดสอบ XCTest หรือ Game Loop โดยใช้ gcloud CLI

ขั้นตอนที่ 1 : กำหนดค่าสภาพแวดล้อม Google Cloud SDK ในเครื่องของคุณ

  1. ดาวน์โหลด Google Cloud SDK
  2. ซึ่งรวมถึงเครื่องมือ gcloud CLI

  3. ตรวจสอบว่าการติดตั้งเป็นเวอร์ชันล่าสุดและมีคำสั่ง gcloud firebase :
          gcloud components update
  4. เข้าสู่ระบบ gcloud CLI โดยใช้บัญชี Google ของคุณ:
          gcloud auth login
  5. ตั้งค่าโปรเจ็กต์ Firebase ของคุณใน gcloud โดยที่ PROJECT_ID คือ ID ของโปรเจ็กต์ Firebase ของคุณ:
         gcloud config set project PROJECT_ID

ขั้นตอนที่ 2 : เรียกใช้การทดสอบของคุณ

เรียกใช้ XCTest

  1. อัปโหลดไฟล์ .zip ของการทดสอบของคุณโดยเรียกใช้คำสั่งต่อไปนี้ (หากคุณยังไม่ได้จัดทำแพ็กเกจแอป โปรดดูที่ การบรรจุ XCTest ของคุณ )

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. เลือกขนาดการทดสอบของคุณ

    Test Lab ช่วยให้คุณสามารถทำการทดสอบบน iOS เวอร์ชัน อุปกรณ์ การวางแนวหน้าจอ และภาษาได้หลากหลาย การกำหนดค่าเหล่านี้เรียกว่า มิติการทดสอบ ของการทดสอบ หากต้องการดูตัวเลือกสำหรับแต่ละมิติข้อมูล (เช่น เวอร์ชัน Xcode ที่รองรับสำหรับเวอร์ชัน iOS ของอุปกรณ์) ให้แทนที่ models versions หรือ locales สำหรับ dimension ในคำสั่งต่อไปนี้:

    gcloud firebase test ios dimension list

    การวางแนวหน้าจอค่อนข้างง่ายกว่า เนื่องจากมีตัวเลือกเดียวคือ portrait และ landscape

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

  3. เมื่อคุณเลือกชุดมิติการทดสอบแล้ว คุณสามารถให้ Test Lab ดำเนินการทดสอบโดยใช้คำสั่ง firebase test ios run สำหรับชุดข้อมูลการทดสอบแต่ละชุดที่คุณต้องการทดสอบ ให้รวมแฟล็ก --device แยกต่างหาก:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    อาจเป็นไปได้ว่าการทดสอบของคุณจะล้มเหลวเนื่องจากความไม่เข้ากันระหว่างเวอร์ชัน Xcode ที่สร้างการทดสอบกับเวอร์ชัน Xcode เริ่มต้นที่ใช้โดย Test Lab หากต้องการระบุเวอร์ชัน Xcode ที่รองรับสำหรับการทดสอบของคุณ ให้ใช้แฟล็ก --xcode-version :

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    เพื่อช่วยคุณระบุและค้นหาเมทริกซ์การทดสอบของคุณในคอนโซล Firebase คุณสามารถเลือกติดป้ายกำกับเมทริกซ์ทดสอบของคุณโดยใช้แฟล็ก --client-details matrixLabel="<label>" ในตัวอย่างต่อไปนี้:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

ทดสอบสิทธิ์พิเศษ

หากต้องการทดสอบการให้สิทธิ์ที่ต้องมี App ID ที่ชัดเจน คุณสามารถทำได้โดยตั้งค่าสถานะ --test-special-entitlements Test Lab ลงนามแอปพลิเคชันอีกครั้งด้วยตัวระบุบันเดิลใหม่เพื่อรองรับการให้สิทธิ์พิเศษ ดังนั้นโปรดตรวจสอบให้แน่ใจว่าไม่มีทรัพยากรในไฟล์ ZIP ที่มีการอ้างอิงโดยตรงไปยังตัวระบุบันเดิลของแอป

สิทธิ์ที่รองรับ:
  1. การแจ้งเตือนแบบพุช apns-environment
  2. VPN ส่วนตัว com.apple.developer.networking.vpn.api
การแจ้งเตือนแบบพุช

สำหรับการอนุญาตคำขอการแจ้งเตือนแบบพุช ผู้ใช้สามารถสร้างโทเค็นเว็บ JSON ได้โดยใช้ คีย์การลงนาม ส่วนตัวพร้อมกับรหัสคีย์ - C7FD9DJAA8 และรหัสทีม - 9CKCGNNUQN โทเค็นที่สร้างขึ้นจะมีอายุการใช้งานหนึ่งชั่วโมงและจำเป็นต้องรีเฟรชทุกๆ 60 นาที อ่านเพิ่มเติมเกี่ยวกับ การสร้างการเชื่อมต่อโดยใช้โทเค็นกับ APN

กลุ่มแอป

รหัสกลุ่มแอปมีเอกลักษณ์เฉพาะในระดับสากล ซึ่งหมายความว่าเมื่อเราลงนามแอปผู้ใช้อีกครั้ง เราจะใช้ได้เฉพาะรหัสกลุ่มแอปที่เชื่อมโยงกับบัญชีนักพัฒนา Test Lab เท่านั้น หากการทดสอบของคุณอาศัยกลุ่มแอป การทดสอบของคุณจะล้มเหลว

รันการทดสอบ Game Loop

เรียกใช้คำสั่ง gcloud beta firebase test ios run และใช้แฟล็กต่อไปนี้เพื่อกำหนดค่าการรัน

แฟล็กสำหรับการทดสอบ Game Loop
--type

จำเป็น : ระบุประเภทของการทดสอบ iOS ที่คุณต้องการเรียกใช้ คุณสามารถป้อนประเภทการทดสอบ xctest (ค่าเริ่มต้น) หรือ game-loop

--app

จำเป็น : เส้นทางที่แน่นอน (GCS หรือระบบไฟล์) ไปยังไฟล์ IPA ของแอปของคุณ การตั้งค่าสถานะนี้ใช้ได้เฉพาะเมื่อรันการทดสอบ Game Loop

--scenario-numbers

ลูป (หรือที่เรียกว่าสถานการณ์) ที่คุณต้องการเรียกใช้ในแอปของคุณ คุณสามารถป้อนหนึ่งลูป รายการหรือลูป หรือช่วงของลูปได้ การวนซ้ำเริ่มต้นคือ 1

ตัวอย่างเช่น --scenario-numbers=1-3,5 รันลูป 1, 2, 3 และ 5

--device-model

อุปกรณ์ทางกายภาพที่คุณต้องการทำการทดสอบ (ค้นหาว่า อุปกรณ์ ใดบ้างที่คุณสามารถใช้ได้)

--timeout

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

ตัวอย่างเช่น:

  • --timeout=200 บังคับให้การทดสอบของคุณยุติเมื่อรันนานถึง 200 วินาที
  • --timeout=1h บังคับให้การทดสอบของคุณยุติเมื่อดำเนินการนานถึงหนึ่งชั่วโมง

ตัวอย่างเช่น คำสั่งต่อไปนี้รันการทดสอบ Game Loop ที่ดำเนินการลูป 1, 4, 6, 7 และ 8 บน iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ gcloud CLI โปรดดู เอกสารอ้างอิง

ขั้นตอนที่ 3 (ไม่บังคับ) : ทำการทดสอบอัตโนมัติในอนาคตที่คุณสร้าง

การเขียนสคริปต์คำสั่ง gcloud ด้วย Test Lab

คุณสามารถใช้เชลล์สคริปต์หรือไฟล์แบตช์เพื่อทำให้คำสั่งการทดสอบแอปบนอุปกรณ์เคลื่อนที่เป็นแบบอัตโนมัติ มิฉะนั้น คุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud สคริปต์ทุบตีตัวอย่างนี้รัน XCTest โดยหมดเวลาสองนาที และรายงานว่าการทดสอบรันเสร็จสมบูรณ์หรือไม่:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

รหัสทางออกของสคริปต์

Test Lab มีโค้ดออกหลายโค้ดที่คุณสามารถใช้เพื่อทำความเข้าใจผลการทดสอบที่คุณเรียกใช้โดยใช้สคริปต์หรือไฟล์แบตช์ได้ดียิ่งขึ้น

รหัสออก หมายเหตุ
0 การดำเนินการทดสอบทั้งหมดผ่านไปแล้ว
1 เกิดความล้มเหลวทั่วไป สาเหตุที่เป็นไปได้ ได้แก่ ชื่อไฟล์ที่ไม่มีอยู่หรือข้อผิดพลาด HTTP/เครือข่าย
2 การทดสอบสิ้นสุดลงเนื่องจากมีคำสั่งหรืออาร์กิวเมนต์ที่ไม่รู้จักให้มา
10 กรณีทดสอบอย่างน้อยหนึ่งกรณี (คลาสที่ทดสอบหรือวิธีการเรียน) ภายในการดำเนินการทดสอบไม่ผ่าน
15 Firebase Test Lab ไม่สามารถระบุได้ว่าเมทริกซ์การทดสอบผ่านหรือล้มเหลว เนื่องจากมีข้อผิดพลาดที่ไม่คาดคิด
19 ผู้ใช้ยกเลิกเมทริกซ์ทดสอบ
20 เกิดข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานการทดสอบ

ขั้นตอนที่ 4 : ตรวจสอบผลการทดสอบ

เมื่อการทดสอบเริ่มต้น คุณจะได้รับลิงก์ไปยังหน้า ผลการทดสอบ การทดสอบอาจใช้เวลาหลายนาทีในการทำงาน ขึ้นอยู่กับจำนวนการกำหนดค่าต่างๆ ที่คุณเลือก และระยะเวลาหมดเวลาการทดสอบที่ตั้งไว้สำหรับการทดสอบของคุณ หลังจากดำเนินการทดสอบแล้ว คุณสามารถตรวจสอบผลการทดสอบได้ ดู การวิเคราะห์ผลลัพธ์ของ Firebase Test Lab เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีตีความผลการทดสอบของคุณ

ขั้นตอนต่อไป

อ่านเอกสาร Google Cloud SDK เพื่อสำรวจตัวเลือกการทดสอบที่ พร้อมใช้งานโดยทั่วไป หรือใน เวอร์ชันเบต้า