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