Skip to content

Commit bfef426

Browse files
committed
test lab post updated
1 parent 983fe73 commit bfef426

File tree

5 files changed

+17
-8
lines changed

5 files changed

+17
-8
lines changed

_drafts/2019-02-04-espresso.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ Testy przeprowadzane w `UI Automator` pozwalają na weryfikację zachowania test
178178
@RunWith(AndroidJUnit4::class)
179179
class UIAutomatorTest {
180180

181-
private val APP_PACKAGE = "pl.androidcode"
181+
private val APP_PACKAGE = "pl.androidcode.espresso"
182182
private val SMS_APP_PACKAGE = "com.google.android.apps.messaging"
183183

184184
private lateinit var device: UiDevice

_drafts/2019-03-18-test_lab.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,28 @@ title: "Test Lab"
44
date: 2019-03-18
55
categories: ["Firebase"]
66
image: firebase/test_lab
7-
github: firebase/tree/master/test_lab
87
description: "Firebase"
98
keywords: "firebase, testowanie, testing, testy, jednostkowe, automatyczne, instrumentalne, unit test, cloud, espresso, uiautomator, robo test, gcloud, ci, jekins, bitrise, circle ci, android, programowanie, programming"
109
---
1110

1211
## Wprowadzenie
13-
`Firebase Test Lab` jest infrastrukturą opartą o chmurę (`cloud`) przeznaczoną do testowania aplikacji na wielu urządzeniach (rzeczywistych i wirtualnych) naraz. W rezultacie zwracane są wyniki w postaci logów, zrzutów ekranu i wideo. Testy przeprowadzane są w partiach zwanych macierzami testowymi (`test matrix`) w której aplikacja jest testowana dla wielu kombinacji konfiguracji urządzeń. Wykorzystanie platformy Test Lab spełnia realizację instrumentalnych testów jednostkowych wykonywanych na wielu poziomach testowania (testy jednostkowe, integracyjne, systemowe). Co więcej dzięki zastosowaniu trybu `demo mode` przetestowanie gier staje się znacząco ułatwione.
12+
`Firebase Test Lab` jest infrastrukturą opartą o chmurę (`cloud`) przeznaczoną do testowania aplikacji na wielu urządzeniach (rzeczywistych i wirtualnych) naraz. W rezultacie zwracane są wyniki w postaci logów, zrzutów ekranu i wideo. Testy przeprowadzane są w partiach zwanych macierzami testowymi (`test matrix`) w której aplikacja jest testowana dla wielu kombinacji konfiguracji urządzeń (orientacja, język, urządzenia, wersja systemu itp). Wykorzystanie platformy Test Lab spełnia realizację instrumentalnych testów jednostkowych wykonywanych na wielu poziomach testowania (testy jednostkowe, integracyjne, systemowe). Co więcej dzięki zastosowaniu trybu `demo mode` przetestowanie gier staje się znacząco ułatwione.
13+
14+
![Zestaw macierzy testów](/assets/img/diagrams/firebase/testlab_tests.png){: .center-image }
15+
16+
## Urządzenia
17+
Urządzenia są na bieżąco aktualizowane i konfigurowane oraz z uwagi na zachowanie prywatności i bezpieczeństwa użytkowników czyszczone po przeprowadzonych testach (usuwana jest aplikacja i jej dane). Ze względu na niższe koszty, dłuższy możliwy czas na przeprowadzenie testów, większą dostępność i szybsze zwracanie rezultatów jeśli to możliwe rekomendowane jest użycie w procesie deweloperskim urządzeń wirtualnych. Jednakże w przypadku wersji aplikacji przeznaczonych do wydania (`release`), wprowadzenia nowej funkcjonalności, wykorzystania cech sprzętowych czy zmian w interfejsie graficznym należy przeprowadzić testy w oparciu o urządzenia fizyczne. Zanim jednak aplikacja zostanie poddana testom w Test Lab warto sprawdzić poprawność testów najpierw na lokalnym urządzeniu lub emulatorze.
1418

1519
## Testowanie
16-
Test Lab umożliwia wykonanie testów dla załączonego pliku `APK` lub kodu aplikacji na dwa sposoby: uruchamiając `testy instrumentalne` przy użyciu `Espresso` i `UI Automator` lub przygotowując je poprzez narzędzie `Robo test`. Następnie należy dokonać wyboru `macierzy` urządzeń testowych i konfiguracji. Testy można przeprowadzić nie tylko z konsoli Firebase (`Firebase console`), ale także z poziomu `Android Studio`, wiersza poleceń `gcloud CLI` oraz systemów ciągłej integracji (`CI`) takich jak m.in. `Jenkins`, `Bitrise` i `Circle CI`. W przypadku rozróżnienia fragmentów kodu ze względu na wykonanie przez Test Lab można posłużyć się poniższym kodem.
20+
Test Lab umożliwia wykonanie testów dla załączonego pliku `APK` lub kodu aplikacji na dwa sposoby: uruchamiając `testy instrumentalne` przy użyciu `Espresso` i `UI Automator` lub przygotowując je poprzez narzędzie `Robo test`. Następnie należy dokonać wyboru `macierzy` urządzeń testowych i konfiguracji. Testy można przeprowadzić nie tylko z konsoli Firebase (`Firebase console`), ale także z poziomu `Android Studio`, wiersza poleceń `gcloud CLI` oraz systemów ciągłej integracji (`CI`) takich jak m.in. `Jenkins`, `Bitrise` i `Circle CI`. Wyniki przykładowych testów instrumentalnych dla zadanej macierzy w konsoli Firebase prezentują się następująco.
21+
22+
![Testy instrumentalne](/assets/img/diagrams/firebase/testlab_instrumental.png){: .center-image }
23+
24+
Widok szczegółów testów na danym urządzeniu dostarcza kompletnych informacji nt metod testowych, logów, rezultatów, a nawet nagranie wideo z przeprowadzonych testów.
25+
26+
![Wyniki testów](/assets/img/diagrams/firebase/testlab_results.png){: .center-image }
27+
28+
W przypadku potrzeby rozróżnienia fragmentów kodu ze względu na wykonanie przez Test Lab można posłużyć się poniższym kodem.
1729

1830
{% highlight kotlin %}
1931
String testLab = Settings.System.getString(getContentResolver(), "firebase.test.lab");
@@ -23,7 +35,4 @@ if ("true".equals(testLab)) {
2335
{% endhighlight %}
2436

2537
## Robo test
26-
`Robo test` jest narzędziem testowym zintegrowanym z Test Lab, który na podstawie analizy struktury interfejsu graficznego aplikacji automatycznie symuluje zachowanie użytkownika. Przeprowadza symulacje działań w tej samej kolejności dla danej konfiguracji i ustawień dzięki czemu możliwa jest weryfikacja poprawek i przeprowadzenie testów regresji. Dodatkowo załącza pliki logów, zrzuty ekranu i wideo co pomaga w znalezieniu błędów, a także podczas każdego testu rejestruje statystyki dotyczące podjętych działań i wywołanych ekranów. Dodanie `skryptów Robo` pozwala na przejęcie większej kontroli nad testami poprzez ręczne wprowadzenie działań. Należy mieć jednak na uwadzę, że testy Robo wykorzystują `Android API` do bezpośredniego wykonywania działań na widżetach interfejsu użytkownika. Jeśli testowany ekran nie używa `widżetów UI` wówczas testy przeprowadzane są zgodnie z zasadą małpki testowej (`Monkey Actions`), tzn. zachodzi symulacja dotknięć w losowych miejscach na ekranie. Aby temu zapobiec można użyć tryb `demo mode` oparty o mechanizm `Game Loop Test`.
27-
28-
## Urządzenia
29-
Urządzenia są na bieżąco aktualizowane i konfigurowane oraz z uwagi na zachowanie prywatności i bezpieczeństwa użytkowników czyszczone po przeprowadzonych testach (usuwana jest aplikacja i jej dane). Ze względu na niższe koszty, dłuższy możliwy czas na przeprowadzenie testów, większą dostępność i szybsze zwracanie rezultatów jeśli to możliwe rekomendowane jest użycie w procesie deweloperskim urządzeń wirtualnych. Jednakże w przypadku wersji aplikacji przeznaczonych do wydania (`release`), wprowadzenia nowej funkcjonalności, wykorzystania cech sprzętowych czy zmian w interfejsie graficznym należy przeprowadzić testy w oparciu o urządzenia fizyczne. Zanim jednak aplikacja zostanie poddana testom w Test Lab warto sprawdzić poprawność testów najpierw na lokalnym urządzeniu lub emulatorze.
38+
`Robo test` jest narzędziem testowym zintegrowanym z Test Lab, który na podstawie analizy struktury interfejsu graficznego aplikacji automatycznie symuluje zachowanie użytkownika. Przeprowadza symulacje działań w tej samej kolejności dla danej konfiguracji i ustawień dzięki czemu możliwa jest weryfikacja poprawek i przeprowadzenie testów regresji. Dodatkowo załącza pliki logów, zrzuty ekranu, wideo i diagramy przepływu akcji co pomaga w znalezieniu błędów, a także podczas każdego testu rejestruje statystyki dotyczące podjętych działań i wywołanych ekranów. Dodanie `skryptów Robo` pozwala na przejęcie większej kontroli nad testami poprzez ręczne wprowadzenie działań. Należy mieć jednak na uwadzę, że testy Robo wykorzystują `Android API` do bezpośredniego wykonywania działań na widżetach interfejsu użytkownika. Jeśli testowany ekran nie używa `widżetów UI` wówczas testy przeprowadzane są zgodnie z zasadą małpki testowej (`Monkey Actions`), tzn. zachodzi symulacja dotknięć w losowych miejscach na ekranie. Aby temu zapobiec można użyć tryb `demo mode` oparty o mechanizm pętli gry `Game Loop Test`.
84.4 KB
Loading
91.8 KB
Loading
30.6 KB
Loading

0 commit comments

Comments
 (0)