Break The Ice
Go to https://kahoot.it
Demystifying Selenium Grid
Syam Sasi
Senior Software Engineer @ Carousell
https://about.me/syamsasi
About Me
● 8 Years in Industry
● Ex-Oracalite
● Co-Organizer of TAQELAH Meetups in Singapore
God’s Own Country
Need For Selenium Grid
● Run test cases on different browsers / devices or platforms
● Minimize the test execution time
● Scaling up the test infrastructure
What is Selenium Grid?
https://www.youtube.com/watch?v=6nq1dOiTdC8
Hub And Node
● Hub – Hub will be the central machine which will redirect the commands to the
respective node based on parameter
● Node- Node will be the actual machine where the test will be executed.
Starting The HUB
1. Download the selenium server from here
2. Create a folder called grid and copy the downloaded jar to this folder
3. Launch the hub by the following command
java -jar selenium-server-standalone-3.x.y.jar -role hub
4. Go to http://localhost:4444/grid/console and check hub is running or not
Starting The Nodes
1. Register the node by the following command
java
-Dwebdriver.gecko.driver="/Users/carousell/SeleniumGridVietnam/drivers/geckodriver"
-jar selenium-server-standalone-3.x.y.jar -role webdriver -hub
http://a.b.c.d:4444/grid/register -port 5566
2. Go to http://localhost:4444/grid/console and check node is registered
Hub using JSON Configuration
{
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"withoutServlets": [],
"custom": {},
"capabilityMatcher":
"org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
"throwOnCapabilityNotPresent": true,
"cleanUpCycle": 5000,
"role": "hub",
"debug": false,
"browserTimeout": 0,
"timeout": 1800
}
java -jar selenium-server-stand-alone-3.x.y.jar -role hub
-hubConfig hubConfig.json
Node using JSON Configuration
java
-Dwebdriver.gecko.driver="/Users/carousell/SeleniumGridVietnam/driv
ers/geckodriver"
-Dwebdriver.chrome.driver="/Users/carousell/SeleniumGridVietnam/dri
vers/emulator/chromedriver" -jar
selenium-server-standalone-3.x.y.jar -role node -nodeConfig
nodeConfig.json
Default Node Config file can be found here
Grid For Mobile Browsers
appium --nodeconfig node-config-device4724.json -p 4724 -cp
4726 --chromedriver-executable="/path/to/chromedriver"
Selenium Grid Extras
● Ability to control individual grid nodes, following is an incomplete list of OS level tasks:
○ Killing any browser instance by name
○ Stopping any Process by PID
○ Moving mouse to specific location
○ Get Memory usage and disk statistics
● Automatically upgrade WebDriver binaries
● Restart node after a set number of test executions
● Central storage of configurations for all nodes on the HUB server
● Screenshots at the OS level
https://github.com/groupon/Selenium-Grid-Extras
Docker Containers For Selenium Grid
● Zalenium
● Selenoid
Q and A
References
● https://github.com/syamsasi99/SeleniumGridVietnam/tree/master
● http://learn-automation.com/selenium-grid-for-remote-execution/
● https://github.com/aerokube/selenoid
● https://github.com/zalando/zalenium
● https://github.com/groupon/Selenium-Grid-Extras
● https://rationaleemotions.github.io/gridopadesham/CUSTOMIZE_GRID.html
Thank You!
Carousell Quality Culture
Ngan Do
Software Engineer @ Carousell
https://www.linkedin.com/in/do-thi-my-ngan/
About Me
● 3 Years in Industry
● 3 Years working at Carousell
● 3 Years experience in Mobile Automation
Testing
Quality Throughout The Development Cycle
● Plan
● Design
● Development
● Release
● Monitor
Quality Throughout The Development Cycle
Shift Left
The earlier a problem is found the easier and cheaper it is to fix it!
Carousell Quality Methodologies
● Testing party
● Fast Feedback Tests
● Run Auto-Regression Test every day
● Dogfooding
Testing Party
Fast Feedback Tests
Feedback about
functional quality to
devs
Tests that cover
critical flows
Execution time < 15 minutes
Detecting & fixing breaking
issues earlier
Fast Feedback Tests as a quality gate for pull requests
Verify Every Change
✔✘
Run Auto-Regression Test Every Day
nightly build
Dogfooding
Build the Quality Culture ...
● Software engineers
● Software engineers in testing
● Scrum masters
● Product managers
● Designers
● Helpdesk / support
● Managers
● Recruiters
● ...
… to deliver Quality to the users
● It’s all about the users!
● 7 markets, ~200 million listings, ~70 million items sold
● https://blog.carousell.com/carousellstories
Q&A
Thank you!
Weekly Release Process
for Mobile Apps
Long Ly
Senior Software Engineer @ Carousell
https://www.linkedin.com/in/longlyme/
About Me
● 5 Years in Industry
● Used to work both in outsource and product
companies
● Mainly taking care release process in Carousell
Agenda
1. Why Weekly?
2. Main Phases
3. Follow up Activities
4. Tools
5. Q&A
Why Weekly?
Why Weekly?
● Releases are time-based, rather than content-based
● As-short-as needed dev cycle
● Deliver new features to users faster
● Fix user’s bug reported faster
● Receive customer feedback faster
● Eliminates the need for hotfixes
Main Phases
Main Phases
Main Phases
Hotfix?
Follow up Activities
Follow up Activities
➔ Checking messages in #dogfood-report (staff users) and
#support (external users) channels to know asap if any
reports for released builds!?
➔ If any issue, consider to halt the rollout process?
◆ Hotfixes
● Before submission: easy to go
● After submission: painful and take time
Tools
Tools
● Release activities (Carousell internal bot)
● Monitoring
● Release testing
● Translations
Keys Takeaway
❖ Weekly release process for quickly users’ experience and
feedback
❖ Making sure quality by shift-left testing
➢ Fast feedback test
➢ Nightly regression
➢ Weekly release testing
❖ Tools
➢ Automate all activities that we can (slack bots, CI tools)
➢ Monitor app’s health
Q&A
Quiz Time
Go to https://kahoot.it
Thank you!

