Definition Story📕 • Workload increases • Develop more features • More features = More Money • More subdivisions created, coming soon with more features
Definition Story📕 • Workload increases • Feature complexity increases ⏫ • Develop more features • More features = More Money • More subdivisions created, coming soon with more features
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • Develop more features • More features = More Money • More subdivisions created, coming soon with more features
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization:
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization: We need to test before we ship
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization: We need to test before we ship
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization: We need to test before we ship • Hire QA engineers
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization: We need to test before we ship • Hire QA engineers • Start writing unit tests for the features
Definition Story📕 • Workload increases • Feature complexity increases • Reports from users: ⏫ • I am not able to login • Develop more features • More features = More Money • More subdivisions created, coming soon with more features • I am not able to click on the Add to Cart button • My app crashes when I go on Payments screen • Still Increasing • Realization: We need to test before we ship • Hire QA engineers • Start writing unit tests for the features
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Onboarding cost to automation tools
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Onboarding cost to automation tools • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful • Time to get first flow automation working
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Different API level devices • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Different API level devices • Managing traffic of builds • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Different API level devices • Managing traffic of builds • Different OEMs devices • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Different API level devices • Managing traffic of builds • Different OEMs devices • More • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 Automation More Features • Started testing manually before releasing • Reports reduced and app got stabilised • Time to get first flow automation working • Infrastructure to run tests • Different API level devices • Managing traffic of builds • Different OEMs devices • More • CI integration • Onboarding cost to automation tools • Automation tools are “non-declarative” • Setting up automation tools is painful
Definition Story📕 User Reports Functional Bugs • App is launching slowly • Battery draining • Patterns in user reports • Gap between QAs and Developers
Definition Story📕 User Reports Functional Bugs • App is launching slowly • Battery draining • Activity starts slowly • Patterns in user reports • Gap between QAs and Developers
Definition Story📕 User Reports Functional Bugs • App is launching slowly • Battery draining • Activity starts slowly Non Functional Bugs • Patterns in user reports • Gap between QAs and Developers
Definition Story📕 User Reports Functional Bugs • App is launching slowly • Battery draining • Activity starts slowly Non Functional Bugs • Appium support for solving Non Functional Bugs ☹ • Patterns in user reports • Gap between QAs and Developers
• Setup should be very easy • Starting and writing first flow should be easy • Integration with CI should be very easy Ideal setup for UI testing at scale
• Setup should be very easy • Starting and writing first flow should be easy • Integration with CI should be very easy • Managing infrastructure should be easy Ideal setup for UI testing at scale
• Helpful for dealing with functional and non-functional issues • Setup should be very easy • Starting and writing first flow should be easy • Integration with CI should be very easy • Managing infrastructure should be easy Ideal setup for UI testing at scale
Sit back! • No need of idling resource • No need pepper test case with Thread.sleep • Decouples with codebase, blazing fast iterations • Not much jargon involved, making maestro tests sharable source
Sit back! • No need of idling resource • No need pepper test case with Thread.sleep • Decouples with codebase, blazing fast iterations • Not much jargon involved, making maestro tests sharable source • And, cross platform !
Dealing with Non-Functional Bugs • Frame drops 😖 • Identify core flows of app which have high user traffic • Following twitter page flow • Write Maestro Flow
Dealing with Non-Functional Bugs • Frame drops 😖 • Identify core flows of app which have high user traffic • Following twitter page flow • Write Maestro Flow • Run: adb shell dumpsys gfxinfo com.twitter.android framestats • Collect output and capture important metrics
Dealing with Non-Functional Bugs • Frame drops 😖 • Identify core flows of app which have high user traffic • Following twitter page flow • Write Maestro Flow • Run: adb shell dumpsys gfxinfo com.twitter.android framestats • Collect output and capture important metrics • Repeat
Dealing with Non-Functional Bugs • Root Causing • Monitor janky frame percentage • Generate flame graphs to narrow down on heavy operations Debug API Debug.startMethodTracingSampling(
Dealing with Non-Functional Bugs • Root Causing • Monitor janky frame percentage • Generate flame graphs to narrow down on heavy operations Debug API Debug.startMethodTracingSampling(
Integrate with CI maestro cloud ./maestro —apiKey • Natively integrating with your CI: Github, Gitlab, Bitbucket, etc. • Integrate with PRs ✅ ✅ • Device management and scaling ✅
Integrate with CI maestro cloud ./maestro —apiKey • Natively integrating with your CI: Github, Gitlab, Bitbucket, etc. • Integrate with PRs ✅ ✅ • Device management and scaling ✅ • Trigger on PR stage ✅
Integrate with CI maestro cloud ./maestro —apiKey • Natively integrating with your CI: Github, Gitlab, Bitbucket, etc. • Integrate with PRs ✅ ✅ • Device management and scaling ✅ • Trigger on PR stage ✅ • Different API level devices ✅
Ideal setup of UI testing • Helpful for dealing with functional and non-functional issues • Setup should be very easy • Starting and writing first flow should be easy • Integration with CI should be very easy • Managing infrastructure should be easy ✅ ✅ ✅ ✅ ✅
Community Support is Great • Performance tool to get FPS, CPU usage for search and explore interaction by Craig Atkinson:
https://www.atkinsondev.com/post/android-maestro-testing/ • Mock API servers for Maestro Android testing using MockServer and Gradle • High level UI testing with Maestro
https://twitter.com/mobile__dev/status/1580952966474846209 • Facebook registration flow automation • Performance tool to get FPS, CPU usage for search and explore interaction • Mock API servers for Maestro Android testing using MockServer and Gradle • High level UI testing with Maestro
https://twitter.com/mobile__dev/status/1580952966474846209 • Facebook registration flow automation • Performance tool to get FPS, CPU usage for search and explore interaction • Mock API servers for Maestro Android testing using MockServer and Gradle • High level UI testing with Maestro • Much more: Join Maestro slack community !!