2. About Suparna
■ XCTest, XCUITest, Selenium, Appium, Espresso, UIAutomator,
SeeTest, Postman, Jenkins, CircleCI, Junit, Nunit, TestNG, GIT
■ Written Tech solutions in BrowserStack, Lambdatest, Medium
■ 1st Winner of TechGig Testathon 2018 - "India's Best Tester"
■ Silver Winner of Applitools Automation Hackathon 2020 -
Top 70
suparna-khamaru
/in/suparnakhamaru/ super-tester.medium.com
3. Agenda
Why Shift Left in Mobile?
Mobile Test Automation Pyramid
How much Mobile Automation is enough?
Right way to Automate
Best Practices in Mobile Automation
13. Manual
Testing
Non
Functional
Testing
•End to End Tests
•UI Tests on Staging
•UI Tests with SDK integration
•UI Tests on Mock Server
Functional Testing
•Library / SDK / Framework /
API Integration Tests
Integration Testing
•Unit Tests
•Snapshot Tests
Unit Testing
(5%)
(95%)
60%
15%
10%
10%
14. Automation Test Framework
Development
Build
Unit Test Suite UI Test Suite Integrated to CI
Locators
Network
Layer
Set Accessibility
Identifiers
Reusable
& Optimised page
objects
Tests
Test Plan
Report with logs
& screenshots
Test Data
UI tests with
test/prod
environment
UI Tests with SDK
integration
UI tests with API
integration
UI Tests with
Mock API
Code & Test Coverage
15. UI tests with Test/Prod environment
UI Tests with SDK integration
UI tests with API integration
UI Tests with Mock API
Network Layers in E2E Testing
App
Test
Environment
UI Test
Flaky
Tests
16. UI tests with Test/Prod environment
UI Tests with SDK integration
UI tests with API integration
UI Tests with Mock API
Network Layers in E2E Testing
App
Mocke
d API
UI Test
100%
Reliable
Tests
Swifter
Embassy
Nimble
Wiremock
OkHttp
17. UI tests with Test/Prod environment
UI Tests with SDK integration
UI tests with API integration
UI Tests with Mock API
Network Layers in E2E Testing
API
call
App UI Test
18. UI tests with Test/Prod environment
UI Tests with SDK integration
UI tests with API integration
UI Tests with Mock API
Network Layers in E2E Testing
App
SDK
Library
SDK Unit
Test
UI Test
19. UI Tests with SDK integration
Network Layers in E2E Testing
20. Manual
Testing
•Accessibility Tests
•Security Scans
•Performance Tests
•Localisation & Internationalization Tests
Non
Functional
Testing
•End to End Tests
•UI Tests on Staging
•UI Tests with SDK integration
•UI Tests on Mock Server
Functional Testing
•Library / SDK / Framework /
API Integration Tests
Integration Testing
•Unit Tests
•Snapshot Tests
Unit Testing
(5%)
(95%)
60%
15%
10%
10%
23. •Upgradation Tests
•Exploratory Tests
•Dog Food - Alpha & Beta Tests
Manual
Testing
•Accessibility Tests
•Security Scans
•Performance Tests
•Localisation & Internationalization Tests
Non
Functional
Testing
•End to End Tests
•UI Tests on Staging
•UI Tests with SDK integration
•UI Tests on Mock Server
Functional Testing
•Library / SDK / Framework /
API Integration Tests
Integration Testing
•Unit Tests
•Snapshot Tests
Unit Testing
(5%)
(95%)
60%
15%
10%
10%
24. •Upgradation Tests
•Exploratory Tests
•Dog Food - Alpha & Beta Tests
Manual
Testing
•Accessibility Tests
•Security Scans
•Performance Tests
•Localisation/Internationalization
Non
Functional
Testing
•End to End Tests
•UI Tests on Staging
•UI Tests with SDK
•UI Tests on Mock Server
Functional
Testing
•Library / SDK /
Framework / API
Integration Tests
Integration Testing
•Unit Tests
•Snapshot Tests
Unit Testing
(5%)
(95%)
60%
15%
10%
10%
25. •Upgradation Tests
•Exploratory Tests
•Dog Food - Alpha & Beta Tests
Manual
Testing
•Accessibility Tests
•Security Scans
•Performance Tests
•Localisation/Internationalization
Non
Functional
Testing
•End to End Tests
•UI Tests on Staging
•UI Tests with SDK
•UI Tests on Mock Server
Functional
Testing
•Library / SDK /
Framework / API
Integration Tests
Integration Testing
•Unit Tests
•Snapshot Tests
•Code & Test
Coverage
Unit Testing
(5%)
(95%)
60%
15%
10%
10%
Nightly Run
Nightly Run
Nightly Run
Every PR
Every PR
Every PR
26. Easiest CI integrations
■ Simulators / Emulators
■ Browserstack
■ LambdaTest
■ AWS Device farm
■ TestingBot
■ SauceLabs
■ Firebase Test Lab
xcodebuild test -workspace sampleApp.xcworkspace -scheme sampleAppUITests
-destination 'platform=iOS Simulator,name=iPhone 11' -resultBundlePath
ResultBundle.xcresult
./gradlew connectedAndroidTest
Upload
app
Upload
test suite
Build
27. Best Practices
■ Appoint Dedicated personnel for each Job
■ Continuous Testing
■ Our test should FAIL gracefully
■ Separate test plans
■ No flaky tests
■ Not replacing Exploratory / Manual
Testing
■ Write maintainable, reusable, optimized &
readable Test code
28. Summary
Accessibility
Common Repository
Robust and Low
maintenance
High Reusability of code
Fastest Test Executions
Fastest Bug Detections
Fastest Scripting
Parallel Automation
Boosts confidence
Fastest Time to Market
every time
Reduced human errors in
testing
Earliest Bug Fix
More mature & Reliable
Slower To write tests
Slower to Execute the tests
Slower to Fix
Cost of Bug
Unit tests is directly done by Dev team with XCTest and Junit frameworks on unit levels, sometimes using stubs.
Snapshot tests are also known as Visual tests and screenshot tests, where you literally save lot of time.
- https://medium.com/dev-jam/snapshot-testing-in-swift-9d52cbec075c
- https://github.com/robertofrontado/snapshot-testing-sample
Security Scans (Veracode, Ostorlab)
Performance Tests (Newrelic, Firebase)
End to End Tests (Distributed Parallel)
Security Scans (Veracode, Ostorlab)
Performance Tests (Newrelic, Firebase)
End to End Tests (Distributed Parallel)
E2E Test Suite
End to End Tests (Distributed Parallel)
Code & Test Coverage Measures
E2E Test Suite
End to End Tests (Distributed Parallel)
Code & Test Coverage Measures
E2E Test Suite
End to End Tests (Distributed Parallel)
Code & Test Coverage Measures
Security Scans (Veracode, Ostorlab)
Performance Tests (Newrelic, Firebase)
End to End Tests (Distributed Parallel)
Compare with third party automation tools
Versus
Google and apple test frameworks