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.
JAVA TEST AUTOMATION FOR
REST | WEB | MOBILE
E L I A S N O G U E I R A
@ e l i a s n o g u e i r a
E D S O N Y A N A G A
@...
Elias Nogueira
@eliasnogueira
Senior QA Engineer, Agile Coach & Trainer at Sicredi
Postgraduate Professor at Unisinos.br
A...
Edson Yanaga
@yanaga
Director of Developer Experience, Red Hat
Oracle Java Champion
Loren ipsus
Intermediate validation
between back and front end
Test in REST service
To guarantee stability during
continuous test cycl...
REST API
Our API “documentation” (you may use swagger)
ExampleURLVerbAction
/api/v1/person/api/v1/personGETList persons
/a...
REST SERVICE AUTOMATION
One of the most important layer
Have same importance as UI has
Always assert business transactions...
MOCK FOR REST TESTS
The easiest way to create mocks for test
Microframework with Java 8 power
Great choice for micro servi...
MOCK FOR REST TESTS
Because you will not test in production (all the time), right?
Mock example with fixed data
Using fixe...
MOCK FOR REST TESTS
Mock example with dynamic data
Create a list of pre-defined data may be a good way to
manage the testi...
REST
ASSURED
Easy DSL for REST service automation
Uses the give-when-then (BDD) syntax
https://github.com/jayway/rest-assu...
WHAT I NEED?
What is needed to create a REST test automation with RestAssured
Import some static classes
Set the base URI,...
REST TEST AUTOMATION
You need do set the URL, path and port
Before and After (setup | tearDown) for each tests
A good solu...
RestAssured has a fluent API to automate REST tests
RestAssured test example
Sending a GET with id 1 (given) and the asser...
SELENIUM
WEBDRIVER
Browser automation API for real browsers (including IE)
Can be controller by many programming languages...
WHAT I NEED?
What you need to create your first web test with Selenium
Web browser and a driver*
A browser to use the insp...
INSPECT AN WEB ELEMENT ON A BROWSER
A way to get the find an element for future utilization
Inspect
button
PROCESS TO CREATE WEB TEST SCRIPT
Easy process to create all yours web test scripts
Selenium test
script creation
process
...
WEB TEST AUTOMATION
Selenium has an easy DLS
Selenium Automated test
Complete example with navigation, interrogation, mani...
1
2
3
4
Use Page Objects to create modular test scripts
Apply design patterns in your test codebase
Execute web test in di...
PRO-TIPS FOR YOUR WEB TEST SUITE
Is really important divide your tests into onto suites grouped by test levels
HEADLESS TE...
APPIUM
API for automation on mobile devices
Android and iOS supported
http://appium.io
Execution on emulators, devices our...
WHAT I NEED?
Pre-reqs to create an automated test for mobile with Appium
Android SDK
Appium (via Appium.app or Nodejs)
Con...
INSPECT COMPONENTS
You can inspect na component using uiautomatorviewer
Inspect
button
Inspected
component
Component
attri...
PROCESS TO CREATE MOBILE TEST SCRIPT
Easy process to create all your mobile test scripts
Appium test
script creation
proce...
MOBILE TEST AUTOMATION
Despite of DesiredCapabilities and Session, is the same Selenium script
Example with a pre-installe...
PRO TIPS FOR MOBILE TEST AUTOMATION
For a more professional test script
1
2
3
4
Execute tests with fresh and pre installed...
Thank you!
Code for the all apps (back-end, front-end and tests)
https://github.com/eliasnogueira/test-automation-javaone-...
Upcoming SlideShare
Loading in …5
×

Java Test Automation for REST, Web and Mobile

Presentation about how to use REST, Web and Mobile open source tools to increase your test codebase.
This presentation was made by me and Edson Yanaga for JavaOne 2017 San Francisco on 04/09/2017

