Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

How to Automate Mobile P2P Application with Appium

66 views

Published on

How to Automate Mobile P2P Application with Appium

Published in: Software
  • Be the first to comment

  • Be the first to like this

How to Automate Mobile P2P Application with Appium

  1. 1. Canberk Akduygu Ex-Java Developer Chief Test Architect @ Testinium Product Owner @ Loadium Blogger @ swtestacademy
  2. 2. Testinium 200+ REAL Mobile Device 1000+ OS - Browser Automation +90 Engineers Consultants and more… +120 People Istanbul Turkey Continuous R&D
  3. 3. Table of Content Application Under Test Solution’s Code Base Building Custom Grid & Appium Solution Challenges & Solutions QA Session Sidekick Components
  4. 4. Application Under Test 9 Country Support +18M Downloads Basic features Text / Image / Voice Messaging VoIP / Video Calls Gaming Features Mobile Payment Social Platform + in app purchase
  5. 5. Dealing with Mobile Test Environments
  6. 6. iOS 11 iOS 10iOS 9 Xcode 7 Xcode 8 Xcode 9 Android 5 Android 6 Android 7 Appium 1.5.3 Appium 1.6 Appium 1.6.3
  7. 7. Building Extended Grid Solution Neat Environment
  8. 8. Basic Mobile Automation Implementation Android iOS Android GRID Appium Nodes CI Tool - Capabilities managed on Source Code Level. - Test Automation Frameworks choice defined with If-Else Structure.
  9. 9. Extended Grid Testinium Grid XCUITest and Instrumentation for iOS Uiautomator and Uiautomator2 for Android Extended Grid choose the appropriate version of Appium and set desired capability with testing framework according to properties stored in Json file. Testinium Test Executor
  10. 10. Challenge 2 Distributing the Test in Different Device
  11. 11. Sender Device Receiver Device S2: Receive Photo S3: Download Photo S4: Replies Back S1: Send Photo S5: Check the Reply Send Picture Scenario Test runs parallel but not the way you think of it! Parallelism as we know: Running one test case in different device with the same steps. Parallelism here: Running one test case in different device with different steps.
  12. 12. WhiHow are you going to check whether a new message Received and it’s your turn to respond? - Pass message content as a parameter for second user to wait? - Implicit or Explicit Waits causing timeouts. - Or some other solution? Waiter Strategy
  13. 13. Synchronize Mobile Device Working in a Harmony
  14. 14. Syncronization Module Android iOS Android One GRID to Rule Them All and in the Syncronization to Bind Them SynchronizerExt. Grid
  15. 15. Become the Sender Become the Receiver I am the Receiver I am the Sender Restful Synchroniser Service How much is Bitcoin? Don’t Ask!! Bankrupt on the way! SM MS AUM MR SM : Send Message MS . Message Sent AUM: Any Unread Message MR: Message Replied Syncronization Multiple Mobile Device
  16. 16. Our Sidekicks - Take Screenshots - Record Execution Video - PhoneUtils
  17. 17. Capture Video & Screenshots in Extended Grid Video Recording Taking Screenshots Has a Native Video Recorder Limitation is 3 minutes so we add videos after test finishes Android Debug Bridge records video Android Debug Bridge capture screenshots No Native Video Recorder Capture 6-8 Screenshots/sec and Combine them with a Ruby script. 3rd Party https://github.com/libimobiledevice
  18. 18. Selenium Grid Appium Extended Grid Agent Extended Node Agent Standart Grid Testinium Grid Test Request Appium Request Device LabVideo Recording Req. Screen Capture Req. App Install / Uninstall / Upgrade Req. Upload Videos Upload ScreenShots Override Selenium’s beforeSession and afterSession method Override Selenium’s beforeCommand and afterCommand method
  19. 19. Architecture of the Project
  20. 20. Test steps are implemented according to device layout and flow. Android and IOS Page Object Models
  21. 21. Test Code Structure Devices are set before the test. Roles of those device are defined. Syncronization status among device are initialized.
  22. 22. Test Code Structure Role Based Test Case is defined. Synchronisation status are reset after every step.
  23. 23. https://www.linkedin.com/in/ canberkakduygu/ Thank You for Your Time Q & A Session!

×