Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Testowanie na platformie Android
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Projekt Android Open Source (AOSP) udostępnia kilka narzędzi i pakietów testów do testowania różnych części implementacji. Zanim zaczniesz korzystać ze stron w tej sekcji, zapoznaj się z tymi terminami:
- Urządzenie zgodne z Androidem
- Urządzenie, na którym można uruchomić dowolną aplikację innej firmy napisaną przez zewnętrznych deweloperów za pomocą pakietu SDK i NDK Androida. Urządzenia zgodne z Androidem muszą spełniać wymagania określone w dokumentie definicji zgodności (CDD) i przejść pakiet testów zgodności (CTS). Urządzenia zgodne z Androidem mogą korzystać z ekosystemu Androida, w tym potencjalnej licencji na Google Play, potencjalnej licencji na pakiet usług mobilnych Google (GMS) z aplikacją i interfejsami API oraz na korzystanie z znaku towarowego Androida. Każdy może używać kodu źródłowego Androida, ale aby urządzenie było uznawane za część ekosystemu Androida, musi być zgodne z Androidem.
- artefakt
- Dziennik związany z kompilacją, który umożliwia rozwiązywanie problemów lokalnie.
- dokument definicji zgodności (CDD)
- Dokument, który zawiera wymagania dotyczące oprogramowania i sprzętu dla urządzenia zgodnego z Androidem.
- Zbiór testów zgodności (CTS)
Bezpłatny pakiet testów o jakości komercyjnej, który można pobrać w formie binarnej lub kodu źródłowego w AOSP. CTS to zestaw testów jednostkowych zaprojektowanych tak, aby można je było zintegrować z Twoim codziennym przepływem pracy. Celem testów CTS jest wykrywanie niezgodności i zapewnienie zgodności oprogramowania przez cały proces rozwoju.
Testy CTS i testy platform nie wykluczają się wzajemnie. Oto kilka ogólnych wskazówek:
- Jeśli test sprawdza poprawność funkcji lub zachowania interfejsu API frameworku i powinien być stosowany przez wszystkich partnerów OEM, powinien być uwzględniony w CTS.
- Jeśli test ma służyć do wykrywania regresji podczas tworzenia platformy, może wymagać uprawnień uprzywilejowanych i może być zależny od szczegółów implementacji (takich jak te opublikowane w AOSP), powinien być testem platformy.
- Usługi mobilne Google (GMS)
Kolekcja aplikacji i interfejsów API Google, które można wstępnie zainstalować na urządzeniach.
- GoogleTest (GTest)
Platforma testów i mockowania w języku C++. Pliki binarne GTest zwykle uzyskują dostęp do niższych warstw abstrakcji lub wykonują bezpośrednie operacje IPC na różnych usługach systemowych. Podejście do testowania w przypadku GTest jest zwykle ściśle powiązane z testowanym serwisem. CTS zawiera framework GTest.
- test z instrumentacją
specjalne środowisko wykonywania testów uruchamiane przez polecenie am instrument
, w którym docelowy proces aplikacji jest ponownie uruchamiany i inicjowany z podstawowym kontekstem aplikacji, a w ramach wirtualnej maszyny procesu aplikacji uruchamia się wątek pomiarów. CTS zawiera testy instrumentacji.
- Logcat
Narzędzie wiersza poleceń, które tworzy dziennik wiadomości systemowych, w tym zrzuty stosu, gdy urządzenie zgłasza błąd, oraz wiadomości zapisane w aplikacji za pomocą klasy Log
.
- logowanie
prowadzenie dziennika, aby śledzić zdarzenia w systemie komputerowym, takie jak błędy; Rejestrowanie na Androidzie jest skomplikowane ze względu na różnorodność standardów używanych w narzędziu Logcat.
- postsubmit test
Test Androida, który jest wykonywany, gdy nowa poprawka zostanie zaakceptowana w głównym gałęzi jądra. Po wpisaniu aosp_kernel
jako częściowej nazwy gałęzi możesz wyświetlić listę gałęzi jądra z dostępnymi wynikami. Na przykład wyniki dla android-mainline
można znaleźć na stronie https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid.
- test przed przesłaniem
Test służący do zapobiegania wprowadzania błędów do wspólnych jąder.
- Federacja handlowa
Nazwa ta odnosi się do ciągłego testowania, czyli frameworku do przeprowadzania testów na urządzeniach z Androidem. Na przykład Tradefed służy do uruchamiania testów Compatibility Test Suite i Vendor Test Suite.
- Zestaw testów dostawcy (VTS)
Zestaw obszernych funkcji do testowania Androida, promowania procesu programowania opartego na testowaniu oraz automatyzacji testów warstwy abstrakcji sprzętowej (HAL) i jądra systemu operacyjnego.
Typy testów platformy
Test platformy zwykle współdziała z co najmniej 1 usługą systemu Android lub warstwą HAL, sprawdza funkcje testowanego obiektu i sprawdza poprawność wyniku testu. Test platformy może:
- (Typ 1) Wykorzystywanie interfejsów API frameworku za pomocą frameworku Androida. Do interfejsów API, których dotyczy ta funkcja, należą:
- Publiczne interfejsy API przeznaczone dla aplikacji innych firm
- Ukryte interfejsy API przeznaczone dla aplikacji uprzywilejowanych, czyli interfejsy API systemowe lub prywatne (
@hide
, protected
, package private
)
- (Typ 2) Wywoływanie usług systemu Androida bezpośrednio za pomocą usługi raw binder lub interfejsu IPC.
- (Typ 3) Interakcja bezpośrednio z HAL-ami za pomocą interfejsów API niskiego poziomu lub interfejsów IPC.
Testy typu 1 i 2 to zwykle testy instrumentacji, a testy typu 3 to zwykle testy G.
Co dalej?
Oto lista dokumentów, które możesz przeczytać, aby uzyskać więcej informacji:
Jeśli nie znasz architektury Androida, zapoznaj się z artykułem Omówienie architektury.
Jeśli tworzysz urządzenie zgodne z Androidem, zapoznaj się z omówieniem programu zgodności z Androidem.
Aby zintegrować testy instrumentacji, testy funkcjonalne, testy danych i testy hosta JAR z usługą ciągłego testowania platformy, zapoznaj się z przepływem pracy dotyczącym tworzenia testów.
Aby wykrywać luki w zabezpieczeniach i zwiększać odporność urządzeń na nie, zapoznaj się z artykułem Testowanie bezpieczeństwa.
Więcej informacji o testowaniu implementacji HAL i jądra znajdziesz w artykule Pakiet testów dostawcy (VTS) i infrastruktura.
Aby dowiedzieć się więcej o testowaniu aplikacji, przeczytaj artykuł Podstawy testowania aplikacji na Androida i wykonaj Android w Kotlinie zaawansowanym 05.1:podstawy testowania, korzystając z próbek.
Dowiedz się więcej o podstawowym testowaniu przed przesłaniem, które jest dostępne za pomocą haków repozytorium.
Za pomocą tych funkcji możesz uruchamiać narzędzia do sprawdzania kodu, sprawdzać formatowanie i uruchamiać testy jednostkowe przed kontynuowaniem, np. przed przesłaniem zatwierdzenia. Te uchwyty są domyślnie wyłączone. Więcej informacji znajdziesz w artykule AOSP Preupload Hooks (w języku angielskim).
Więcej informacji o logowaniu znajdziesz w artykule Omówienie logowania.
Aby dowiedzieć się, jak debugować kod na Androida, przeczytaj artykuł Debugowanie natywnego kodu na platformę Androida.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Android platform testing\n\nAndroid Open Source Project (AOSP) provides several tools and test suites\nfor testing various parts of your implementation. Before using the pages in this\nsection, you should be familiar with the following terms:\n\n*Android-compatible device*\n: A device that can run any third-party app written by third-party developers\n using the Android SDK and NDK. Android-compatible devices must adhere to the\n requirements of the\n [Compatibility Definition Document (CDD)](#CDD) and pass the\n [Compatibility Test Suite (CTS)](#cts). Android-compatible\n devices are eligible to participate in the Android ecosystem, which includes\n potential licensure of Google Play, potential licensure of the\n [Google Mobile Services (GMS)](#gms) suite of\n app and APIs, and use of the Android trademark. Anyone is welcome to\n use the Android source code, but to be considered part of the Android ecosystem,\n a device must be Android compatible.\n\n*artifact*\n: A build-related log that enables local troubleshooting.\n\n*Compatibility Definition Document (CDD)*\n: A document that enumerates the software and hardware requirements for an\n Android-compatible device.\n\n*Compatibility Test Suite (CTS)*\n\n: A free, commercial-grade test suite, available for download as a binary or as\n source in AOSP. The CTS is a set of unit tests designed to be integrated into\n your daily workflow. The intent of CTS is to reveal incompatibilities, and\n ensure that the software remains compatible throughout the development process.\n\n CTS and platform tests aren't mutually exclusive. Here are some general\n guidelines:\n\n - If a test is asserting correctness of framework API functions or behaviors, and the test should be enforced across OEM partners, it should be in CTS.\n - If a test is intended to catch regressions during platform development, and might require privileged permission to carry out, and might be dependent on implementation details (as released in AOSP), it should be a platform test.\n\n*Google Mobile Services (GMS)*\n\n: A collection of Google apps and APIs that can be preinstalled on devices.\n\n*GoogleTest (GTest)*\n\n: A C++ testing and mocking framework. GTest binaries typically\n access lower-level abstraction layers or perform raw IPC against various system\n services. The testing approach for GTest is usually tightly coupled with the\n service being tested. CTS contains the GTest framework.\n\n*instrumentation test*\n\n: A special test execution environment\n launched by the `am instrument` command, where the targeted app process\n is restarted and initialized with basic app context, and an\n instrumentation thread is started inside the app process virtual\n machine. CTS contains instrumentation tests.\n\n*Logcat*\n\n: A command-line tool that creates a log of system messages, including\n stack traces of when the device throws an error and messages that you have\n written from your app with the `Log` class.\n\n*logging*\n\n: Using a log to keep track of computer system events, such\n as errors. Logging in Android is complex due to the mix of standards used that\n are combined in the Logcat tool.\n\n*postsubmit test*\n\n: An Android test that is performed when a new patch is committed to a\n common kernel branch. By entering `aosp_kernel` as a partial branch name, you\n can see a list of kernel branches with results available. For example, results\n for `android-mainline` can be found at\n \u003chttps://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid\u003e.\n\n*presubmit test*\n\n: A test used to prevent failures from being introduced into the\n common kernels.\n\n*Trade Federation*\n\n: Also called Tradefed, a continuous test\n framework designed for running tests on Android devices. For example,\n Tradefed is used to run Compatibility Test Suite and Vendor Test Suite tests.\n\n*Vendor Test Suite (VTS)*\n\n: A set of extensive capabilities for\n Android testing, promoting a test-driven development process, and automating\n hardware abstraction layer (HAL) and OS kernel testing.\n\nPlatform test types\n-------------------\n\nA platform test typically interacts with one or more of the Android system\nservices or HAL layers, exercises the\nfunctionalities of the subject under test, and asserts correctness of the\ntesting outcome. A platform test might:\n\n- (Type 1) Exercise framework APIs using Android framework. Specific APIs being exercised can include:\n - Public APIs intended for third-party apps\n - Hidden APIs intended for privileged apps, namely system APIs or private APIs (`@hide`, or `protected`, `package private`)\n- (Type 2) Invoke Android system services using raw binder or IPC proxies directly.\n- (Type 3) Interact directly with HALs using low-level APIs or IPC interfaces.\n\nType 1 and 2 tests are typically instrumentation tests, while type 3 tests are\nusually GTests.\n\nWhat's next?\n------------\n\nHere is a list of documents that you can read for more detailed information:\n\n- If you haven't studied Android architecture, see\n [Architecture overview](/docs/core/architecture).\n\n- If you're creating an Android-compatible device, see\n the [Android compatibility program overview](/docs/compatibility/overview).\n\n- To integrate instrumentation, functional, metric, and JAR host tests\n into a platform continuous testing service, see\n [Test development workflow](/docs/core/tests/development).\n\n- To detect and harden your devices against vulnerabilities,\n see [Security testing](/docs/security/test/fuzz-sanitize).\n\n- To learn about testing your HAL and kernel implementations, see\n [Vendor Test Suite (VTS) and infrastructure](/docs/core/tests/vts).\n\n- For app testing, read\n [Fundamentals of testing Android\n apps](https://developer.android.com/training/testing/fundamentals)\n and conduct the [Advanced Android in Kotlin 05.1:Testing\n Basics](https://codelabs.developers.google.com/codelabs/advanced-android-kotlin-training-testing-basics/index.html)\n using the\n [samples](https://github.com/android/testing-samples) provided.\n\n- Learn about the basic presubmit testing available to you through repo hooks.\n These hooks can be used to run linters, check formatting, and trigger unit\n tests before proceeding, such as uploading a commit. These hooks are disabled\n by default. For further information, see [AOSP Preupload\n Hooks](https://android.googlesource.com/platform/tools/repohooks/+/refs/heads/android16-release/README.md).\n\n- To read more about logging, see [Understand logging](/docs/core/tests/debug/understanding-logging).\n\n- To understand how to debug Android code, see\n [Debug native Android platform code](/docs/core/tests/debug)."]]