ทดสอบด้วย 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 คือ รหัสของโปรเจ็กต์ 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

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

  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"

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

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

สิทธิ์ที่รองรับ
  1. ข้อความ Push apns-environment
  2. VPN ส่วนตัว com.apple.developer.networking.vpn.api
ข้อความ Push

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

กลุ่มแอป

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

ทำการทดสอบ Game Loop

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

Flag สำหรับการทดสอบ 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 จะบังคับให้การทดสอบสิ้นสุดลงเมื่อทำงานครบ 1 ชั่วโมง

เช่น คำสั่งต่อไปนี้จะเรียกใช้การทดสอบ 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 สคริปต์ Bash ตัวอย่างนี้จะเรียกใช้ XCTest โดยมีระยะหมดเวลา 2 นาที และรายงานว่าการทดสอบ เสร็จสมบูรณ์หรือไม่

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 กรอบการทดสอบอย่างน้อย 1 รายการ (คลาสหรือเมธอดของคลาสที่ทดสอบ) ภายใน การดำเนินการทดสอบไม่ผ่าน
15 Firebase Test Lab ไม่สามารถระบุได้ว่าเมทริกซ์การทดสอบผ่านหรือ ไม่ผ่าน เนื่องจากเกิดข้อผิดพลาดที่ไม่คาดคิด
19 ผู้ใช้ยกเลิกการทดสอบ
20 เกิดข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานของการทดสอบ

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

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

ขั้นตอนถัดไป

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