Catch up on everthing we announced at this year's Firebase Summit. Learn more

ทดสอบกับ gcloud CLI

คู่มือนี้อธิบายวิธีเรียกใช้การทดสอบ XCTest หรือ Game Loop โดยใช้ gcloud CLI

ขั้นตอนที่ 1: กำหนดค่าสภาพแวดล้อม Google Cloud SDK ท้องถิ่นของคุณ

  1. ดาวน์โหลด เมฆ SDK ของ Google
  2. ซึ่งรวมถึงเครื่องมือ gcloud CLI

  3. ตรวจสอบให้แน่ใจการติดตั้งของคุณจะขึ้นไปวันและรวมถึง gcloud firebase สั่ง:
          gcloud components update
  4. เข้าสู่ระบบเพื่อ CLI GCloud โดยใช้บัญชี Google ของคุณ:
          gcloud auth login
  5. ตั้งโครงการ Firebase คุณใน GCloud ที่ PROJECT_ID คือรหัสของโครงการ Firebase ของคุณ:
         gcloud config set project PROJECT_ID

ขั้นตอนที่ 2: การเรียกใช้การทดสอบของคุณ

เรียกใช้ XCTest

  1. อัปโหลดไฟล์ซิปของการทดสอบของคุณโดยใช้คำสั่งต่อไป (ถ้าคุณยังไม่ได้บรรจุแอปของคุณให้ดูที่ บรรจุภัณฑ์ 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. เมื่อคุณได้เลือกชุดของมิติการทดสอบคุณสามารถมีห้องปฏิบัติการทดสอบเรียกใช้การทดสอบของคุณโดยใช้ 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=11.3

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

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

การแจ้งเตือนแบบพุช

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

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

ตัวอย่างเช่น คำสั่งต่อไปนี้รันการทดสอบ 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

สำหรับข้อมูลเพิ่มเติมเกี่ยว CLI GCloud ให้ดูที่ เอกสารอ้างอิง

ขั้นตอนที่ 4 (อุปกรณ์เสริม): อัตโนมัติในอนาคตการทดสอบที่คุณสร้าง

การเขียนสคริปต์คำสั่ง gcloud ด้วย Test Lab

คุณสามารถใช้เชลล์สคริปต์หรือไฟล์แบตช์เพื่อทำให้คำสั่งทดสอบแอพมือถือเป็นอัตโนมัติ มิฉะนั้นคุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud สคริปต์ทุบตีตัวอย่างนี้รัน XCTest โดยหมดเวลาสองนาที และรายงานว่าการรันการทดสอบเสร็จสมบูรณ์หรือไม่:

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

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

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

ขั้นตอนต่อไป

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