ทดสอบด้วย 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

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

    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

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

กลุ่มแอป

รหัสกลุ่มแอปเป็นรหัสเฉพาะสากล ซึ่งหมายความว่าเมื่อเรา ลงชื่อแอปของผู้ใช้อีกครั้ง เราจะใช้ได้เฉพาะรหัสกลุ่มแอปที่ เชื่อมโยงกับบัญชีนักพัฒนาแอป 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 จะบังคับให้การทดสอบสิ้นสุดเมื่อทำงานถึง 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

คุณสามารถใช้สคริปต์เชลล์หรือไฟล์ Batch เพื่อทำให้คำสั่งการทดสอบแอปบนอุปกรณ์เคลื่อนที่เป็นแบบอัตโนมัติ ซึ่งปกติแล้วคุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง 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 มีรหัสออกหลายรายการที่คุณใช้เพื่อทำความเข้าใจ ผลการทดสอบที่คุณเรียกใช้โดยใช้สคริปต์หรือไฟล์ Batch ได้ดียิ่งขึ้น

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

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

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

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

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