Skip to content

Commit 983fe73

Browse files
committed
test lab post added
1 parent a5baeb0 commit 983fe73

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

_drafts/2019-03-18-test_lab.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
layout: post
3+
title: "Test Lab"
4+
date: 2019-03-18
5+
categories: ["Firebase"]
6+
image: firebase/test_lab
7+
github: firebase/tree/master/test_lab
8+
description: "Firebase"
9+
keywords: "firebase, testowanie, testing, testy, jednostkowe, automatyczne, instrumentalne, unit test, cloud, espresso, uiautomator, robo test, gcloud, ci, jekins, bitrise, circle ci, android, programowanie, programming"
10+
---
11+
12+
## 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.
14+
15+
## 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.
17+
18+
{% highlight kotlin %}
19+
String testLab = Settings.System.getString(getContentResolver(), "firebase.test.lab");
20+
if ("true".equals(testLab)) {
21+
//do something for Test Lab running
22+
}
23+
{% endhighlight %}
24+
25+
## 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.
374 KB
Loading
15.7 KB
Loading
42.1 KB
Loading

0 commit comments

Comments
 (0)