Vietnam qa meetup

  • 2.
    Break The Ice Goto https://kahoot.it
  • 3.
  • 4.
    Syam Sasi Senior SoftwareEngineer @ Carousell https://about.me/syamsasi About Me ● 8 Years in Industry ● Ex-Oracalite ● Co-Organizer of TAQELAH Meetups in Singapore
  • 5.
  • 6.
    Need For SeleniumGrid ● Run test cases on different browsers / devices or platforms ● Minimize the test execution time ● Scaling up the test infrastructure
  • 7.
    What is SeleniumGrid? https://www.youtube.com/watch?v=6nq1dOiTdC8
  • 8.
    Hub And Node ●Hub – Hub will be the central machine which will redirect the commands to the respective node based on parameter ● Node- Node will be the actual machine where the test will be executed.
  • 9.
    Starting The HUB 1.Download the selenium server from here 2. Create a folder called grid and copy the downloaded jar to this folder 3. Launch the hub by the following command java -jar selenium-server-standalone-3.x.y.jar -role hub 4. Go to http://localhost:4444/grid/console and check hub is running or not
  • 10.
    Starting The Nodes 1.Register the node by the following command java -Dwebdriver.gecko.driver="/Users/carousell/SeleniumGridVietnam/drivers/geckodriver" -jar selenium-server-standalone-3.x.y.jar -role webdriver -hub http://a.b.c.d:4444/grid/register -port 5566 2. Go to http://localhost:4444/grid/console and check node is registered
  • 11.
    Hub using JSONConfiguration { "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "registryClass": "org.openqa.grid.internal.DefaultGridRegistry", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 5000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 } java -jar selenium-server-stand-alone-3.x.y.jar -role hub -hubConfig hubConfig.json
  • 12.
    Node using JSONConfiguration java -Dwebdriver.gecko.driver="/Users/carousell/SeleniumGridVietnam/driv ers/geckodriver" -Dwebdriver.chrome.driver="/Users/carousell/SeleniumGridVietnam/dri vers/emulator/chromedriver" -jar selenium-server-standalone-3.x.y.jar -role node -nodeConfig nodeConfig.json Default Node Config file can be found here
  • 13.
    Grid For MobileBrowsers appium --nodeconfig node-config-device4724.json -p 4724 -cp 4726 --chromedriver-executable="/path/to/chromedriver"
  • 14.
    Selenium Grid Extras ●Ability to control individual grid nodes, following is an incomplete list of OS level tasks: ○ Killing any browser instance by name ○ Stopping any Process by PID ○ Moving mouse to specific location ○ Get Memory usage and disk statistics ● Automatically upgrade WebDriver binaries ● Restart node after a set number of test executions ● Central storage of configurations for all nodes on the HUB server ● Screenshots at the OS level https://github.com/groupon/Selenium-Grid-Extras
  • 15.
    Docker Containers ForSelenium Grid ● Zalenium ● Selenoid
  • 16.
  • 17.
    References ● https://github.com/syamsasi99/SeleniumGridVietnam/tree/master ● http://learn-automation.com/selenium-grid-for-remote-execution/ ●https://github.com/aerokube/selenoid ● https://github.com/zalando/zalenium ● https://github.com/groupon/Selenium-Grid-Extras ● https://rationaleemotions.github.io/gridopadesham/CUSTOMIZE_GRID.html
  • 18.
  • 19.
  • 20.
    Ngan Do Software Engineer@ Carousell https://www.linkedin.com/in/do-thi-my-ngan/ About Me ● 3 Years in Industry ● 3 Years working at Carousell ● 3 Years experience in Mobile Automation Testing
  • 21.
    Quality Throughout TheDevelopment Cycle ● Plan ● Design ● Development ● Release ● Monitor
  • 22.
    Quality Throughout TheDevelopment Cycle
  • 23.
    Shift Left The earliera problem is found the easier and cheaper it is to fix it!
  • 24.
    Carousell Quality Methodologies ●Testing party ● Fast Feedback Tests ● Run Auto-Regression Test every day ● Dogfooding
  • 25.
  • 26.
    Fast Feedback Tests Feedbackabout functional quality to devs Tests that cover critical flows Execution time < 15 minutes Detecting & fixing breaking issues earlier Fast Feedback Tests as a quality gate for pull requests
  • 27.
  • 28.
    Run Auto-Regression TestEvery Day nightly build
  • 29.
  • 30.
    Build the QualityCulture ... ● Software engineers ● Software engineers in testing ● Scrum masters ● Product managers ● Designers ● Helpdesk / support ● Managers ● Recruiters ● ...
  • 31.
    … to deliverQuality to the users ● It’s all about the users! ● 7 markets, ~200 million listings, ~70 million items sold ● https://blog.carousell.com/carousellstories
  • 32.
  • 33.
  • 34.
  • 35.
    Long Ly Senior SoftwareEngineer @ Carousell https://www.linkedin.com/in/longlyme/ About Me ● 5 Years in Industry ● Used to work both in outsource and product companies ● Mainly taking care release process in Carousell
  • 36.
    Agenda 1. Why Weekly? 2.Main Phases 3. Follow up Activities 4. Tools 5. Q&A
  • 37.
  • 38.
    Why Weekly? ● Releasesare time-based, rather than content-based ● As-short-as needed dev cycle ● Deliver new features to users faster ● Fix user’s bug reported faster ● Receive customer feedback faster ● Eliminates the need for hotfixes
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
    Follow up Activities ➔Checking messages in #dogfood-report (staff users) and #support (external users) channels to know asap if any reports for released builds!? ➔ If any issue, consider to halt the rollout process? ◆ Hotfixes ● Before submission: easy to go ● After submission: painful and take time
  • 44.
  • 45.
    Tools ● Release activities(Carousell internal bot) ● Monitoring ● Release testing ● Translations
  • 46.
    Keys Takeaway ❖ Weeklyrelease process for quickly users’ experience and feedback ❖ Making sure quality by shift-left testing ➢ Fast feedback test ➢ Nightly regression ➢ Weekly release testing ❖ Tools ➢ Automate all activities that we can (slack bots, CI tools) ➢ Monitor app’s health
  • 47.
  • 48.
    Quiz Time Go tohttps://kahoot.it
  • 49.