Oyun uygulamaları farklı özelliklerde geliştirildiğinde oyun testlerini otomatikleştirmek Kullanıcı arayüzü çerçeveleri. Oyun Döngüsü testleri yerel testlerinizi Test Lab ve seçtiğiniz cihazlarda kolayca çalıştırabilirsiniz. Oyun Döngüsü testi oyun uygulamanızda test ederken gerçek bir oyuncunun eylemlerini simüle edin. Bu kılavuzunda, Oyun Döngüsü testinin nasıl çalıştırılacağı, ardından testinizi nasıl görüntüleyip yöneteceğiniz gösterilir. Firebase konsolunda gösterilir.
Oyun motorunuza bağlı olarak testleri bir veya daha fazla test motoruyla uygulayabilirsiniz tekrar etkinleştirebilirsiniz. Döngü, bir testin tam ya da kısmi bir şekilde optimize edebilirsiniz. Oyun döngüleri şu amaçlarla kullanılabilir:
- Oyununuzda bir seviyeyi, son kullanıcının oynadığı gibi yönetin. Şunları yapabilirsiniz: kullanıcının girişini komut dosyası kullanarak, kullanıcının boşta kalmasını sağlayabilir veya kullanıcı için yapay zeka ile birleştirmeyi deneyin (ör. yarış arabanız varsa bir oyun uygulamasına sahip olmanız gerekir. Bir Google Hesabı'na kolayca sürücü (kullanıcının girişinden sorumludur).
- Cihazların destekleyip desteklemediğini görmek için oyununuzu en yüksek kalite ayarında çalıştırın.
- Teknik test yapın (birden fazla gölgelendirici derleyin, çalıştırın, çıkışının beklendiği gibi olup olmadığını kontrol edin vb.).
Oyun Döngüsü testi tek bir test cihazında, test cihazı grubunda Test Lab tarihinde. Ancak, sanal makinelerde Oyun Döngüsü testlerini çalıştırmanızı çünkü fiziksel cihazlara kıyasla daha düşük grafik kare hızına sahipler.
Başlamadan önce
Bir test uygulamak için önce uygulamanızı Oyun Döngüsü testlerine göre yapılandırmanız gerekir.
Uygulama manifestinizde, etkinliğinize yeni bir intent filtresi ekleyin:
<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>
Bu, Test Lab ürününün belirli bir isteyebilirsiniz.
Kodunuza (
onCreate
yöntem beyanının içinde öneririz) takip etmek için:Kotlin+KTX
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 }
Bu sayede etkinliğiniz, başlatan niyeti kontrol edebilir. Ayrıca transkriptinizi Bu kodu daha sonra ekleyin (örneğin, oyununuzu ilk kez yükledikten sonra) .
Önerilir: Testin sonunda şunları ekleyin:
Kotlin+KTX
yourActivity.finish()
Java
yourActivity.finish();
Bu işlem, Oyun Döngüsü testi tamamlandığında uygulamanızı kapatır. Test yöntemi, uygulamanızın kullanıcı arayüzü çerçevesine sahip olduğunuzdan, uygulamanızı kapattığınızda emin olmanız gerekir.
Oyun Döngüsü testi oluştur ve çalıştır
Uygulamanızı Oyun Döngüsü testleri için yapılandırdıktan sonra hemen bir test edip oyun uygulamanızda çalıştırın. Bir testi şurada çalıştırmayı seçebilirsiniz: Firebase konsolunu veya gcloud'u kullanarak Test Lab komut satırı arayüzü (KSA) veya Test Döngüsü'nü kullanarak yerel cihazda Yönetici.
Yerel cihazda çalıştır
Test Lab aracının Test Döngüsü Yöneticisi, Game Loop testlerini entegre edip yerel cihazlarınızda çalıştırın. Ayrıca, Kalite Güvencesi ekibinin cihazlarında aynı oyun döngülerini çalıştırması.
Test Döngüsü Yöneticisi'ni kullanarak yerel bir cihazda test çalıştırmak için:
- Test Döngüsü Yöneticisi'ni indirin
uygulamayı yüklemek için aşağıdaki adımları uygulayın:
adb install testloopmanager.apk
- Cihazınızda, telefonunuzda Test Loop Apps uygulamasını açın veya tablete yerleştiriyoruz. Uygulama, cihazınızda bulunan ve şu özelliklere sahip uygulamaların bir listesini görüntüler: çalıştırılabilir. Oyun uygulamanızı burada göremiyorsanız Amaç filtreniz, anahtarın ilk adımında belirtilenle Başlamadan önce bölümü.
- Oyun uygulamanızı, ardından çalıştırmak istediğiniz döngü sayısını seçin. Not: Bu adımda, yalnızca rastgele bir döngü oluşturmak yerine döngülerin bir alt kümesini çalıştırmayı bir döngü oluşturabilirsiniz. Daha fazla bilgi için aynı anda birden fazla döngü çalıştırmakla ilgili daha fazla bilgi için İsteğe bağlı özellikler bölümüne bakın.
- Testi çalıştır'ı tıklayın. Testiniz hemen çalışmaya başlar.
Test Lab uygulamasında çalıştır
Test Lab içinde bir Oyun Döngüsü testi çalıştırmak için Firebase konsolu veya gcloud CLI Sizden önce Henüz yapmadıysanız Firebase konsoluna gidip bir proje oluşturun.
Firebase konsolunu kullan
- Firebase konsolunda sol panelden Test Lab simgesini tıklayın.
- İlk Testinizi Çalıştırın (veya projenizde Test Çalıştır bir test yaptık.
- Test türü olarak Oyun Döngüsü'nü seçip Devam'ı tıklayın.
- Göz at'ı tıklayın, ardından uygulamanızın
.apk
dosyasına göz atın. Not: Bu adımda, yalnızca rastgele bir döngü oluşturmak yerine döngülerin bir alt kümesini çalıştırmayı bir döngü oluşturabilirsiniz. Daha fazla bilgi için aynı anda birden fazla döngü çalıştırmayı İsteğe bağlı özellikler. - Devam'ı tıklayın.
- Uygulamanızı test etmek için kullanılacak fiziksel cihazları seçin.
- Testleri Başlat'ı tıklayın.
Firebase konsolunu kullanmaya başlama hakkında daha fazla bilgi için bkz. Firebase konsoluyla teste başlayın.
gcloud komut satırını (KSA) kullanma
Henüz yapmadıysanız Google Cloud SDK'yı indirip yükleyin
Google Hesabınızı kullanarak gcloud KSA'da oturum açın:
gcloud auth login
Firebase projenizi,
PROJECT_ID
öğesinin bulunduğu gcloud'da ayarlayın Firebase projenizin kimliği:gcloud config set project PROJECT_ID
İlk testinizi çalıştırın:
gcloud firebase test android run \ --type=game-loop --app=<var>path-to-apk</var> \ --device model=herolte,version=23
.
gcloud KSA'yı kullanmaya başlama hakkında daha fazla bilgi için bkz. gcloud komut satırından test etmeye başlayın.
İsteğe bağlı özellikler
Test Lab, verilerinizi daha da özelleştirmenize olanak tanıyan isteğe bağlı bazı özellikler sunar. çıkış verilerini yazma yeteneği, birden fazla oyun için destek dahil testler döngüler ve ilgili döngüler için etiketler.
Çıkış verilerini yazma
Oyun Döngüsü testiniz
launchIntent.getData()
yöntemini çağırın. Bir test çalıştırdıktan sonra
Firebase konsolunun Test Lab bölümündeki çıkış verilerini (bkz.
Oyun Döngüsü testi çıkış dosyası örneği).
Test Lab, uygulamalar arasında dosya paylaşımıyla ilgili şu en iyi uygulamaları takip ediyor:
Dosya Paylaşma.
Etkinliğinizin onCreate()
yönteminde (amacınızın bulunduğu yer)
aşağıdaki kodu çalıştırarak veri çıkış dosyanızı kontrol edebilirsiniz:
Kotlin+KTX
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()); // ... }
Dosyaya oyun uygulamanızın C++ tarafından yazmak istiyorsanız dosya yolu yerine dosya açıklayıcısını iletin:
Kotlin+KTX
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); }
Çıkış dosyası örneği
Oyunu görüntülemek için çıkış veri dosyalarını (aşağıdaki örnek gibi biçimlendirilmiştir) kullanabilirsiniz.
döngü test sonuçlarını Firebase konsolunun Test Lab bölümünde görebilirsiniz.
/.../
olarak gösterilen alanlar, yalnızca
bu dosyada kullanılan diğer alanların adlarıyla çakışmazlar:
{ "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 }
Birden fazla oyun döngüsü
Uygulamanızda birden fazla oyun döngüsü çalıştırmak faydalı olabilir. Döngü, başından sonuna kadar tam oynanmasını sağlayabilirsiniz. Örneğin, Oyununuzda birden fazla seviye varsa bu seviyeyi tamamlamak için tüm seviyeleri yineleyen bir döngü yerine her seviyeyi başlatın. Böylece, uygulamanız 32. seviyede kilitlenirse doğrudan oyunu başlatabilirsiniz döngüsünü uygulayın.
Uygulamanızın aynı anda birden fazla döngü çalıştırmasını sağlamak için:
Test Döngüsü Yöneticisi ile bir test çalıştırıyorsanız:
Aşağıdaki satırı uygulamanızın manifest dosyasına,
<application>
öğe:<meta-data android:name="com.google.test.loops" android:value="5" />
Bu başlatma amacı, hedef döngüyü tam sayı parametresi olarak içerir. İçinde
android:value
alanında, 1 - 1024 arasında bir tam sayı ( bir test için izin verilen maksimum döngü sayısı) ekleyebilirsiniz. Not döngülerin 0'dan değil 1'den başlayarak dizine eklenmesini sağlar.Test Döngüsü Yöneticisi uygulamasında çalıştırmak istediğiniz döngüleri seçmenize olanak tanır. Birden fazla her döngü, bir önceki döngüden sonra sırayla başlatılır. gerekir.
Firebase konsoluyla bir test çalıştırıyorsanız bir liste ya da Senaryolar alanındaki döngü sayı aralığını seçin.
gcloud KSA ile test çalıştırıyorsanız döngü numaraları listesi belirtin
--scenario-numbers
işaretini kullanabilirsiniz. Örneğin,--scenario-numbers=1,3,5
1, 3 ve 5. döngüleri çalıştırır.C++ yazıyor ve döngünüzün davranışını değiştirmek istiyorsanız yerel C++ kodunuza ekleme işlemini tamamlayın:
Kotlin+KTX
val launchIntent = intent val scenario = launchIntent.getIntExtra("scenario", 0)
Java
Intent launchIntent = getIntent(); int scenario = launchIntent.getIntExtra("scenario", 0);
Artık döngünüzün davranışını, elde edilen
int
değerine göre değiştirebilirsiniz. değer.
Etiket oyunu döngüleri
Oyun döngülerinizi bir veya daha fazla senaryo etiketiyle etiketlediğinizde bir dizi ilgili oyun döngüsünü (ör. "tüm uyumluluk oyun döngüleri") oluşturur ve bunları tek bir matriste test edebilirsiniz. Kendi etiketlerinizi oluşturabilir veya Test Lab tarafından sunulan önceden tanımlanmış etiketleri kullanın:
com.google.test.loops.player_experience
: Şu işlem için kullanılan döngüler: Oyun oynarken gerçek bir kullanıcı deneyimini yeniden üretmek. Amacı bu döngülerle test, gerçek bir kullanıcının çalışırken karşılaşacağı yardımcı oluyorum.com.google.test.loops.gpu_compatibility
: Test amacıyla kullanılan döngüler için GPU ile ilgili sorunlar. Bu döngülerle testin amacı, ve üretimde düzgün çalışmayabilecek yeni kodların çalıştırılması, donanım ve sürücüler.com.google.test.loops.compatibility
: Test amacıyla kullanılan döngüler G/Ç sorunları ve OpenSSL dahil olmak üzere geniş bir uyumluluk sorunu yelpazesi sorunları.com.google.test.loops.performance
: cihazın performansını görebilirsiniz. Örneğin, bir oyun en karmaşık grafik ayarlarını kullanabilirsiniz.
Uygulamanızın aynı etiketle döngüleri çalıştırmasını sağlamak için:
Test Döngüsü Yöneticisi ile bir test çalıştırıyorsanız:
Uygulamanızın manifest dosyasına aşağıdaki meta veri satırını ekleyin ve İstediğiniz etiketle LABEL_NAME:
<meta-data android:name="com.google.test.loops.LABEL_NAME" android:value="1,3-5" />
android:value
alanında bir aralık veya bir tam sayı grubu belirtebilirsiniz. (tek bir test için izin verilen maksimum döngü sayısı) arasında bir dönüşüm oranına döngüleri temsil eder. Döngülerin dizine 1'den başlar, 0'a değil. Örneğin,android:value="1,3-5"
geçerlidir LABEL_NAME 1, 3, 4 ve 5'i döngüye alır.Test Döngüsü Yöneticisi uygulamasındaki Etiketler bölümüne bir veya daha fazla etiket girin. girin.
Firebase konsoluyla bir test çalıştırıyorsanız bir veya daha fazla değer girin etiketlerini Etiketler alanına yapıştırın.
gcloud KSA ile test çalıştırıyorsanız bir tane belirtin veya daha fazla senaryo etiketi oluşturmak için
--scenario-labels
işareti (ör.--scenario-labels=performance,gpu
) bilgileri gösterilir.
Uygulama lisanslama desteği
Test Lab, Uygulama Lisansları Google Play tarafından sunulan diğer hizmet. Test sırasında lisanslamayı başarıyla kontrol etmek için uygulamanızı Test Lab ile kullanmak için üretim kanalına yayınlamanız gerekir Play Store'da bulabilirsiniz. Uygulamanızı alfa veya beta kanalında test etmek için Test Lab, uygulamanızı şuraya yüklemeden önce lisans kontrolünü kaldırın: Test Lab
Bilinen sorunlar
Test Lab ürünündeki Oyun Döngüsü testlerinde aşağıdaki bilinen sorunlar yaşanmaktadır:
- Bazı kilitlenmeler, geri izlemeleri desteklemez. Örneğin, bazı sürüm derlemeleri
debuggerd
işleminin çıkışını aşağıdakileri kullanarak bastır:prctl(PR_SET_DUMPABLE, 0)
. Daha fazla bilgi edinmek için bkz.debuggerd
. - API Düzeyi 19, dosya izni hataları nedeniyle şu anda desteklenmiyor.