Atest adalah alat baris perintah yang memungkinkan pengguna membangun, menginstal, dan menjalankan Android melakukan pengujian secara lokal, sangat mempercepat pengujian ulang tanpa memerlukan pengetahuan tentang test harness Federasi Perdagangan opsi command line. Halaman ini menjelaskan cara menggunakan Atest untuk menjalankan Android pengujian.
Untuk informasi umum tentang cara menulis pengujian untuk Android, lihat Pengujian Platform Android.
Untuk informasi tentang struktur keseluruhan Atest, lihat Panduan Developer Atest.
Untuk informasi tentang cara menjalankan pengujian dalam file TEST_MAPPING melalui Atest, lihat Menjalankan pengujian di file TEST_MAPPING.
Untuk menambahkan fitur ke Atest, ikuti Alur Kerja Developer Atest.
Menyiapkan lingkungan
Untuk menyiapkan lingkungan Atest Anda, ikuti petunjuk di Menyiapkan lingkungan , Memilih target, dan Membuat kode.
Penggunaan dasar
Perintah Atest mengambil bentuk berikut:
atest test-to-run [optional-arguments]
Argumen opsional
Tabel berikut mencantumkan argumen yang paling sering digunakan. Daftar lengkap adalah
tersedia melalui atest --help
.
Opsi | Opsi panjang | Deskripsi |
---|---|---|
-b |
--build |
Membuat target pengujian. (default) |
-i |
--install |
Menginstal artefak pengujian (APK) di perangkat. (default) |
-t |
--test |
Menjalankan pengujian. (default) |
-s |
--serial |
Menjalankan pengujian pada perangkat yang ditentukan. Satu perangkat dapat diuji pada satu waktu. |
-d |
--disable-teardown |
Menonaktifkan penghapusan dan pembersihan pengujian. |
|
--dry-run |
Uji coba Atest tanpa benar-benar membangun, menginstal, atau menjalankan pengujian. |
-m |
--rebuild-module-info |
Memaksa pembuatan ulang file module-info.json . |
-w |
--wait-for-debugger |
Menunggu debugger selesai sebelum dieksekusi. |
-v |
--verbose |
Menampilkan logging tingkat DEBUG. |
|
--iterations |
Loop akan berjalan hingga iterasi maksimum tercapai. (10 secara default) |
|
--rerun-until-failure [COUNT=10] |
Menjalankan kembali semua pengujian sampai terjadi kegagalan atau iterasi maksimal tercapai. (10 secara default) |
|
--retry-any-failure [COUNT=10] |
Menjalankan ulang pengujian yang gagal hingga lulus atau iterasi maksimum tercapai. (10 secara default) |
|
--start-avd |
Membuat AVD secara otomatis dan menjalankan pengujian pada perangkat virtual. |
|
--acloud-create |
Membuat AVD menggunakan perintah acloud . |
|
--[CUSTOM_ARGS] |
Menentukan argumen kustom untuk runner pengujian. |
-a |
--all-abi |
Menjalankan pengujian untuk semua arsitektur perangkat yang tersedia. |
|
--host |
Menjalankan pengujian sepenuhnya di host tanpa perangkat. Catatan: Menjalankan pengujian host yang memerlukan perangkat dengan --host
akan gagal. |
|
--history |
Menampilkan hasil pengujian dalam urutan kronologis. |
|
--latest-result |
Mencetak hasil tes terbaru. |
Untuk informasi selengkapnya tentang -b
, -i
, dan -t
, lihat
Bagian Tentukan langkah: build, instal, atau jalankan.
Menentukan pengujian
Untuk menjalankan pengujian, tentukan satu atau beberapa pengujian menggunakan salah satu hal berikut pengenal:
- Nama modul
- Module:Class
- Nama class
- Pengujian integrasi yang diperdagangkan
- Jalur file
- Nama paket
Pisahkan referensi ke beberapa pengujian dengan spasi, seperti ini:
atest test-identifier-1 test-identifier-2
Nama modul
Untuk menjalankan seluruh modul pengujian, gunakan nama modulnya. Masukkan nama seperti yang ditampilkan
dalam variabel LOCAL_MODULE
atau LOCAL_PACKAGE_NAME
dalam pengujian tersebut
File Android.mk
atau Android.bp
.
Contoh:
atest FrameworksServicesTests
atest CtsVideoTestCases
Modul:Class
Untuk menjalankan satu class dalam modul, gunakan Module:Class. Module adalah
sama seperti yang dijelaskan dalam Module name. Class adalah nama
dalam file .java
, dan bisa berupa nama class yang sepenuhnya memenuhi syarat atau
nama sederhana.
Contoh:
atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
Nama class
Untuk menjalankan satu class tanpa menyatakan nama modul secara eksplisit, gunakan nama class.
Contoh:
atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest
Pengujian integrasi yang diperdagangkan
Untuk menjalankan pengujian yang terintegrasi langsung ke dalam TradeFed (non-modul), masukkan
seperti yang muncul dalam output perintah tradefed.sh list configs
. Contoh:
Untuk menjalankan
Pengujian reboot.xml
:
atest example/reboot
Untuk menjalankan
Pengujian native-benchmark.xml
:
atest native-benchmark
Jalur file
Atest mendukung pengujian berbasis modul dan pengujian berbasis integrasi dengan memasukkan jalur ke file atau direktori pengujiannya sebagaimana mestinya. Anda juga mendukung pengoperasian satu class dengan menentukan jalur ke file Java class tersebut. Jalur relatif dan absolut didukung.
Menjalankan modul
Contoh berikut menunjukkan dua cara untuk menjalankan modul CtsVideoTestCases
menggunakan
jalur file.
Jalankan dari Android repo-root
:
atest cts/tests/video
Jalankan dari Android repo-root/cts/tests/video
:
atest .
Menjalankan class pengujian
Contoh berikut menunjukkan cara menjalankan class tertentu dalam
Modul CtsVideoTestCases
menggunakan jalur file.
Dari Android repo-root
:
atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java
Menjalankan pengujian integrasi
Contoh berikut menunjukkan cara menjalankan pengujian integrasi menggunakan jalur file
dari Android repo-root
:
atest tools/tradefederation/contrib/res/config/example/reboot.xml
Nama paket
Atest mendukung penelusuran pengujian berdasarkan nama paket.
Contoh:
atest com.android.server.wm
atest com.android.uibench.janktests
Menentukan langkah-langkah: Build, instal, atau jalankan
Gunakan opsi -b
, -i
, dan -t
untuk menentukan langkah yang akan dijalankan. Jika
Anda tidak menentukan opsi, maka semua langkah akan dijalankan.
- Hanya target build:
atest -b test-to-run
- Hanya jalankan pengujian:
atest -t test-to-run
- Menginstal apk dan menjalankan pengujian:
atest -it test-to-run
- Bangun dan jalankan, tetapi jangan instal:
atest -bt test-to-run
Atest dapat memaksa pengujian untuk melewati langkah pembersihan atau pemutusan. Banyak pengujian, seperti
CTS, bersihkan perangkat setelah pengujian dijalankan, jadi coba jalankan kembali pengujian Anda
dengan -t
akan gagal tanpa parameter --disable-teardown
. Gunakan -d
sebelum
-t
untuk melewati langkah pembersihan pengujian dan menguji secara iteratif.
atest -d test-to-run
atest -t test-to-run
Menjalankan metode tertentu
Atest mendukung pengoperasian metode tertentu dalam class pengujian. Meskipun seluruh perlu dibangun, hal ini mengurangi waktu yang diperlukan untuk menjalankan pengujian. Untuk dijalankan metode spesifik, mengidentifikasi kelas dengan salah satu cara yang didukung untuk mengidentifikasi class (Module:Class, jalur file, dll.) dan menambahkan nama class berikut:
atest reference-to-class#method1
Saat menentukan beberapa metode, pisahkan dengan koma:
atest reference-to-class#method1,method2,method3
Contoh:
atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval
Dua contoh berikut menunjukkan cara yang lebih disukai untuk menjalankan satu metode,
testFlagChange
. Contoh ini lebih disukai daripada hanya menggunakan nama class
karena menentukan modul atau lokasi file Java memungkinkan Atest menemukan
pengujian dengan lebih cepat.
Menggunakan Module:Class:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
Dari Android repo-root:
atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange
Beberapa metode dapat dijalankan dari class dan modul yang berbeda:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors
Menjalankan beberapa class
Untuk menjalankan beberapa class, pisahkan menggunakan spasi dengan cara yang sama seperti menjalankan beberapa pengujian. Atest membangun dan menjalankan class secara efisien, jadi menentukan subset class dalam modul akan meningkatkan performa dibandingkan menjalankan ruang lingkup modul ini.
Untuk menjalankan dua class dalam modul yang sama:
atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
Untuk menjalankan dua class dalam modul yang berbeda:
atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
Menjalankan biner GTest
Atest dapat menjalankan biner GTest. Gunakan -a
untuk menjalankan pengujian ini untuk semua yang tersedia
arsitektur perangkat, yang dalam contoh ini adalah armeabi-v7a
(ARM 32-bit) dan
arm64-v8a
(ARM 64-bit).
Contoh pengujian input:
atest -a libinput_tests inputflinger_tests
Untuk memilih biner GTest tertentu yang akan dijalankan, gunakan titik dua (:) untuk menentukan pengujian nama, dan tagar (#) untuk menentukan masing-masing metode lebih lanjut.
Misalnya, untuk definisi pengujian berikut:
TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)
Jalankan perintah berikut untuk menentukan seluruh pengujian:
atest inputflinger_tests:InputDispatcherTest
Atau jalankan pengujian individual menggunakan hal berikut:
atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
Menjalankan pengujian di TEST_MAPPING
Atest dapat menjalankan pengujian dalam file TEST_MAPPING
.
Menjalankan pengujian pra-pengiriman secara implisit
Jalankan pengujian prapengiriman di file TEST_MAPPING
di direktori saat ini dan induk:
atest
Jalankan pengujian pra-pengiriman dalam TEST_MAPPING
file di /path/to/project dan
direktori induknya:
atest --test-mapping /path/to/project
Menjalankan grup pengujian tertentu
Grup pengujian yang tersedia adalah: presubmit
(default), postsubmit
,
mainline-presubmit
, dan all
.
Jalankan pengujian pascapengiriman di file TEST_MAPPING di direktori saat ini dan induk:
atest :postsubmit
Jalankan pengujian dari semua grup dalam file TEST_MAPPING:
atest :all
Jalankan pengujian pascapengiriman di file TEST_MAPPING di /path/to/project dan direktori induknya:
atest --test-mapping /path/to/project:postsubmit
Jalankan pengujian mainline di file TEST_MAPPING di /path/to/project dan direktori induknya:
atest --test-mapping /path/to/project:mainline-presubmit
Menjalankan pengujian di subdirektori
Secara default, Atest hanya menelusuri pengujian di file TEST_MAPPING bagian atas (dari
direktori saat ini atau direktori yang diberikan ke direktori induknya). Jika Anda juga ingin
untuk menjalankan pengujian pada file TEST_MAPPING di subdirektori, gunakan --include-subdirs
untuk memaksa Atest agar menyertakan juga pengujian tersebut:
atest --include-subdirs /path/to/project
Menjalankan pengujian dalam iterasi
Jalankan pengujian secara iterasi dengan meneruskan argumen --iterations
. Apakah lulus
atau gagal, Atest akan mengulangi
pengujian hingga iterasi maksimum tercapai.
Contoh:
Secara default, Atest melakukan iterasi 10 kali. Jumlah iterasi harus berupa bilangan bulat positif.
atest test-to-run --iterations
atest test-to-run --iterations 5
Pendekatan berikut memudahkan deteksi pengujian yang tidak stabil:
Pendekatan 1: Jalankan semua pengujian hingga kegagalan terjadi atau iterasi maksimum tercapai.
- Berhenti ketika terjadi kegagalan atau iterasi mencapai putaran ke-10 (secara default).
atest test-to-run --rerun-until-failure
- Hentikan ketika terjadi kegagalan atau iterasi mencapai putaran ke-100.
atest test-to-run --rerun-until-failure 100
Pendekatan 2: Jalankan hanya pengujian yang gagal hingga lulus atau iterasi maksimum tercapai.
- Asumsikan
test-to-run
memiliki beberapa kasus pengujian dan salah satu pengujian gagal. Jalankan hanya pengujian yang gagal 10 kali (secara default) atau sampai lulus pengujian.atest test-to-run --retry-any-failure
- Hentikan pengujian yang gagal jika lulus atau mencapai putaran ke-100.
atest test-to-run --retry-any-failure 100
Menjalankan pengujian pada AVD
Atest dapat menjalankan pengujian pada AVD yang baru dibuat. Jalankan acloud create
untuk membuat
AVD dan mem-build artefak, lalu gunakan contoh berikut untuk menjalankan pengujian Anda.
Mulai AVD dan jalankan pengujiannya:
acloud create --local-instance --local-image && atest test-to-run
Mulai AVD sebagai bagian dari pengujian yang dijalankan:
atest test-to-run --acloud-create "--local-instance --local-image"
Untuk informasi selengkapnya, jalankan acloud create --help
.
Meneruskan opsi ke modul
Atest dapat meneruskan opsi untuk menguji modul. Untuk menambahkan command line TradeFed untuk menjalankan pengujian, gunakan struktur berikut dan pastikan argumen mengikuti format opsi baris perintah Tradefed.
atest test-to-run -- [CUSTOM_ARGS]
Lulus opsi modul pengujian untuk menargetkan persiapan atau runner pengujian yang ditentukan dalam file konfigurasi pengujian:
atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true
Meneruskan opsi ke jenis atau class pelari:
atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
Untuk informasi selengkapnya tentang opsi khusus pengujian, lihat Teruskan opsi ke modul.