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

กลุ่มแอป

รหัสกลุ่มแอปเป็นรหัสที่ไม่ซ้ำกันแบบสากล ซึ่งหมายความว่าเมื่อเราลงนามแอปของผู้ใช้อีกครั้ง เราจะใช้ได้เฉพาะรหัสกลุ่มแอปที่เชื่อมโยงกับบัญชีนักพัฒนาแอป Test Lab เท่านั้น หากการทดสอบอาศัยกลุ่มแอป การทดสอบจะล้มเหลว

เรียกใช้การทดสอบ Game Loop

เรียกใช้คำสั่ง gcloud beta firebase test ios run และใช้แฟล็กต่อไปนี้เพื่อกำหนดค่าการเรียกใช้

แฟล็กสำหรับการทดสอบ Game Loop
--type

ต้องระบุ: ระบุประเภทการทดสอบ iOS ที่ต้องการเรียกใช้ คุณสามารถป้อนประเภทการทดสอบ xctest (ค่าเริ่มต้น) หรือ game-loop

--app

ต้องระบุ: Absolute Path (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

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