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

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

  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 ที่มีการอ้างอิงไปยังตัวระบุ Bundle ของแอปโดยตรง

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

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

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