CTS dla aplikacji błyskawicznych

Aplikacje błyskawiczne to kluczowa funkcja Androida 10, dlatego ważne jest, aby działały prawidłowo. Aplikacje błyskawiczne są instalowane w sposób domyślny, dlatego mają ograniczony zestaw funkcji i działają w bardziej restrykcyjnej bezpiecznej piaskownicy. Ze względu na powszechny charakter tych ograniczeń każda część systemu może nie działać prawidłowo z aplikacją Instant Apps. Tworzony jest podzbiór testów CTS, aby sprawdzić, czy działają funkcje obsługiwane przez Aplikacje błyskawiczne. Najważniejszym celem jest zminimalizowanie wzrostu rozmiaru CTS poprzez wyodrębnienie minimalnego zestawu testów do przeniesienia. CTS działające w trybie aplikacji błyskawicznych oznacza zainstalowanie testowego pakietu APK jako aplikacji błyskawicznej i przeprowadzenie testów.

Ograniczenia aplikacji błyskawicznych

Aplikacje błyskawiczne nie są instalowane przez użytkownika, dlatego działają w ograniczonym środowisku piaskownicy z tymi ograniczeniami:

  • Może zawierać tylko określone uprawnienia.
  • Nie będzie widzieć innych aplikacji, chyba że są one oznaczone jako widoczne dla aplikacji błyskawicznych.
  • Ma dostęp tylko do niektórych ustawień systemu.
  • mają dostęp tylko do niektórych właściwości systemu;
  • Nie można udostępniać usług ani dostawców.
  • Może odbierać i wysyłać wiadomości z specjalnymi zasadami dotyczącymi transmisji.

Dodatkowo deweloperzy aplikacji błyskawicznych muszą wyrazić zgodę na to, aby nowa piaskownica bezpieczeństwa mogła dodawać więcej ograniczeń. Ten szeroki zakres specjalnych zachowań aplikacji błyskawicznych obejmuje całą platformę, więc trzeba mieć możliwość sprawdzenia, czy aplikacje błyskawiczne działają zgodnie z oczekiwaniami na wszystkich urządzeniach w ekosystemie.

Testy przeprowadzane w trybie aplikacji błyskawicznych

Nie wszystkie moduły CTS obejmują testy dotyczące aplikacji błyskawicznych. Jeśli funkcje testowane przez moduł współdziałają z serwerem systemu, testy należy wykonać w trybie aplikacji błyskawicznych. Na przykład testy OpenGL nie współpracują z serwerem systemowym, więc nie trzeba ich uruchamiać w trybie aplikacji błyskawicznych, podczas gdy testy dostępności współpracują z serwerem systemowym i trzeba je uruchamiać w trybie aplikacji błyskawicznych.

Oprócz określenia, które moduły są odpowiednie, użytkownicy muszą też określić, które testy w tych modułach są istotne. Na przykład testowanie zachowań związanych z poszczególnymi usługami w ramach architektury z możliwością podłączania usług (np. usługi AccessibilityService) nie jest możliwe w trybie aplikacji błyskawicznych, ponieważ aplikacje błyskawiczne nie mogą udostępniać usług innym aplikacjom (w tym platformie), a testy weryfikujące zachowania po stronie aplikacji są odpowiednie w trybie aplikacji błyskawicznych. Innym przykładem jest test, który sprawdza, czy zachowanie związane z uprawnieniem, którego aplikacja błyskawiczna nie może uzyskać, jest odpowiednie w trybie aplikacji błyskawicznej. Istnieje zestaw testów, które mają zastosowanie tylko do aplikacji błyskawicznych i sprawdzają, czy ich działanie jest zgodne z zasadami, np. czy nie ujawniają usług lub nie widzą innych aplikacji. Zazwyczaj są one już napisane i nie wymagają przenoszenia.

Testowanie błędów w trybie aplikacji błyskawicznych

Jeśli test się nie powiedzie, ponieważ sprawdza funkcję, do której aplikacje błyskawiczne nie mają dostępu, nie jest on odpowiedni w trybie aplikacji błyskawicznych. Oznacz test, aby był wykonywany tylko w trybie pełnej aplikacji, dodając adnotację @AppModeFull. Możesz zastosować tę adnotację na poziomie klasy, aby wykluczyć wszystkie zawarte w niej testy.

Jeśli test się nie powiedzie, ponieważ niektóre funkcje dostępne dla aplikacji błyskawicznych są uszkodzone, zgłoś błąd.

Rozwiązywanie problemów

Jeśli test się nie powiedzie, wyświetli się komunikat Nie udało się zainstalować pliku MyCtsModule.apk na urządzeniu DEVICE. Przyczyna: „-116”. Poszukaj komunikatów PackageManager w logcat. Jeśli np. widzisz komunikat Nie można zastąpić całej aplikacji aplikacją błyskawiczną: your_app, najpierw odinstaluj aplikację adb.