Android Açık Kaynak Projesi (AOSP), uygulamanızın çeşitli bölümlerini test etmek için çeşitli araçlar ve test paketleri sunar. Bu bölümdeki sayfaları kullanmadan önce aşağıdaki terimleri bilmeniz gerekir:
- Android ile uyumlu cihaz
- Android SDK ve NDK kullanılarak üçüncü taraf geliştiriciler tarafından yazılan tüm üçüncü taraf uygulamalarını çalıştırabilen bir cihaz. Android uyumlu cihazlar, Uyumluluk Tanımı Belgesi (CDD) şartlarına uymalı ve Uyumluluk Test Paketi (CTS)'ni geçmelidir. Android ile uyumlu cihazlar, Android ekosistemine katılmaya uygundur. Bu ekosistemde Google Play'in potansiyel lisanslanması, Google Mobil Hizmetleri (GMS) uygulama ve API paketinin potansiyel lisanslanması ve Android ticari markasının kullanımı yer alır. Android kaynak kodunu herkes kullanabilir ancak bir cihazın Android ekosisteminin parçası olarak kabul edilmesi için Android ile uyumlu olması gerekir.
- yapı
- Yerel sorun gidermeyi sağlayan derlemeyle ilgili bir günlük.
- Uyumluluk Tanımı Belgesi (CDD)
- Android ile uyumlu bir cihazın yazılım ve donanım gereksinimlerini listeleyen bir belge.
- Uyumluluk Test Paketi (CTS)
İkili dosya olarak veya AOSP'de kaynak olarak indirilebilen ücretsiz, ticari düzeyde bir test paketi. CTS, günlük iş akışınıza entegre edilmek üzere tasarlanmış bir dizi birim testidir. CTS'nin amacı, uyumsuzlukları ortaya çıkarmak ve yazılımın geliştirme süreci boyunca uyumlu kalmasını sağlamaktır.
CTS ve platform testleri aynı anda olamaz. Genel yönergelerden bazıları şunlardır:
- Bir test, çerçeve API işlevlerinin veya davranışlarının doğruluğunu onaylıyorsa ve testin OEM iş ortakları arasında zorunlu kılınması gerekiyorsa bu test CTS'de yer almalıdır.
- Bir test, platform geliştirme sırasında gerilemeleri yakalamak için tasarlanmışsa, yürütmek için ayrıcalıklı izin gerektirebilir ve uygulama ayrıntılarına (AOSP'de yayınlandığı şekliyle) bağlı olabilir. Bu durumda, platform testi olmalıdır.
- Google Mobil Hizmetleri (GMS)
Cihazlara önceden yüklenebilen Google uygulamaları ve API'leri koleksiyonu.
- GoogleTest (GTest)
C++ test ve sahte nesne oluşturma çerçevesi. GTest ikilileri genellikle daha düşük seviyeli soyutlama katmanlarına erişir veya çeşitli sistem hizmetlerine karşı ham IPC gerçekleştirir. GTest'in test yaklaşımı genellikle test edilen hizmetle yakından ilişkilidir. CTS, GTest çerçevesini içerir.
- enstrümantasyon testi
am instrument
komutuyla başlatılan özel bir test yürütme ortamı. Bu ortamda, hedeflenen uygulama işlemi yeniden başlatılır ve temel uygulama bağlamıyla başlatılır. Ayrıca, uygulama işlemi sanal makinesinde bir enstrümantasyon iş parçacığı başlatılır. CTS, araç testleri içerir.- Logcat
Cihazın hata verdiği zamanlardaki yığın izlemeleri ve
Log
sınıfıyla uygulamanızdan yazdığınız mesajlar da dahil olmak üzere sistem mesajlarının günlüğünü oluşturan bir komut satırı aracıdır.- logging
Hatalar gibi bilgisayar sistemi etkinliklerini takip etmek için günlük kullanma. Android'de günlük kaydı, Logcat aracında birleştirilen standartların karışımı nedeniyle karmaşıktır.
- postsubmit test
Ortak bir çekirdek dalına yeni bir yama gönderildiğinde gerçekleştirilen Android testi. Kısmi bir dal adı olarak
aosp_kernel
girdiğinizde, sonuçların bulunduğu çekirdek dallarının listesini görebilirsiniz. Örneğin,android-mainline
ile ilgili sonuçları https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid adresinde bulabilirsiniz.- ön gönderme testi
Hataların ortak çekirdeklere eklenmesini önlemek için kullanılan bir testtir.
- Ticaret Federasyonu
Android cihazlarda test çalıştırmak için tasarlanmış sürekli test çerçevesi. Tradefed olarak da adlandırılır. Örneğin, Tradefed, Compatibility Test Suite ve Vendor Test Suite testlerini çalıştırmak için kullanılır.
- Tedarikçi Test Paketi (VTS)
Android testleri, test odaklı geliştirme sürecini destekleme ve donanım soyutlama katmanı (HAL) ile işletim sistemi çekirdeği testlerini otomatikleştirmeye yönelik kapsamlı özellikler.
Platform test türleri
Bir platform testi genellikle Android sistem hizmetlerinden veya HAL katmanlarından biri ya da daha fazlasıyla etkileşime girer, test edilen konunun işlevlerini kullanır ve test sonucunun doğruluğunu onaylar. Platform testi:
- (1. Tür) Android çerçevesini kullanarak çerçeve API'lerini kullanın. Kullanılan belirli API'ler şunları içerebilir:
- Üçüncü taraf uygulamaları için tasarlanmış herkese açık API'ler
- Ayrıcalıklı uygulamalar için tasarlanmış gizli API'ler (ör. sistem API'leri veya özel API'ler) (
@hide
,protected
,package private
)
- (Tür 2) Android sistem hizmetlerini doğrudan ham bağlayıcı veya IPC proxy'leri kullanarak çağırın.
- (3. tür) Düşük düzeyli API'ler veya IPC arayüzleri kullanarak doğrudan HAL'lerle etkileşim kurun.
1. ve 2. tür testler genellikle enstrümantasyon testleri, 3. tür testler ise genellikle GTest'lerdir.
Sırada ne var?
Daha ayrıntılı bilgi için okuyabileceğiniz belgelerin listesini aşağıda bulabilirsiniz:
Android mimarisi hakkında bilgi edinmediyseniz Mimariye genel bakış başlıklı makaleyi inceleyin.
Android ile uyumlu bir cihaz oluşturuyorsanız Android uyumluluk programına genel bakış başlıklı makaleyi inceleyin.
Enstrümantasyon, işlevsel, metrik ve JAR ana makine testlerini bir platform sürekli test hizmetine entegre etmek için Test geliştirme iş akışı başlıklı makaleyi inceleyin.
Cihazlarınızı güvenlik açıklarına karşı tespit edip güçlendirmek için Güvenlik testi başlıklı makaleyi inceleyin.
HAL ve çekirdek uygulamalarınızı test etme hakkında bilgi edinmek için Vendor Test Suite (VTS) ve altyapı başlıklı makaleyi inceleyin.
Uygulama testi için Android uygulamalarını test etmenin temelleri başlıklı makaleyi okuyun ve sağlanan örnekleri kullanarak Advanced Android in Kotlin 05.1:Testing Basics başlıklı codelab'i tamamlayın.
Depo kancaları aracılığıyla kullanabileceğiniz temel gönderme öncesi test hakkında bilgi edinin. Bu kancalar, devam etmeden önce (ör. bir commit yükleme) linters çalıştırmak, biçimlendirmeyi kontrol etmek ve birim testlerini tetiklemek için kullanılabilir. Bu kancalar varsayılan olarak devre dışıdır. Daha fazla bilgi için AOSP Preupload Hooks başlıklı makaleyi inceleyin.
Günlük kaydı hakkında daha fazla bilgi edinmek için Günlük kaydını anlama başlıklı makaleyi inceleyin.
Android kodunda hata ayıklama hakkında bilgi edinmek için Yerel Android platform kodunda hata ayıklama başlıklı makaleyi inceleyin.