Test kurulumu

Test paketi

Bir testin VTS'ye dahil edilebilmesi için Android.bp bölümünde aşağıdaki ayarlara sahip olması gerekir.

test_suites: ["vts"],

Ayrıca, testi general-tests paketine eklemek, göndermeden önce yapılan kontrollerde kullanılan bir Test Eşleme paketinin parçası olmasını sağlar.

Test yapılandırması

Çoğu durumda, Trade Federation'ın VTS testi çalıştırmak için kullandığı 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 donanımının işleyiş şeklinin yanı sıra her test çalıştırıcı arasındaki farkın anlaşılmasını gerektirdiğ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 başlangıç noktası olarak otomatik olarak oluşturulan dosyayı kullanabilirsiniz.

Otomatik olarak oluşturulmuş test yapılandırma dosyasını bulmak için önce aşağıda gösterildiği gibi, yapılandırmayı derlemek için make komutunu çalıştırın.

$ m VtsHalUsbV1_1TargetTest

Derleme dizininizde, yapılandırma dosyasını aşağıdaki gibi modül adına göre arayabilirsiniz.

$ find out/ -name VtsHalUsbV1_1TargetTest.config

Dosyanın birden fazla kopyası olabilir ve bunların 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. Derleme sistemi, bu dosyayı otomatik olarak test modülünün yapılandırma dosyası 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 özelleştirmeyi uygulayacağınız ve üzerinde çalışacağınız bir test yapılandırma dosyanız var.

Testi adb root ile çalıştırmaya zorlama

Çoğu VTS testinin çalıştırılması için root ayrıcalığı gerekir. Test yapılandırması dosyası otomatik olarak oluşturulduysa Android.bp öğesine aşağıdaki özelliği ekleyebilirsiniz.

require_root: true,

Test yapılandırma dosyası özelleştirildiyse aşağıdakileri test XML dosyasına ekleyin.

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

Test sırasında çerçeveyi durdurma

Birçok VTS testi için Android çerçevesinin çalışması gerekmez. Testi, çerçeve durdurulmuş şekilde çalıştırmak, cihazdaki aksaklıklar nedeniyle etkilenmeden kararlı bir şekilde çalışmasını sağlar. Test yapılandırması dosyası otomatik olarak oluşturulduysa Android.bp öğesine aşağıdaki özelliği ekleyebilirsiniz.

disable_framework: true,

Test yapılandırma dosyası özelleştirildiyse aşağıdakileri test XML dosyasına 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şte yer alan native-test-timeout ayarı, testin varsayılan 1 dakika yerine 3 dakikalık zaman aşımıyla çalışmasına izin verir.

   <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ıl

Bazı VTS testleri yalnızca minimum API düzeyine sahip cihazlarda çalışabilir. Test yapılandırma dosyası otomatik olarak oluşturulduysa aşağıdaki özelliği Android.bp öğesine ekleyebilirsiniz.

min_shipping_api_level: 29,

veya

vsr_min_shipping_api_level: 202404,

Test yapılandırma dosyası özelleştirildiyse 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 cihazlardaki tedarikçi firma resimlerinin API seviyesini göstermek için ro.board.first_api_level ve ro.board.api_level özelliklerini tanımlar. Test takımları, bu özellikleri ro.product.first_api_level ile birleştirerek cihazlar için uygun test örneklerini seçer.

Android 13, ro.product.first_api_level, ro.board.first_api_level ve ro.board.api_level mülkleri kullanılarak gerekli tedarikçi API düzeyi hesaplanarak otomatik olarak ayarlanan ro.vendor.api_level değerini tanımlar.

Daha fazla bilgi için Tedarikçi firma API düzeyi başlıklı makaleye bakın.

ro.board.first_api_level

ro.board.first_api_level mülkü, tedarikçi dondurma için uygun olan bir SoC'nin tedarikçi firma resimleri bu mülkle ilk kez yayınlandığında API düzeyidir. Bu, cihazın başlatma API düzeyine değil, yalnızca SoC'nin bu değeri tanımlayan ilk API düzeyine bağlıdır. Bu değer, SoC'nin kullanım ömrü boyunca kalıcı olur.

Cihaz üreticileri, ro.board.first_api_level değerini ayarlamak için aşağıdaki örnekte gösterildiği gibi device.mk dosyalarında BOARD_SHIPPING_API_LEVEL değerini 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

ro.board.first_api_level özelliği otomatik olarak cihazda vendor/build.prop olarak tanımlanır. Bu özellik, tedarikçi firma init işlemi tarafından ayarlanır.

ro.board.api_level

ro.board.api_level mülkü, 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 mülkü, Android 13'te tedarikçi firma resimlerinin desteklemesi gereken API düzeyini göstermek için kullanıma sunulmuştur. Bu değer, ro.product.first_api_level olarak otomatik olarak ayarlanır. ro.board.first_api_level mevcutsa ve ro.board.api_level, ro.product.first_api_level'ten önceki bir API düzeyine ayarlanmışsa ro.board.api_level olarak ayarlanır. Bu sürüm, ro.product.first_api_level değerinden büyük veya 35 değerine eşit olan sürüme ayarlanmışsa ilgili tedarikçi firma API düzeyiyle değiştirilir. Tedarikçi firma uygulaması için tedarikçi firma resmi yükseltmesi gerektiren testler, bu mülke başvurarak SoC için tedarikçi firma şartlarından hariç tutulabilir.

VTS kullanarak bölme işlemi

Android 10 veya sonraki sürümlerde, aşağıdaki talimatları uygulayarak hem VTS hem de CTS-on-GSI planlarıyla test ederken kırma 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 birden fazla cihazda çalıştırır.

run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...

Bu komut, GSI'deki CTS planını parçalara ayırır ve bunları birden fazla cihazda çalıştırır.