Java Test Automation for REST, Web and Mobile

  1. 1. JAVA TEST AUTOMATION FOR REST | WEB | MOBILE E L I A S N O G U E I R A @ e l i a s n o g u e i r a E D S O N Y A N A G A @ y a n a g a
  2. 2. Elias Nogueira @eliasnogueira Senior QA Engineer, Agile Coach & Trainer at Sicredi Postgraduate Professor at Unisinos.br Active community engagement - The Developers Conference - Google Developer Group - Agile Coach Meetup
  3. 3. Edson Yanaga @yanaga Director of Developer Experience, Red Hat Oracle Java Champion Loren ipsus
  4. 4. Intermediate validation between back and front end Test in REST service To guarantee stability during continuous test cycles Mock in REST service Functional and Acceptance tests on Mobile UI Test in Mobile UI Functional and Acceptance tests on Web UI Test in Web UI TOOL BOX The correct toolbox is a key in a automation process
  5. 5. REST API Our API “documentation” (you may use swagger) ExampleURLVerbAction /api/v1/person/api/v1/personGETList persons /api/v1/person/27/api/v1/person/:idGETGet person by id /api/v1/person/api/v1/personPOSTCreate a person /api/v1/person/33/api/v1/person/:idPUTUpdate a person by id /api/v1/person/52/api/v1/person/:idDELETERemove a person by id
  6. 6. REST SERVICE AUTOMATION One of the most important layer Have same importance as UI has Always assert business transactions On new services, try do validate manually first CURL (CLI) PostMan (Standalone application | Google Chrome extension)
  7. 7. MOCK FOR REST TESTS The easiest way to create mocks for test Microframework with Java 8 power Great choice for micro services Easy REST implementation to create you own mock with real response http://sparkjava.com
  8. 8. MOCK FOR REST TESTS Because you will not test in production (all the time), right? Mock example with fixed data Using fixed data is a good solution to test with a real data (req, res) without code changes
  9. 9. MOCK FOR REST TESTS Mock example with dynamic data Create a list of pre-defined data may be a good way to manage the testing data Because you will not test in production (all the time), right?
  10. 10. REST ASSURED Easy DSL for REST service automation Uses the give-when-then (BDD) syntax https://github.com/jayway/rest-assured
  11. 11. WHAT I NEED? What is needed to create a REST test automation with RestAssured Import some static classes Set the base URI, base path and port (if needed) import static io.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; baseURI = "http://localhost"; basePath = "/api"; port = 4567;
  12. 12. REST TEST AUTOMATION You need do set the URL, path and port Before and After (setup | tearDown) for each tests A good solution to start and stop your API mock server using Spark
  13. 13. RestAssured has a fluent API to automate REST tests RestAssured test example Sending a GET with id 1 (given) and the assert the response/results (then) REST TEST AUTOMATION
  14. 14. SELENIUM WEBDRIVER Browser automation API for real browsers (including IE) Can be controller by many programming languages http://seleniumhq.org W3C Simulate an real user on browser
  15. 15. WHAT I NEED? What you need to create your first web test with Selenium Web browser and a driver* A browser to use the inspect tool (native function in various browsers) [ProTip] Use any software to change internet speed * you will need a proper driver (executable file) to each browser
  16. 16. INSPECT AN WEB ELEMENT ON A BROWSER A way to get the find an element for future utilization Inspect button
  17. 17. PROCESS TO CREATE WEB TEST SCRIPT Easy process to create all yours web test scripts Selenium test script creation process Browser initialization and navigation control (back, forward, refresh) Navigation A way to find a web element id, name, cssSelector, xpath Interrogation Wait for dynamic elements or some asynchronous request based on web elements Synchronization A way to interact with the web elements click, clear, sendKeys, getText Manipulation 1 2 3 4
  18. 18. WEB TEST AUTOMATION Selenium has an easy DLS Selenium Automated test Complete example with navigation, interrogation, manipulation and synchronization
  19. 19. 1 2 3 4 Use Page Objects to create modular test scripts Apply design patterns in your test codebase Execute web test in different internet speeds Use XPATH only when needed PRO TIPS FOR WEB TEST AUTOMATION For a more professional test script
  20. 20. PRO-TIPS FOR YOUR WEB TEST SUITE Is really important divide your tests into onto suites grouped by test levels HEADLESS TEST ACCEPTANCE TEST FUNCTIONAL TEST AUTOMATION TEST SUITE 1 2 3 4 GIVE FAST FEEDBACK FOR CONTINUOUS TEST CYCLES TEST THE SYSTEM IN A USER PERSPECTIVE TEST WITH A BUSINESS RULES PERSPECTIVE 1 2 3
  21. 21. APPIUM API for automation on mobile devices Android and iOS supported http://appium.io Execution on emulators, devices our cloud Test on native or hybrid apps
  22. 22. WHAT I NEED? Pre-reqs to create an automated test for mobile with Appium Android SDK Appium (via Appium.app or Nodejs) Configure your path with (tools | platform-tools | tools/bin) SDK Platform + System Image (to the emulator) Emulator or Real Device
  23. 23. INSPECT COMPONENTS You can inspect na component using uiautomatorviewer Inspect button Inspected component Component attributes
  24. 24. PROCESS TO CREATE MOBILE TEST SCRIPT Easy process to create all your mobile test scripts Appium test script creation process Capabilities like Platform, Version, Target app and others DesiredCapabilities Start the session between Appium and Device (Appium.app or Nodejs) Session Wait for async requests basing on components wait Synchronization The same way we do with Selenium Find and interact with components Interrogation and Manipulation 1 2 3 4
  25. 25. MOBILE TEST AUTOMATION Despite of DesiredCapabilities and Session, is the same Selenium script Example with a pre-installed app Complete example targeting an Android platform
  26. 26. PRO TIPS FOR MOBILE TEST AUTOMATION For a more professional test script 1 2 3 4 Execute tests with fresh and pre installed app Create a test suite with user focus Test on other networks(Wi-Fi, 3G…) Test non-function req.
  27. 27. Thank you! Code for the all apps (back-end, front-end and tests) https://github.com/eliasnogueira/test-automation-javaone-2017

×