คู่มือนี้จะอธิบายวิธีเรียกใช้ XCTest หรือการทดสอบ Game Loop โดยใช้ gcloud CLI
ขั้นตอนที่ 1: กำหนดค่าสภาพแวดล้อม Google Cloud SDK ในพื้นที่
- ดาวน์โหลด Google Cloud SDK
- ตรวจสอบว่าการติดตั้งเป็นเวอร์ชันล่าสุดและมีคำสั่ง
gcloud firebase
ดังนี้gcloud components update
- ลงชื่อเข้าสู่ระบบ CLI ของ gcloud โดยใช้บัญชี Google
gcloud auth login
- ตั้งค่าโปรเจ็กต์ Firebase ใน gcloud โดยที่ PROJECT_ID คือรหัสโปรเจ็กต์ Firebase
gcloud config set project PROJECT_ID
ซึ่งรวมถึงเครื่องมือ gcloud CLI
ขั้นตอนที่ 2: เรียกใช้การทดสอบ
เรียกใช้ XCTest
อัปโหลดไฟล์ .zip ของการทดสอบโดยเรียกใช้คําสั่งต่อไปนี้ (หากยังไม่ได้แพ็กเกจแอป โปรดดูการแพ็กเกจ XCTest)
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
เลือกมิติข้อมูลทดสอบ
Test Lab ช่วยให้คุณทำการทดสอบกับ iOS เวอร์ชันต่างๆ, อุปกรณ์, การวางแนวหน้าจอ และภาษาต่างๆ ได้ การกำหนดค่าเหล่านี้เรียกว่ามิติข้อมูลทดสอบของการทดสอบ หากต้องการดูตัวเลือกสำหรับมิติข้อมูลแต่ละรายการ (เช่น เวอร์ชัน Xcode ที่รองรับสำหรับเวอร์ชัน iOS ของอุปกรณ์) ให้แทนที่
models
,versions
หรือlocales
แทนdimension
ในคําสั่งต่อไปนี้gcloud firebase test ios dimension list
การวางแนวหน้าจอจะง่ายกว่า เนื่องจากมีตัวเลือกเพียง
portrait
และlandscape
เลื่อนดูรายการมิติข้อมูลการทดสอบ แล้วเลือกชุดค่าผสม 2-3 ชุดที่คุณต้องการทำการทดสอบ ไปที่แพ็กเกจราคาเพื่อดูจำนวนชุดค่าผสมสูงสุดที่คุณเรียกใช้ได้ต่อวัน
เมื่อเลือกชุดมิติข้อมูลการทดสอบแล้ว คุณสามารถให้ Test Lab เรียกใช้การทดสอบโดยใช้คําสั่ง
firebase test ios run
สําหรับชุดค่าผสมของมิติข้อมูลการทดสอบแต่ละชุดที่คุณต้องการทดสอบ ให้ใส่ Flag--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 ที่รองรับสำหรับการทดสอบ ให้ใช้ Flag
--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 คุณสามารถเลือกติดป้ายกำกับเมทริกซ์การทดสอบได้โดยใช้ Flag
--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"
ทดสอบการให้สิทธิ์พิเศษ
หากต้องการทดสอบการให้สิทธิ์ที่ต้องใช้รหัสแอปที่ชัดเจน ให้ตั้งค่า Flag --test-special-entitlements
Test Lab
ลงนามแอปพลิเคชันอีกครั้งด้วยรหัสกลุ่มใหม่เพื่อรองรับการให้สิทธิ์พิเศษ ดังนั้นโปรดตรวจสอบว่าไม่มีทรัพยากรในไฟล์ ZIP ของคุณซึ่งมีการอ้างอิงโดยตรงถึงรหัสกลุ่มของแอป
- ข้อความ Push
apns-environment
- VPN ส่วนบุคคล
com.apple.developer.networking.vpn.api
ผู้ใช้สามารถสร้างโทเค็นเว็บ JSON เพื่อให้สิทธิ์คําขอการแจ้งเตือนแบบพุชได้โดยใช้คีย์การรับรองส่วนตัวพร้อมกับรหัสคีย์ C7FD9DJAA8 และรหัสทีม 9CKCGNNUQN โทเค็นที่สร้างขึ้นจะใช้งานได้ 1 ชั่วโมงและต้องรีเฟรชทุก 60 นาที อ่านเพิ่มเติมเกี่ยวกับการสร้างการเชื่อมต่อ APNs โดยใช้โทเค็น
กลุ่มแอปรหัสกลุ่มแอปจะไม่ซ้ำกันทั่วโลก ซึ่งหมายความว่าเมื่อเราลงชื่อแอปของผู้ใช้อีกครั้ง เราจะใช้รหัสกลุ่มแอปที่เชื่อมโยงกับบัญชีนักพัฒนาแอป Test Lab เท่านั้น หากการทดสอบใช้กลุ่มแอป การทดสอบจะดำเนินการไม่สำเร็จ
ทำการทดสอบ Game Loop
เรียกใช้คำสั่ง gcloud beta firebase test ios run
และใช้แฟล็กต่อไปนี้เพื่อกำหนดค่าการเรียกใช้
Flag สําหรับการทดสอบ Game Loop | |
---|---|
--type
|
ต้องระบุ: ระบุประเภทการทดสอบ iOS ที่ต้องการเรียกใช้ คุณสามารถป้อนประเภทการทดสอบ |
--app
|
ต้องระบุ: เส้นทางสัมบูรณ์ (GCS หรือระบบไฟล์) ไปยังไฟล์ IPA ของแอป แฟล็กนี้ใช้ได้เฉพาะเมื่อทำการทดสอบ Game Loop เท่านั้น |
--scenario-numbers
|
ลูป (หรือที่เรียกว่าสถานการณ์) ที่ต้องการเรียกใช้ในแอป คุณสามารถป้อนลูป 1 รายการ รายการลูป หรือช่วงของลูป ลูปเริ่มต้นคือ 1
เช่น |
--device-model
|
อุปกรณ์จริงที่คุณต้องการใช้ทดสอบ (ดูอุปกรณ์ที่ใช้ได้) |
--timeout
|
ระยะเวลาสูงสุดที่คุณต้องการให้การทดสอบทำงาน คุณสามารถป้อนจำนวนเต็มเพื่อแสดงระยะเวลาเป็นวินาที หรือป้อนจำนวนเต็มและการจัดหมวดหมู่เพื่อแสดงระยะเวลาเป็นหน่วยเวลาที่นานขึ้น เช่น
|
ตัวอย่างเช่น คำสั่งต่อไปนี้จะทำการทดสอบ 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 เพื่อดูตัวเลือกการทดสอบที่พร้อมใช้งานโดยทั่วไปหรืออยู่ในรุ่นเบต้า