![Page 1: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/1.jpg)
Danny Preussler | Groupon
Abgeschottete Realität
![Page 2: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/2.jpg)
about me and testing
• 2014, Java/Eclipse Magazin
• "Android-apps testen mit Espresso“• Android Engineer, Groupon
![Page 3: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/3.jpg)
about me and testing
• 2013, DroidCon Berlin
• “Unit testing mit Robolectric“• Lead Engineer Android, eBay Kleinanzeigen
![Page 4: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/4.jpg)
about me and testing
• 2008, Blackberry Developer Conference,
Santa Clara
• “Unit testing with Blackberry“
• Team Lead Mobile, Cortado
![Page 5: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/5.jpg)
about me and testing
• 2004?, OOP München
• Besuch eines Vortrags
von James Whitaker,
der Testgedanken bis heute prägt
• Developer, Thinprint
![Page 6: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/6.jpg)
about me and testing
• 2001, Diplomarbeit
• UI Testing a protocol implementation
between Alcatel and Lucent
• Student developer, Alcatel
![Page 7: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/7.jpg)
Our mobile app is available in 43 countries
Groupon’s vibrant mobile marketplace connects
consumers with their local economy
Sources: Internal Data; iTunes ranking for US stores available here -https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewFeature?id=500873243&mt=8&v0=www-itunes25Bcountdown-appstore
Nearly 70 million people worldwide have downloaded our mobile app to date; 9 million in Q4 2013.
One of the 25 most downloaded free apps of all time
Nearly 50% of our global transactions completed on a mobile device in December 2013
![Page 8: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/8.jpg)
Abgeschottet?
• App isolieren
• Äußere Faktoren reduzieren
• Reproduzierbarkeit erhöhen
![Page 9: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/9.jpg)
Broken Blackberry by Matthew Hurst, CC BY 2.0, http://www.flickr.com/photos/skewgee/3160670483
![Page 10: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/10.jpg)
Android emulator
![Page 11: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/11.jpg)
Android emulator
• Teil des SDK
• Stellt alle Nexus Geräte zur Verfügung
• Custom Versionen erstellbar
![Page 12: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/12.jpg)
Android emulator
• Erstellung über UI oder Commandlineandroid create avd -n my_android1.5
• Dateien (*.avd, *.ini) liegen in $USERHOME/.android/avd
• Perfekt für Jenkins und Skriptingandroid move avd / android delete avd -n
<name>
![Page 13: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/13.jpg)
Android emulator
• Performance schlecht
• Verbesserung durch:
– Enable „use host GPU“
– Use Intel Builds
– Install Intel Hardware Accelerationhttps://software.intel.com/en-us/android/articles/installation-instructions-for-intel-
hardware-accelerated-execution-manager-mac-os-x
![Page 14: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/14.jpg)
Genymotion
![Page 15: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/15.jpg)
Genymotion
• Unschlagbare Performance
• Vordefinierte VMs aus Cloud laden
• Kostenfrei nur für privat
![Page 16: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/16.jpg)
My
gra
ndpas
hom
eby
florianric, C
C B
Y 2
.0, https://w
ww
.flic
kr.
com
/photo
s/f
lorianric/7
263382550
![Page 17: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/17.jpg)
adb
• Android debug bridge
• Funktioniert mit jedem Android Gerät!
![Page 18: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/18.jpg)
adb
• Geht auch wenn Gerät gelockt:
![Page 19: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/19.jpg)
adb
adb devices
adb install <apk-file>
adb uninstall <your-package>
![Page 20: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/20.jpg)
adb
adb reboot
adb start-server / kill-server
adb logcat
![Page 21: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/21.jpg)
adb
adb push <path> <device-path>
adb pull <path-on-device>
![Page 22: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/22.jpg)
adb
adb shell screencap -p |
perl -pe 's/\x0D\x0A/\x0A/g' >
~/Desktop/screenshot.png
![Page 23: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/23.jpg)
adb shell
Adb provides a Unix shell that you can
use to run a variety of commands on an
emulator or connected device.
(http://developer.android.com/tools/help/adb.html#shellcommands)
![Page 24: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/24.jpg)
adb
• Send „monkey“ events:
adb shell monkey
-p your.package.name
-v 500
Squirre
lm
onkey
with
ice
cre
am
by
Ta
mbako
the
Jaguar, C
C B
Y 2
.0, h
ttps://w
ww
.flickr.c
om
/photo
s/ta
mbako/1
1481700755
![Page 25: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/25.jpg)
SharedPreferences
• Meistgenutzer Persistence-Mechanismus
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(context);
...preferences.getString(key, default);
![Page 26: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/26.jpg)
SharedPreferences
• Zugriff:
adb shell cat /data/data/com.your-
package/shared_prefs/com.your-
package_preferences.xml
adb shell ls /data/data/com.your-
package/shared_prefs
![Page 27: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/27.jpg)
SharedPreferences
• Beispiel:
<?xml version='1.0' encoding='utf-8' standalone='yes‘?>
<map>
<string name=“key">value</string>
</map>
![Page 28: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/28.jpg)
SharedPreferences
• Reproduzierbarkeit der Test
durch back/restore
• Beispiel:adb pull
/data/data/eu.esa.spaceappcamp.enviq/shared_prefs/eu.esa
.spaceappcamp.enviq_preferences.xml
![Page 29: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/29.jpg)
Databases
• Komplexere Daten werden meist in
SQLite Datenbanken gespeichert
• Backup-Restore-Pattern:
/data/data/com.your-
package/databases/
![Page 30: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/30.jpg)
Databases
• Example:adb pull
/data/data/com.groupon.redemption/databases/red
emption.db
• Open with SQLite Manager für Firefoxhttps://addons.mozilla.org/en-
US/firefox/addon/sqlite-manager/
![Page 31: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/31.jpg)
Accounts
• Account-Daten sollten
über Android Account
Manager hinterlegt
werden
![Page 32: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/32.jpg)
Accounts
Liegen unter: /data/system/users/0/accounts.db
(evtl unterschiedlich je Android Version)
![Page 33: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/33.jpg)
telnet
telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help'
for a list of commands
OK
Amiga 1000 connected to an Apple IIgs-hosted BBS via telnet by Blake
Patterson, CC BY 2.0, https://www.flickr.com/photos/blakespot/12421642963
![Page 34: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/34.jpg)
telnet
• Works with android emulators
• Does not work with phones
• Does not work with Genymotion
Amiga 1000 connected to an Apple IIgs-hosted BBS via telnet by Blake
Patterson, CC BY 2.0, https://www.flickr.com/photos/blakespot/12421642963
![Page 35: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/35.jpg)
telnetevent simulate hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
kill kill the emulator instance
network manage network settings
power power related commands
redir manage port redirections
sms SMS related commands
avd control virtual device execution
window manage emulator window
qemu QEMU-specific commands
sensor manage emulator sensors
![Page 36: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/36.jpg)
telnetevent simulate hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
kill kill the emulator instance
network manage network settings
power power related commands
redir manage port redirections
sms SMS related commands
avd control virtual device execution
window manage emulator window
qemu QEMU-specific commands
sensor manage emulator sensors
![Page 37: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/37.jpg)
telnetevent simulate hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
kill kill the emulator instance
network manage network settings
power power related commands
redir manage port redirections
sms SMS related commands
avd control virtual device execution
window manage emulator window
qemu QEMU-specific commands
sensor manage emulator sensors
![Page 38: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/38.jpg)
telnet
• Einkommende Anrufe simulieren:
gsm call 1234567
gsm cancel 1234567
• Wozu?
Wie reagiert die Anwendung?
Kann sie sich korrekt wiederherstellen?
![Page 39: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/39.jpg)
telnetevent simulate hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
kill kill the emulator instance
network manage network settings
power power related commands
redir manage port redirections
sms SMS related commands
avd control virtual device execution
window manage emulator window
qemu QEMU-specific commands
sensor manage emulator sensors
![Page 40: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/40.jpg)
telnet> help network
allows you to manage the settings related to the network
data connection of the
emulated device.
available sub-commands:
network status dump network status
network speed change network speed
network delay change network latency
network capture dump network packets to file
![Page 41: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/41.jpg)
telnet
• Geschwindigkeit drosseln:network speed 14.4 80
![Page 42: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/42.jpg)
telnetevent simulate hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
kill kill the emulator instance
network manage network settings
power power related commands
redir manage port redirections
sms SMS related commands
avd control virtual device execution
window manage emulator window
qemu QEMU-specific commands
sensor manage emulator sensors
![Page 43: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/43.jpg)
telnet
geo fix <longitude> <latitude>
![Page 44: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/44.jpg)
GPS
• Google Play services nicht auf
Emulatoren verfügbar
• Google? ;-)
![Page 45: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/45.jpg)
Genymotion Shellandroid informations related to Android system
included in Genymotion distribution
battery actions and informations related to battery
sensor
devices generic actions related to virtual devices
(listing, selection, ...)
gps actions and informations related to Global
Positioning System sensor
pause make a pause (useful for automatic tests)
rotation actions related to the rotation of virtual
device
version display version number of running Genyshell
![Page 46: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/46.jpg)
Web Services
• Mock daten?
– Einfach bei Entwicklernahen
Testframeworks:
Android Instrumentation, Robotium,
Espresso
– Ideal beim Einsatz von Dependency-
Injection wie Dagger, RoboGuice
![Page 47: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/47.jpg)
Web Services
• Mock daten?
– „Schwer-unmöglich“ bei Black-Box oder
Remote-Framworks wie UIAutomator,
RoboRemote, Selenium...
![Page 48: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/48.jpg)
Web Services
• Skripte zum Manipulieren des Backends
-> Komplexität, Externe Abhängigkeit!
• Besser: Proxy:
– Charles
www.charlesproxy.com
– Odo:
https://github.com/groupon
![Page 49: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/49.jpg)
Odo-ed
![Page 50: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/50.jpg)
Response Override
• Return fixed response content
• Return fixed response code
• Add delays
![Page 51: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/51.jpg)
Response Override cont.
• Add/remove request headers
• Change content
• Change response code
![Page 52: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/52.jpg)
Response Override cont.
• Do sequences of all those
• Supports Plugins for custom responses
i.e. makeDealSoldOut
![Page 53: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/53.jpg)
Request Override
• Add/remove request headers
• Custom request – add/change parameters
• Change the target
i.e. send production request to staging/test
![Page 54: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/54.jpg)
Developer-Options
![Page 55: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/55.jpg)
How do we test?
• RoboRemote
• github.com/groupon/robo-remote
• UIAutomator + Robotium
• works from remote
• Espresso
• Odo
![Page 56: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/56.jpg)
Follow us
https://engineering.groupon.com/
Michael Burton, Roboguice
Carlos Sessa, 50 Android hacks
David van der Bokke, RoboRemote
David Willson, Odo
….
![Page 57: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/57.jpg)
Get the demo app:
https://play.google.com/store/apps/details?id=eu.esa.spaceappcamp.enviq
![Page 58: Abgeschottete Realität - Testen im Emulator, Mobile Testing Days 2014, Berlin](https://reader034.vdocuments.mx/reader034/viewer/2022042700/559b33361a28ab2f638b45e3/html5/thumbnails/58.jpg)
Thank you