Test paketi
Bir testin VTS'nin parçası olabilmesi için Android.bp
içinde aşağıdaki ayara sahip olması gerekir.
test_suites: ["vts"],
Ayrıca, testi pakete eklemek general-tests
, ön gönderme kontrollerinde kullanılan bir Test Eşleme paketinin parçası olmasını sağlar.
Test yapılandırması
Çoğu durumda, Trade Federation tarafından VTS testi çalıştırmak için kullanılan bir XML dosyası olan test yapılandırması, derleme sırasında otomatik olarak oluşturulur. Ancak test yapılandırmasını özelleştirebilirsiniz.
Özelleştirilmiş bir test yapılandırma dosyası oluşturma
Test düzeneğinin nasıl çalıştığını ve her test çalıştırıcısı arasındaki farkı anlamak gerektiğinden sıfırdan yeni bir test XML dosyası oluşturmak karmaşık olabilir. Otomatik olarak oluşturulan test yapılandırma dosyası, bu süreci kolaylaştırmak için tasarlanmıştır.
Test XML dosyasını özelleştirmeniz gerekiyorsa otomatik olarak oluşturulan dosyayı başlangıç noktası olarak kullanabilirsiniz.
Otomatik olarak oluşturulan test yapılandırma dosyasını bulmak için önce aşağıdaki şekilde gösterildiği gibi make
komutunu çalıştırarak yapılandırmayı oluşturun.
$ m VtsHalUsbV1_1TargetTest
Aşağıda gösterildiği gibi, derleme dizininizde yapılandırma dosyasını modül adına göre arayabilirsiniz.
$ find out/ -name VtsHalUsbV1_1TargetTest.config
Dosyanın birden fazla kopyası olabilir ve bunlardan herhangi birini kullanabilirsiniz.
.config
dosyasını, Android.bp
dosyasının bulunduğu dizine kopyalayın.
Android.bp
dosyasında yalnızca bir test modülü varsa XML dosyasını AndroidTest.xml
olarak yeniden adlandırabilirsiniz. Bu durumda derleme sistemi, bu dosyayı test modülünün yapılandırma dosyası olarak otomatik olarak kullanır. Aksi takdirde, aşağıdaki örnekte gösterildiği gibi modüle bir test_config
özelliği ekleyin.
test_config: "VtsHalUsbV1_1TargetTest.xml",
Artık üzerinde çalışabileceğiniz ve özelleştirmeyi uygulayabileceğiniz bir test yapılandırma dosyanız var.
Testin adb root ile çalıştırılmasını zorlama
Çoğu VTS testi için kök ayrıcalığı gerekir. Test yapılandırma dosyası otomatik olarak oluşturulmuşsa Android.bp
öğesine aşağıdaki özelliği ekleyebilirsiniz.
require_root: true,
Test yapılandırma dosyası özelleştirilmişse test XML dosyasına aşağıdakileri ekleyin.
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
Test sırasında çerçeveyi durdurma
Birçok VTS testi, çalışmak için Android çerçevesi gerektirmez ve testin çerçeve durdurulmuş halde çalıştırılması, testin cihazdaki hatalardan etkilenmeden kararlı bir şekilde çalışmasına olanak tanır. Test yapılandırma dosyası otomatik olarak oluşturulmuşsa Android.bp
öğesine aşağıdaki özelliği ekleyebilirsiniz.
disable_framework: true,
Test yapılandırma dosyası özelleştirilmişse test XML dosyasına aşağıdakileri ekleyin.
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
Ek test bağımsız değişkenleri ekleme
Bazı gtest testlerinin çalışması daha uzun sürebilir. Bu gibi durumlarda, XML dosyasına test çalıştırıcı seçenekleri ekleyebilirsiniz.
Örneğin, aşağıdaki girişteki native-test-timeout
ayarı, testin varsayılan 1 dakika yerine 3 dakikalık bir zaman aşımıyla çalışmasına olanak tanır.
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
Minimum API düzeyini zorunlu kılma
Bazı VTS testleri yalnızca minimum API düzeyine sahip cihazlarda çalıştırılabilir. Test yapılandırma dosyası otomatik olarak oluşturulmuşsa Android.bp
öğesine aşağıdaki özelliği ekleyebilirsiniz.
min_shipping_api_level: 29,
veya
vsr_min_shipping_api_level: 202404,
Test yapılandırma dosyası özelleştirilmişse test XML dosyasına aşağıdaki komutu ekleyin.
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
veya
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="vsr-min-api-level" value="202404" />
</object>
API düzeyi özellikleri
Android 12, bu cihazlarda satıcı resimlerinin API seviyesini göstermek için ro.board.first_api_level
ve ro.board.api_level
özelliklerini tanımlar. Bu özellikler ro.product.first_api_level
ile birleştirildiğinde, test paketleri cihazlar için uygun test senaryolarını seçer.
Android 13, ro.vendor.api_level
özelliğini tanımlar. Bu özellik, ro.product.first_api_level
, ro.board.first_api_level
ve ro.board.api_level
özellikleri kullanılarak gerekli satıcı API düzeyi hesaplanarak otomatik olarak ayarlanır.
Daha fazla bilgi için Sağlayıcı API düzeyi başlıklı makaleyi inceleyin.
ro.board.first_api_level
ro.board.first_api_level
özelliği, tedarikçi dondurma için uygun bir SoC'nin tedarikçi resimleri ilk kez bu özellik ile yayınlandığında API düzeyidir. Bu, cihazın başlatma API düzeyine değil, yalnızca bu değeri tanımlayan SoC'nin ilk API düzeyine bağlıdır. Değer, SoC'nin kullanım ömrü boyunca kalıcıdır.
Cihaz üreticileri, ro.board.first_api_level
değerini ayarlamak için device.mk
dosyalarında BOARD_SHIPPING_API_LEVEL
değerini aşağıdaki örnekte gösterildiği gibi tanımlayabilir:
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
Cihazda ro.board.first_api_level özelliğini otomatik olarak vendor/build.prop
olarak tanımlar. Özellik, satıcı init
süreci tarafından ayarlanır.
ro.board.api_level
ro.board.api_level
özelliği, satıcı API'sinin dondurulduğu YYYYMM
biçimine sahip satıcı resimlerinin mevcut satıcı API düzeyidir. Derleme sistemi tarafından otomatik olarak ayarlanır.
ro.vendor.api_level
ro.vendor.api_level
özelliği, satıcı resimlerinin desteklemesi gereken API düzeyini göstermek için Android 13'te kullanıma sunuldu. Bu, ro.product.first_api_level
olarak otomatik ayarlanır veya ro.board.first_api_level
mevcutsa ve ro.board.api_level
, ro.product.first_api_level
'dan daha eski bir API düzeyine ayarlanmışsa ro.board.api_level
olarak ayarlanır. Sürüm, ro.product.first_api_level
sürümünden büyük veya bu sürüme eşit bir sürüm olarak ayarlanmışsa ilgili satıcı API düzeyiyle değiştirilir.35
Tedarikçi resim yükseltmesi gerektiren tedarikçi uygulaması testleri, bu özelliğe başvurularak SoC için tedarikçi şartlarının dışında tutulabilir.
VTS kullanarak parçalama işlemi
Android 10 veya sonraki sürümlerde, aşağıdaki talimatları uygulayarak hem VTS hem de CTS-on-GSI planlarıyla test yaparken parçalama işlemini birden fazla cihazda gerçekleştirebilirsiniz.
run vts --shard-count <number of devices> -s <device serial> ...
Bu komut, VTS planını parçalara ayırır ve bunları birden fazla cihazda çalıştırır.
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
Bu komut, CTS-on-GSI planını parçalara ayırır ve bunları birden fazla cihazda çalıştırır.