การทดสอบเกมแบบอัตโนมัติอาจเป็นเรื่องยากเมื่อแอปเกมสร้างขึ้นบนเฟรมเวิร์ก UI ที่แตกต่างกัน การทดสอบ Game Loop ช่วยให้คุณผสานรวมการทดสอบแบบเนทีฟกับ Test Lab และเรียกใช้การทดสอบในอุปกรณ์ที่เลือกได้อย่างง่ายดาย การทดสอบ Game Loop จะเรียกใช้การทดสอบผ่านแอปเกมของคุณพร้อมกับจำลองการกระทำของผู้เล่นจริง คู่มือนี้จะแสดงวิธีเรียกใช้การทดสอบ Game Loop จากนั้นดูและจัดการผลการทดสอบในคอนโซล Firebase
การทดสอบ Game Loop คืออะไร
เนื่องจากแอปเกมแสดงผลในเฟรมเวิร์กและเครื่องมือ UI ที่แตกต่างกัน เช่น โค้ด Unity, Unreal หรือ OpenGL/Vulkan C++ เครื่องมืออัตโนมัติมาตรฐานจึงไม่สามารถตรวจสอบหรือโต้ตอบกับองค์ประกอบ UI ได้ การทดสอบ Game Loop ช่วยให้คุณผสานรวมการทดสอบเครื่องมือแบบเนทีฟกับ Test Lab ได้โดยการเปิดเกมด้วย Intent ที่มีหมายเลขสถานการณ์ที่เฉพาะเจาะจง หมายเลขสถานการณ์นี้จะแจ้งให้แอปเรียกใช้ตรรกะที่เขียนสคริปต์ไว้ล่วงหน้า การจำลอง AI หรือการตรวจสอบประสิทธิภาพภายในเกมเอนจินโดยตรง
เมื่อเปิดใช้งานแล้ว Test Lab จะไม่โต้ตอบกับ UI ของเกมอีก แต่ Test Lab จะทำหน้าที่เป็นสภาพแวดล้อมและการส่งผ่านข้อมูลทดสอบ โดยจะเปิดสถานการณ์ที่เฉพาะเจาะจง ตรวจสอบการขัดข้องและหมดเวลา และรวบรวมบันทึกผลลัพธ์ที่กำหนดเองเมื่อแอปทำงานวนซ้ำเสร็จสิ้น
Game Loop แตกต่างจากการทดสอบการวัดคุมอย่างไร
- การทดสอบการวัดคุม (เช่น Espresso หรือ UI Automator) อาศัยเฟรมเวิร์กภายนอกเพื่อขับเคลื่อนการโต้ตอบกับ UI, คลิกปุ่ม และยืนยันสถานะแอปพลิเคชันในลำดับชั้นการแสดงผลของ Android จากภายนอกแอป
- การทดสอบ Game Loop จะมอบสิทธิ์ตรรกะการทดสอบให้กับแอปของคุณ แอปจะเรียกใช้ลูปการทดสอบภายในหรือการจำลองของตัวเองโดยไม่มีการโต้ตอบกับ UI ภายนอก ขณะที่ Test Lab จะทริกเกอร์สถานการณ์ของคุณและรวบรวมเอาต์พุตการทดสอบ
ตัวอย่าง
สมมติว่าคุณต้องการยืนยันว่าเกมของคุณรักษาอัตราเฟรมต่อวินาทีได้อย่างน้อย 60 เฟรมในอุปกรณ์จริงต่างๆ คุณสามารถใช้สถานการณ์ 1 ภายในโค้ดเกมเพื่อโหลดระดับที่ซับซ้อนที่สุดในด้านภาพ และให้ผู้เล่น AI หรือสคริปต์อัตโนมัติเล่นผ่านระดับนั้นเป็นเวลา 2 นาที
เมื่อ Test Lab ทริกเกอร์สถานการณ์ 1 เกมของคุณจะเริ่มการเล่นเกมโดย AI, ตรวจสอบเวลาในการแสดงผลเฟรมและการใช้งานหน่วยความจำ, สตรีมเมตริกเหล่านั้นไปยังไฟล์บันทึกเอาต์พุตที่กำหนดเอง (logFile) และเรียกใช้ finish() เมื่อเสร็จสมบูรณ์
จากนั้น Test Lab จะบันทึกไฟล์บันทึกและทำให้คุณเข้าถึงได้ใน Cloud Storage และคอนโซล Firebase
Use Case
คุณสามารถใช้การทดสอบที่มีลูปเดียวหรือหลายลูปก็ได้ ทั้งนี้ขึ้นอยู่กับเกมเอนจินของคุณ ลูปคือการรันการทดสอบแบบเต็มหรือบางส่วนในแอปเกม คุณใช้ Game Loop เพื่อทำสิ่งต่อไปนี้ได้
- เรียกใช้ระดับของเกมในลักษณะเดียวกับที่ผู้ใช้ปลายทางจะเล่น คุณสามารถเขียนสคริปต์อินพุตของผู้ใช้ ปล่อยให้ผู้ใช้ไม่มีการใช้งาน หรือแทนที่ผู้ใช้ด้วย AI หากเหมาะสมในเกม (เช่น หากคุณมีแอปเกมแข่งรถและใช้ AI อยู่แล้ว คุณสามารถให้ AI เป็นคนขับแทนอินพุตของผู้ใช้ได้)
- เรียกใช้เกมที่การตั้งค่าคุณภาพสูงสุดเพื่อดูว่าอุปกรณ์รองรับหรือไม่
- ทำการทดสอบทางเทคนิค (คอมไพล์เฉดเดอร์หลายรายการ เรียกใช้เฉดเดอร์ ตรวจสอบว่าเอาต์พุตเป็นไปตามที่คาดไว้ และอื่นๆ)
คุณสามารถเรียกใช้การทดสอบ Game Loop ในอุปกรณ์ทดสอบเครื่องเดียว ชุดอุปกรณ์ทดสอบ หรือใน Test Lab ได้ อย่างไรก็ตาม เราไม่แนะนําให้เรียกใช้การทดสอบ Game Loop ในอุปกรณ์เสมือนจริงเนื่องจากมีอัตราเฟรมกราฟิกต่ำกว่าอุปกรณ์จริง
ก่อนเริ่มต้น
หากต้องการใช้การทดสอบ คุณต้องกำหนดค่าแอปสำหรับการทดสอบ Game Loop ก่อน
ในไฟล์ Manifest ของแอป ให้เพิ่มตัวกรอง Intent ใหม่ลงในกิจกรรม ดังนี้
<activity android:name=".MyActivity"> <intent-filter> <action android:name="com.google.intent.action.TEST_LOOP"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="application/javascript"/> </intent-filter> <intent-filter> ... (other intent filters here) </intent-filter> </activity>ซึ่งจะช่วยให้ Test Lab เปิดเกมของคุณได้โดยการทริกเกอร์ด้วย Intent ที่เฉพาะเจาะจง
ในโค้ด (เราขอแนะนำให้ใส่ไว้ในการประกาศเมธอด
onCreate) ให้เพิ่มโค้ดต่อไปนี้Kotlin
val launchIntent = intent if (launchIntent.action == "com.google.intent.action.TEST_LOOP") { val scenario = launchIntent.getIntExtra("scenario", 0) // Code to handle your game loop here }
Java
Intent launchIntent = getIntent(); if(launchIntent.getAction().equals("com.google.intent.action.TEST_LOOP")) { int scenario = launchIntent.getIntExtra("scenario", 0); // Code to handle your game loop here }
ซึ่งจะช่วยให้กิจกรรมของคุณตรวจสอบ Intent ที่เปิดใช้งานได้ นอกจากนี้ คุณยังเพิ่มโค้ดนี้ในภายหลังได้หากต้องการ (เช่น หลังจากโหลดเกมเอนจินในตอนแรก)
แนะนำ: เพิ่มข้อความต่อไปนี้ที่ท้ายการทดสอบ
Kotlin
yourActivity.finish()
Java
yourActivity.finish();
ซึ่งจะปิดแอปเมื่อการทดสอบ Game Loop เสร็จสมบูรณ์ การทดสอบจะอาศัยเฟรมเวิร์ก UI ของแอปเพื่อเริ่มลูปถัดไป และการปิดแอปจะบอกให้ทราบว่าการทดสอบเสร็จสิ้นแล้ว
สร้างและเรียกใช้การทดสอบ Game Loop
หลังจากกำหนดค่าแอปสำหรับการทดสอบ Game Loop แล้ว คุณจะสร้างการทดสอบและเรียกใช้ในแอปเกมได้ทันที โดยสามารถเลือกทำการทดสอบใน Test Lab โดยใช้คอนโซล Firebase หรืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ของ gcloud หรือในอุปกรณ์ที่ใช้ Test Loop Manager
เรียกใช้ในอุปกรณ์ในเครื่อง
Test Loop Manager ของ Test Lab เป็นแอปโอเพนซอร์สที่ช่วยให้คุณผสานรวมการทดสอบ Game Loop และเรียกใช้ในอุปกรณ์ในเครื่องได้ นอกจากนี้ยังช่วยให้ทีมการประกันคุณภาพเรียกใช้ Game Loop เดียวกันในอุปกรณ์ของตนได้ด้วย
วิธีทำการทดสอบในอุปกรณ์ภายในเครื่องโดยใช้ Test Loop Manager
- ดาวน์โหลด Test Loop Manager
ในโทรศัพท์หรือแท็บเล็ต แล้วติดตั้งโดยเรียกใช้คำสั่งต่อไปนี้
adb install testloopmanager.apk
- เปิดแอป Test Loop Apps ในโทรศัพท์หรือแท็บเล็ต แอปจะแสดงรายการแอปในอุปกรณ์ที่เรียกใช้ด้วย Game Loop ได้ หากไม่เห็นแอปเกมที่นี่ ให้ตรวจสอบว่าตัวกรอง Intent ตรงกับที่อธิบายไว้ในขั้นตอนแรกของส่วนก่อนเริ่มต้น
- เลือกแอปเกม แล้วเลือกจำนวนลูปที่ต้องการเรียกใช้ หมายเหตุ: ในขั้นตอนนี้ คุณสามารถเลือกเรียกใช้ชุดย่อยของลูปแทนที่จะเรียกใช้ลูปเดียวได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้หลายลูปพร้อมกันได้ที่ฟีเจอร์เสริม
- คลิกเรียกใช้การทดสอบ การทดสอบจะเริ่มทำงานทันที
วิ่งใน Test Lab
คุณสามารถทำการทดสอบ Game Loop ใน Test Lab โดยใช้คอนโซล Firebase หรือ gcloud CLI ก็ได้ ก่อนเริ่มต้น หากยังไม่ได้เปิดคอนโซล Firebase ให้เปิดคอนโซลและสร้างโปรเจ็กต์
ใช้คอนโซล Firebase
- ในคอนโซล Firebase ให้คลิก Test Lab จากแผงด้านซ้าย
- คลิกเรียกใช้การทดสอบครั้งแรก (หรือเรียกใช้การทดสอบหากโปรเจ็กต์เคยเรียกใช้การทดสอบมาก่อน)
- เลือก Game Loop เป็นประเภทการทดสอบ แล้วคลิกต่อไป
- คลิกเรียกดู แล้วเรียกดูไฟล์
.apkของแอป หมายเหตุ: ในขั้นตอนนี้ คุณสามารถเลือกเรียกใช้ชุดย่อยของลูปแทนที่จะเรียกใช้ลูปเดียวได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้หลายลูปพร้อมกันได้ที่ฟีเจอร์เสริม - คลิกต่อไป
- เลือกอุปกรณ์จริงที่จะใช้ทดสอบแอป
- คลิกเริ่มการทดสอบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นใช้งานคอนโซล Firebase ได้ที่เริ่มทดสอบด้วยคอนโซล Firebase
ใช้บรรทัดคำสั่ง gcloud (CLI)
หากยังไม่ได้ดาวน์โหลดและติดตั้ง Google Cloud SDK ให้ดำเนินการก่อน
ลงชื่อเข้าใช้ gcloud CLI ด้วยบัญชี Google โดยทำดังนี้
gcloud auth loginตั้งค่าโปรเจ็กต์ Firebase ใน gcloud โดยที่
PROJECT_IDคือรหัสของโปรเจ็กต์ Firebasegcloud config set project PROJECT_ID
เรียกใช้การทดสอบครั้งแรกโดยทำดังนี้
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเริ่มต้นใช้งาน gcloud CLI ได้ที่เริ่มการทดสอบจากบรรทัดคำสั่ง gcloud
ฟีเจอร์เสริม
Test Lab มีฟีเจอร์เสริมหลายอย่างที่ช่วยให้คุณปรับแต่งการทดสอบเพิ่มเติมได้ เช่น ความสามารถในการเขียนข้อมูลเอาต์พุต การรองรับ Game Loop หลายรายการ และป้ายกำกับสำหรับ Loop ที่เกี่ยวข้อง
เขียนข้อมูลเอาต์พุต
เมื่อ Test Lab เปิดเกมของคุณ ระบบจะระบุ URL ที่ชี้ไปยังไฟล์ผลลัพธ์ในเครื่องบนอุปกรณ์ทดสอบ ซึ่งเข้าถึงได้โดยใช้ launchIntent.getData() เกมของคุณสามารถเขียนผลการทดสอบ เมตริกประสิทธิภาพ และบันทึก (logFile) ไปยังตำแหน่งนี้ได้โดยตรงในระหว่างการทดสอบ
คุณสามารถเขียนเนื้อหาใดก็ได้ลงใน logFile เช่น ข้อความธรรมดา ข้อมูล CSV เวลาในการแสดงผลเฟรม หรือรายงานการวินิจฉัยที่กำหนดเอง ไม่มีข้อจำกัดหรือข้อกำหนดการจัดรูปแบบสำหรับเนื้อหาที่คุณเขียน โดยจะบันทึกไฟล์เมื่อการทดสอบเสร็จสิ้นและอัปโหลดไปยังที่เก็บข้อมูล Cloud Storage ควบคู่ไปกับอาร์ติแฟกต์การทดสอบอื่นๆ
Test Lab เป็นไปตามแนวทางปฏิบัติแนะนำที่กำหนดไว้สำหรับการแชร์ไฟล์ระหว่างแอปที่อธิบายไว้ในการแชร์ไฟล์
ในเมธอด onCreate() ของกิจกรรมซึ่งเป็นที่อยู่ของ Intent คุณสามารถเรียกข้อมูลและตรวจสอบไฟล์เอาต์พุตข้อมูลได้โดยเรียกใช้โค้ดต่อไปนี้
Kotlin
val launchIntent = intent val logFile = launchIntent.data logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") // ... }
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); // ... }
หากต้องการเขียนลงในไฟล์จากฝั่ง C++ ของแอปเกม คุณสามารถส่งตัวบอกไฟล์แทนเส้นทางไฟล์ได้ ดังนี้
Kotlin
val launchIntent = intent val logFile = launchIntent.data var fd = -1 logFile?.let { Log.i(TAG, "Log file ${it.encodedPath}") fd = try { contentResolver .openAssetFileDescriptor(logFile, "w")!! .parcelFileDescriptor .fd } catch (e: FileNotFoundException) { e.printStackTrace() -1 } catch (e: NullPointerException) { e.printStackTrace() -1 } } // C++ code invoked here. // native_function(fd);
Java
Intent launchIntent = getIntent(); Uri logFile = launchIntent.getData(); int fd = -1; if (logFile != null) { Log.i(TAG, "Log file " + logFile.getEncodedPath()); try { fd = getContentResolver() .openAssetFileDescriptor(logFile, "w") .getParcelFileDescriptor() .getFd(); } catch (FileNotFoundException e) { e.printStackTrace(); fd = -1; } catch (NullPointerException e) { e.printStackTrace(); fd = -1; } } // C++ code invoked here. // native_function(fd);
C++
#include <unistd.h> JNIEXPORT void JNICALL Java_my_package_name_MyActivity_native_function(JNIEnv *env, jclass type, jint log_file_descriptor) { // The file descriptor needs to be duplicated. int my_file_descriptor = dup(log_file_descriptor); }
ตัวอย่างไฟล์เอาต์พุต
แม้ว่า Test Lab จะไม่กำหนดรูปแบบเฉพาะสำหรับ logFile ของคุณ แต่การจัดโครงสร้างเอาต์พุตเป็น JSON ที่ตรงกับสคีมาด้านล่างจะช่วยให้คอนโซล Firebase (https://console.firebase.google.com/project/_/testlab) แยกวิเคราะห์และแสดงเมตริกสรุปสำหรับการทดสอบ Game Loop ได้
รายละเอียดสำคัญเกี่ยวกับตัวอย่างนี้
- ผู้ให้ข้อมูล: คุณ (นักพัฒนาซอฟต์แวร์ที่ทำการทดสอบ) มีหน้าที่รับผิดชอบในการคำนวณและเขียนเมตริกทั้งหมดลงในไฟล์นี้จากโค้ดเกมของคุณ Test Lab จะไม่รวบรวมหรือสร้างจุดข้อมูลเหล่านี้ให้คุณโดยอัตโนมัติ
- การเพิ่มช่องที่กำหนดเอง: พื้นที่ที่ทำเครื่องหมายเป็น
/.../บ่งบอกว่าคุณสามารถเพิ่มคู่คีย์-ค่าที่กำหนดเองได้ตามต้องการ (เช่น"rendered_vertices": 12000หรือ"ai_error_count": 0) คุณสามารถเพิ่มพร็อพเพอร์ตี้ JSON ที่ถูกต้องลงในเอาต์พุตเมื่อเขียนไฟล์จากแอป ตราบใดที่ชื่อช่องไม่ขัดแย้งกับช่องสคีมา เช่นnameหรือstart_timestamp - ตำแหน่งที่จะค้นหาไฟล์เอาต์พุต: หลังจากที่การทดสอบเสร็จสมบูรณ์ ระบบจะจัดเก็บไฟล์เอาต์พุตดิบและดาวน์โหลดได้ในที่เก็บข้อมูลผลลัพธ์ Cloud Storage (
GCS) ของโปรเจ็กต์ภายในไดเรกทอรีอาร์ติแฟกต์การเรียกใช้การทดสอบ นอกจากนี้ คุณยังดูและตรวจสอบเอาต์พุตที่แยกวิเคราะห์แล้วได้ในหน้า Test Lab ของคอนโซล Firebase
ตัวอย่างไฟล์เอาต์พุต JSON ที่มีโครงสร้างมีดังนี้
{
"name": "test name",
"start_timestamp": 0, // Timestamp of the test start (in us).
Can be absolute or relative
"driver_info": "...",
"frame_stats": [
{
"timestamp": 1200000, // Timestamp at which this section was written
It contains value regarding the period
start_timestamp(0) -> this timestamp (1200000 us)
"avg_frame_time": 15320, // Average time to render a frame in ns
"nb_swap": 52, // Number of frame rendered
"threads": [
{
"name": "physics",
"Avg_time": 8030 // Average time spent in this thread per frame in us
},
{
"name": "AI",
"Avg_time": 2030 // Average time spent in this thread per frame in us
}
],
/.../ // Any custom field you want (vertices display on the screen, nb units …)
},
{
// Next frame data here, same format as above
}
],
"loading_stats": [
{
"name": "assets_level_1",
"total_time": 7850, // in us
/.../
},
{
"name": "victory_screen",
"total_time": 554, // in us
/.../
}
],
/.../, // You can add custom fields here
}
Game Loop หลายรายการ
คุณอาจพบว่าการเรียกใช้ Game Loop หลายรายการในแอปมีประโยชน์ โดย Loop คือการเรียกใช้แอปเกมตั้งแต่ต้นจนจบอย่างสมบูรณ์ เช่น หากเกมมีหลายระดับ คุณอาจต้องการให้มี Game Loop 1 รายการเพื่อเปิดแต่ละระดับ แทนที่จะมี Game Loop 1 รายการที่วนซ้ำทุกระดับ ด้วยวิธีนี้ หากแอปขัดข้องที่เลเวล 32 คุณจะเปิด Game Loop นั้นได้โดยตรงเพื่อจำลองการขัดข้องและทดสอบการแก้ไขข้อบกพร่อง
วิธีเปิดใช้แอปให้เรียกใช้หลายลูปพร้อมกัน
หากคุณกำลังทำการทดสอบด้วย Test Loop Manager ให้ทำดังนี้
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Manifest ของแอปภายในองค์ประกอบ
<application><meta-data android:name="com.google.test.loops" android:value="5" />
Intent การเปิดนี้มีลูปเป้าหมายเป็นพารามิเตอร์จำนวนเต็ม ในช่อง
android:valueคุณสามารถระบุจำนวนเต็มตั้งแต่ 1 ถึง 1024 (จำนวนลูปสูงสุดที่อนุญาตสำหรับการทดสอบครั้งเดียว) โปรดทราบว่าการวนซ้ำจะจัดทำดัชนีโดยเริ่มจาก 1 ไม่ใช่ 0ในแอป Test Loop Manager หน้าจอการเลือกจะปรากฏขึ้นเพื่อให้คุณเลือกลูปที่ต้องการเรียกใช้ หากเลือกหลายลูป แต่ละลูปจะเปิดขึ้นตามลำดับหลังจากลูปก่อนหน้าเสร็จสมบูรณ์
หากคุณกำลังทำการทดสอบด้วยคอนโซล Firebase ให้ป้อนรายการหรือช่วงของหมายเลขลูปในช่องสถานการณ์
หากคุณทำการทดสอบด้วย gcloud CLI ให้ระบุรายการหมายเลขลูปโดยใช้แฟล็ก
--scenario-numbersเช่น--scenario-numbers=1,3,5จะเรียกใช้ลูป 1, 3 และ 5หากคุณเขียน C++ และต้องการเปลี่ยนลักษณะการทำงานของลูป ให้ส่งข้อมูลเพิ่มเติมต่อไปนี้ไปยังโค้ด C++ แบบเนทีฟ
Kotlin
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
ตอนนี้คุณสามารถเปลี่ยนลักษณะการทำงานของลูปตามค่า
intที่ได้
ติดป้ายกำกับ Game Loop
เมื่อติดป้ายกำกับ Game Loop ด้วยป้ายกำกับสถานการณ์อย่างน้อย 1 รายการ คุณและทีม QA จะเปิดชุด Game Loop ที่เกี่ยวข้อง (เช่น "Game Loop ความเข้ากันได้ทั้งหมด") และทดสอบในเมทริกซ์เดียวได้อย่างง่ายดาย คุณสามารถสร้างป้ายกำกับของคุณเองหรือใช้ป้ายกำกับที่กำหนดไว้ล่วงหน้าซึ่ง Test Lab มีให้ ดังนี้
com.google.test.loops.player_experience: สำหรับลูปที่ใช้เพื่อจำลองประสบการณ์ของผู้ใช้จริงเมื่อเล่นเกม เป้าหมายของการทดสอบด้วยลูปเหล่านี้คือการค้นหาปัญหาที่ผู้ใช้จริงอาจพบขณะเล่นเกมcom.google.test.loops.gpu_compatibility: สำหรับการวนซ้ำที่ใช้เพื่อทดสอบปัญหาเกี่ยวกับ GPU เป้าหมายของการทดสอบด้วยลูปเหล่านี้คือการเรียกใช้โค้ด GPU ที่อาจทำงานไม่ถูกต้องในเวอร์ชันที่ใช้งานจริง เพื่อแสดงปัญหาเกี่ยวกับฮาร์ดแวร์และไดรเวอร์com.google.test.loops.compatibility: สำหรับลูปที่ใช้ทดสอบปัญหาความเข้ากันได้ในวงกว้าง ซึ่งรวมถึงปัญหา I/O และปัญหา OpenSSLcom.google.test.loops.performance: สำหรับการวนซ้ำที่ใช้เพื่อทดสอบประสิทธิภาพของอุปกรณ์ เช่น เกมอาจทำงานที่การตั้งค่ากราฟิกที่ซับซ้อนที่สุดเพื่อดูว่าอุปกรณ์ใหม่ทำงานอย่างไร
วิธีเปิดใช้แอปเพื่อเรียกใช้การทดสอบซ้ำที่มีป้ายกำกับเดียวกัน
หากคุณกำลังทำการทดสอบด้วย Test Loop Manager ให้ทำดังนี้
ในไฟล์ Manifest ของแอป ให้เพิ่มบรรทัดข้อมูลเมตาต่อไปนี้และแทนที่ LABEL_NAME ด้วยป้ายกำกับที่คุณเลือก
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
ในช่อง
android:valueคุณสามารถระบุช่วงหรือชุดจำนวนเต็มตั้งแต่ 1 ถึง 1024 (จำนวนลูปสูงสุดที่อนุญาตสำหรับการทดสอบครั้งเดียว) ซึ่งแสดงถึงลูปที่คุณต้องการติดป้ายกำกับ โปรดทราบว่าลูปจะได้รับการจัดทำดัชนีโดยเริ่มจาก 1 ไม่ใช่ 0 ตัวอย่างเช่นandroid:value="1,3-5"จะใช้ LABEL_NAME กับลูป 1, 3, 4 และ 5ในแอป Test Loop Manager ให้ป้อนป้ายกำกับอย่างน้อย 1 รายการในช่องป้ายกำกับ
หากคุณกำลังทำการทดสอบด้วยคอนโซล Firebase ให้ป้อนป้ายกำกับอย่างน้อย 1 รายการในช่องป้ายกำกับ
หากคุณทำการทดสอบด้วย gcloud CLI ให้ระบุป้ายกำกับสถานการณ์อย่างน้อย 1 รายการโดยใช้แฟล็ก
--scenario-labels(เช่น--scenario-labels=performance,gpu)
การสนับสนุนการอนุญาตให้ใช้สิทธิแอป
Test Lab รองรับแอปที่ใช้บริการการอนุญาตให้ใช้สิทธิแอปที่ Google Play มีให้บริการ หากต้องการตรวจสอบการอนุญาตให้ใช้สิทธิให้สำเร็จเมื่อทดสอบแอปด้วย Test Lab คุณต้องเผยแพร่แอปไปยังช่องทางการผลิตใน Play Store หากต้องการทดสอบแอปในเวอร์ชันอัลฟ่าหรือเบต้าโดยใช้ Test Lab ให้นำการตรวจสอบการอนุญาตให้ใช้สิทธิออกก่อนอัปโหลดแอปไปยัง Test Lab
ปัญหาที่ทราบ
การทดสอบ Game Loop ใน Test Lab มีปัญหาที่ทราบดังต่อไปนี้
- ข้อขัดข้องบางรายการไม่รองรับ Backtrace ตัวอย่างเช่น บิลด์ที่เผยแพร่บางรายการอาจระงับเอาต์พุตของกระบวนการ
debuggerdโดยใช้prctl(PR_SET_DUMPABLE, 0)ดูข้อมูลเพิ่มเติมได้ที่debuggerd - ปัจจุบันระบบไม่รองรับ API ระดับ 19 เนื่องจากข้อผิดพลาดเกี่ยวกับสิทธิ์ในไฟล์