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

สําหรับการให้สิทธิ์คําขอ Push Notification ผู้ใช้สามารถสร้างโทเค็นเว็บ 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 เพื่อดูตัวเลือกการทดสอบที่พร้อมให้ใช้งานโดยทั่วไปหรืออยู่ในเวอร์ชันเบต้า