ทดสอบด้วย 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. ลงชื่อเข้าสู่ระบบ CLI ของ gcloud โดยใช้บัญชี 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 ได้ สําหรับชุดค่าผสมของมิติข้อมูลการทดสอบแต่ละชุดที่คุณต้องการทดสอบ ให้ใส่ 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 ของคุณซึ่งมีการอ้างอิงโดยตรงถึงรหัสกลุ่มของแอป

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

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

กลุ่มแอป

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