DFL
Device Farm Lab
Appium architecture
Selenium
Grid
Appium Client
http://xxxxx:4444/wd/hub
Desired capabilities.
UIAutomator
UIAutomator
UIAutomator
UIAutomator
DFL
Selenium Grid Processing
Appium
Client
Test script
Request
Desired capabilities
Selenium
Grid
More device…….
Session ID
Test run
Available and
match Desired capabilities
Session ID
UIAutomator
UIAutomator
UIAutomator
1
2
3
4
5
But, no parallel testing.
Parallel Solutions
1. TestNG framework (SauceLabs suggested.)
a. Parallel testing is supported.
b. Multiple devices report is supported.
1. Java Threading
a. All reports are kept the same file.
1. OpenCredo framework ???????
1. Maven multiple device testing. ?????
TestNG
Test case 1 without cucumber
1. It’s working well.
Test case 2 with cucumber
1. It’s working well with no parallel testing.
2. It’s broken, cause still unknown.
Reporting
1. ExtendReports (http://extentreports.relevantcodes.com/)
a. Multiple devices report is supported.
b. Cucumber report is supported.
c. Error screenshot.
d. Demo
(https://github.com/saikrishna321/AppiumTestDistribution)
Reporting
Framework Multiple devices Cucumber Error screenshot
ExtendReports
TestNG
????
????
1. Appium client
a. Parallel testing with cucumber
1. DFL
a. Start appium servers by devices script.
b. Automatically start all services by pm2 & supervisor
i. Selenium hub service
ii. Appium servers
c. Detecting new devices are connected and Starting
Appium servers.
d. Device offline solution (Found on genymotion) ????.
What’s next?
Sprint 6
What’s we have
Done?
1. Appium client (Youtube)
a. Parallel testing with cucumber
i. It’s working on only one device.
ii. Multiple devices
1. DFL
a. Start appium servers by devices script.
b. Start selenium hub script.
c. Automatically start all services by pm2 & supervisor
i. Selenium hub service
ii. Appium servers
d. Detecting new devices are connected and Starting
Appium servers.
e. Device offline solution (Found on genymotion) ????.
https://git.24x7th.com/automated-test/MavenTestNGParallel.git
What’s Next?
1. Appium client
a. Parallel testing with cucumber
i. It’s working on only one device.
ii. Multiple devices
1. DFL
a. Start appium servers by devices script.
b. Start selenium hub script.
c. Automatic start all services by pm2 & supervisor
i. Selenium hub service
ii. Appium servers
d. Detecting new devices are connected and Starting
Appium servers.
e. Device offline solution (Found on genymotion) ????.
https://git.24x7th.com/automated-test/MavenTestNGParallel.git
What’s we have
Done?
1. Appium client (Youtube)
a. Parallel testing with cucumber
i. It’s working on only one device.
ii. Multiple devices
1. DFL
a. Start selenium hub script.
b. Start appium servers by devices script.
c. Automatic start all services by supervisor
i. Selenium hub service
ii. Appium servers
d. Detecting new devices are connected and Starting
Appium servers.
e. Device offline solution (Found on genymotion) ????.
https://git.24x7th.com/automated-test/MavenTestNGParallel.git
What’s Next?
https://git.24x7th.com/automated-test/MavenTestNGParallel.git
1. Appium client
a. Parallel testing with cucumber
i. It’s working on only one device.
ii. Multiple devices
1. DFL
a. Start selenium hub script.
b. Start appium servers by devices script.
c. Automatic start all services by supervisor
i. Selenium hub service
ii. Appium servers
d. Detecting new devices are connected and Starting
Appium servers.
e. Device offline solution (Found on genymotion) ????.
Espresso & cucumber
How is working?
Device
With
Test APK
Adb
Trigger
How parallel testing?
Espresso paralleling?
Device
With
Test APK
Adb
Trigger
Device
With
Test APK
Device
With
Test APK
Sprint 9
What’s Now & Next?
https://github.com/emmasuzuki/CucumberEspressoDemo
1. Setting up Mobile devices to Mac mini.
1. Espresso
1. Spoon
1. Cucumber
Test coverage
Presentation Layer
(Android Framework)
Business Rules Layer
(new features)
Data Layer
(Share Pref, API connection)
The error occurs
frequently on this
Layer
Top 5 Popular devices (~18%)
Users metric
Samsung SM-J700F Galaxy J7 23,017 (6.45%)
Samsung SM-J710F Galaxy J7 (2016) 12,920 (3.62%)
Samsung SM-N920C Galaxy Note 5 10,391 (2.91%)
Samsung SM-J200GU Galaxy J2 (2015) 10,156 (2.84%)
OPPO A1601 F1s 8,038 (2.25%) (coverage 18.07%)
Session metric
Samsung SM-J700F Galaxy J7 132,601 5.49%
Samsung SM-J710F Galaxy J7 (2016) 79,499 3.29%
Samsung SM-J200GU Galaxy J2 (2015) 67,888 2.81%
Samsung SM-N920C Galaxy Note 5 67,620 2.80%
Samsung SM-G610F J7 Prime 48,099 1.99%
OPPO A1601 F1s 46,933 1.94%
(coverage 18.32%, 16.33% excluded J7 prime)
The error occurs frequently on devices (25.56%)
all events is 301k
Samsung SM-J700F Galaxy J7 23k 7.64% (API 5.1.1,
6.0.1)
Samsung SM-J710F Galaxy J7 (2016) 14k 4.36% (API 6.0.1)
Samsung SM-J200GU Galaxy J2 (2015) 13k 4.31% (API 5.1.1)
Samsung SM-N920C Galaxy Note 5 16k 5.31% (API 6.0.1,
7.0.0)
Samsung SM-G610F J7 Prime 9960 3.30% (API 6.0.1)
OPPO A1601 F1s 4636 1.540% (API
5.1, 6.0)
Android API metric (Appropriate to be Cloud)
Android 6.0 296,975 33.84%
Android 5.1 199,608 22.75%
Android 4.4 152,564 17.38%
Android 5.0 87,365 9.96%
Android 7.0 70,240 8.00%
Revenue Metric (User base & error occurs are enough)
Device Farm Lab DFL to run UI testing on Android devices

Device Farm Lab DFL to run UI testing on Android devices

  • 1.
  • 2.
    Appium architecture Selenium Grid Appium Client http://xxxxx:4444/wd/hub Desiredcapabilities. UIAutomator UIAutomator UIAutomator UIAutomator DFL
  • 3.
    Selenium Grid Processing Appium Client Testscript Request Desired capabilities Selenium Grid More device……. Session ID Test run Available and match Desired capabilities Session ID UIAutomator UIAutomator UIAutomator 1 2 3 4 5
  • 4.
  • 5.
    Parallel Solutions 1. TestNGframework (SauceLabs suggested.) a. Parallel testing is supported. b. Multiple devices report is supported. 1. Java Threading a. All reports are kept the same file. 1. OpenCredo framework ??????? 1. Maven multiple device testing. ?????
  • 6.
    TestNG Test case 1without cucumber 1. It’s working well. Test case 2 with cucumber 1. It’s working well with no parallel testing. 2. It’s broken, cause still unknown.
  • 7.
    Reporting 1. ExtendReports (http://extentreports.relevantcodes.com/) a.Multiple devices report is supported. b. Cucumber report is supported. c. Error screenshot. d. Demo (https://github.com/saikrishna321/AppiumTestDistribution)
  • 8.
    Reporting Framework Multiple devicesCucumber Error screenshot ExtendReports TestNG ???? ????
  • 9.
    1. Appium client a.Parallel testing with cucumber 1. DFL a. Start appium servers by devices script. b. Automatically start all services by pm2 & supervisor i. Selenium hub service ii. Appium servers c. Detecting new devices are connected and Starting Appium servers. d. Device offline solution (Found on genymotion) ????. What’s next?
  • 10.
  • 11.
    What’s we have Done? 1.Appium client (Youtube) a. Parallel testing with cucumber i. It’s working on only one device. ii. Multiple devices 1. DFL a. Start appium servers by devices script. b. Start selenium hub script. c. Automatically start all services by pm2 & supervisor i. Selenium hub service ii. Appium servers d. Detecting new devices are connected and Starting Appium servers. e. Device offline solution (Found on genymotion) ????. https://git.24x7th.com/automated-test/MavenTestNGParallel.git
  • 12.
    What’s Next? 1. Appiumclient a. Parallel testing with cucumber i. It’s working on only one device. ii. Multiple devices 1. DFL a. Start appium servers by devices script. b. Start selenium hub script. c. Automatic start all services by pm2 & supervisor i. Selenium hub service ii. Appium servers d. Detecting new devices are connected and Starting Appium servers. e. Device offline solution (Found on genymotion) ????. https://git.24x7th.com/automated-test/MavenTestNGParallel.git
  • 13.
    What’s we have Done? 1.Appium client (Youtube) a. Parallel testing with cucumber i. It’s working on only one device. ii. Multiple devices 1. DFL a. Start selenium hub script. b. Start appium servers by devices script. c. Automatic start all services by supervisor i. Selenium hub service ii. Appium servers d. Detecting new devices are connected and Starting Appium servers. e. Device offline solution (Found on genymotion) ????. https://git.24x7th.com/automated-test/MavenTestNGParallel.git
  • 14.
    What’s Next? https://git.24x7th.com/automated-test/MavenTestNGParallel.git 1. Appiumclient a. Parallel testing with cucumber i. It’s working on only one device. ii. Multiple devices 1. DFL a. Start selenium hub script. b. Start appium servers by devices script. c. Automatic start all services by supervisor i. Selenium hub service ii. Appium servers d. Detecting new devices are connected and Starting Appium servers. e. Device offline solution (Found on genymotion) ????.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    What’s Now &Next? https://github.com/emmasuzuki/CucumberEspressoDemo 1. Setting up Mobile devices to Mac mini. 1. Espresso 1. Spoon 1. Cucumber
  • 21.
    Test coverage Presentation Layer (AndroidFramework) Business Rules Layer (new features) Data Layer (Share Pref, API connection) The error occurs frequently on this Layer
  • 22.
    Top 5 Populardevices (~18%) Users metric Samsung SM-J700F Galaxy J7 23,017 (6.45%) Samsung SM-J710F Galaxy J7 (2016) 12,920 (3.62%) Samsung SM-N920C Galaxy Note 5 10,391 (2.91%) Samsung SM-J200GU Galaxy J2 (2015) 10,156 (2.84%) OPPO A1601 F1s 8,038 (2.25%) (coverage 18.07%) Session metric Samsung SM-J700F Galaxy J7 132,601 5.49% Samsung SM-J710F Galaxy J7 (2016) 79,499 3.29% Samsung SM-J200GU Galaxy J2 (2015) 67,888 2.81% Samsung SM-N920C Galaxy Note 5 67,620 2.80% Samsung SM-G610F J7 Prime 48,099 1.99% OPPO A1601 F1s 46,933 1.94% (coverage 18.32%, 16.33% excluded J7 prime)
  • 23.
    The error occursfrequently on devices (25.56%) all events is 301k Samsung SM-J700F Galaxy J7 23k 7.64% (API 5.1.1, 6.0.1) Samsung SM-J710F Galaxy J7 (2016) 14k 4.36% (API 6.0.1) Samsung SM-J200GU Galaxy J2 (2015) 13k 4.31% (API 5.1.1) Samsung SM-N920C Galaxy Note 5 16k 5.31% (API 6.0.1, 7.0.0) Samsung SM-G610F J7 Prime 9960 3.30% (API 6.0.1) OPPO A1601 F1s 4636 1.540% (API 5.1, 6.0)
  • 24.
    Android API metric(Appropriate to be Cloud) Android 6.0 296,975 33.84% Android 5.1 199,608 22.75% Android 4.4 152,564 17.38% Android 5.0 87,365 9.96% Android 7.0 70,240 8.00%
  • 25.
    Revenue Metric (Userbase & error occurs are enough)

Editor's Notes