SlideShare a Scribd company logo
Getting Predictable
Predictable Delivery in Mobile Application Development
Anjana Somathilake
Director, Engineering and Architecture
Coverage!
Target Audience !

App Developers who are challenged by,

•  QA team that demands stability
•  Continuous injection of regression defects
•  Random app crashes
•  …
Key success factors of tech startups!

• 
Founder(s)!
Founders have strong leadership skills, charisma and communication skills.
build strong teams, attract strategic partners/investors, and have deep domain knowledge.

• 
Vision!
Vision to make the company unique and let it stand out amongst its competitors. 
• 
Team!
Strong teams that can execute on any project and make it sustainable and profitable. 
• 
Market opportunity!
The product, solution or technology should solve s demand that the target market really needs. 

• 
High-quality product!
Must create cool, innovative and useful products of high quality.
Key Success Factors of a High Quality Product!
“Technology !
Selection”!
“Engineering!
Rigor”!

•  On Time Delivery!
•  Functional Beauty !

“Tech Architecture!
and Design”!

•  User Experience (UX) !
“Performance !
Tuning”!
The Challenge!!

Predictability!
Our Topic?!

Getting Predictable!
Focus !
Impact!
Challenges

KSF

Missing
Regression Aggressive Add New Bus
Random Manual Beta App
Usage
Defects
 Timelines
 Developer
 Factor
Crashes
 Testing
 Distribution
Analytics

On Time
Delivery


 


 


 


 


 


 


 


 

UX


 


 


 


 


 


 


 


 

Functional
Beauty


 


 


 


 


 


 


 


 
Impact of the Solution!
Regression Aggressive
Defects
Timelines

_
Acceptance
Testing

Add New
Bus Missing Usage Random
Developer
 Factor
 Analytics
Crashes

 

 


 

 

Unit Tests


 


 


 

CI Builds


 


 


 


 


 

App Distribution
 
Crash Reports
Actions and
Events Tracking
 


 


 

 
 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Manual
Beta App
Testing
 Distribution

 

 


 

 

 


 

 


 

 

 
 
Solution Approach!
Automation!
Unit Testing – JUint and OCUnit!

I don’t believe in
Unit Testing

Are you kidding
me?
Acceptance Testing – What is Calabash?!

• 

Tool for BDD (Behavior-driven development) style acceptance testing,
consisting of two projects:
• 
• 

Calabash Android: https://github.com/calabash/calabash-android
Calabash iOS: https://github.com/calabash/calabash-ios

• 

Open-Source and Free

• 

Written in Objective C, Java and Ruby

• 

Test cases will be written in Ruby
Calabash Features!

• 

Write “business” readable specifications (Cucumber)

• 

• 

Execute the spec as automated acceptance tests

• 

BDD via the Cucumber tool

• 

Cross-platform testing: maximize sharing when developing on multiple
platforms

• 

Runs on physical devices as well as simulators/emulators

Native and hybrid apps for Android and iOS
Calabash Architecture!
Calabash Demo!


• 
• 
• 
• 

Calabash Console 
Cucumber
Feature Files
Step Definitions
Automated Builds – Jenkins CI!

•  Contiguous integration for both iOS and Android
•  Execute unit tests and Calabash tests as part of CI
•  Identify build failures
•  Automated emails when build errors occur, tests fails
•  Upload builds to TestFlight!
Jenkins CI - Dashboard!
https://ci.jenkins-ci.org/
Continuous Inspection of Code Quality - Clang Static Analyzer!

• 

Source code analysis tool that finds bugs in C, C++, and Objective-C!

• 

Find basic syntactic issues to deep bugs by reasoning about the
semantics of code

• 

Clang Static Analyzer is built on top of Clang and LLVM

• 

• 

• 


This can be easily integrated with CI servers (i.e Jenkins)
Download http://clang-analyzer.llvm.org/
Demo: http://buildbot.llvm.linuxfoundation.org/checker/
App Distribution for Beta Testing - TestFlight!

•  Your private App store/Play store
•  Upload your builds and grant access to beta testers
•  Easily manage multiple versions of your app
•  Manage users, teams and create distribution groups
•  Easily collect UUIDs for provisioning
•  Integrate with CI build servers (i.e Jenkins)
•  Collect feedback on builds from testers
•  Support for both iOS and Android
TestFlight - Demo!
https://testflightapp.com/dashboard/
Insight and Analytics!
Crash Reporting - Crashlytics!

•  Crash Reporting Service for Mobile Apps
•  Facilitate a developer focused report on the app crashes, highlighting the
root cause
•  Provides details such as type of device, free space on disk/RAM and
orientation
•  See the guilty line of the code, the number of users affected, the number
of occurrences of a crash
•  Allows adding log statements to code to track down bugs
•  Support for both iOS and Android
Crashlytics - Integration!
Crashlytics - Demo!
https://www.crashlytics.com
Actions and Events Tracking - Mixpanel!

• 

Mixpanel is an analytics platform for mobile & web, it helps you analyze
the actions users take in your app. 

• 

An action can be anything - uploading a picture, playing a video, or
sharing a post, for example.
Mixpanel - Features!

• 
• 
• 
• 
• 
• 
• 
• 
• 

Identify how customers use the app
Get to know the most used and least used features
Track app usage of individual users
Send push notifications/GCM, text messages and emails to users
Formulas for deep analysis for analytical data
Awesome reports, funnels, segmentations, graphs
Track revenue on purchases
Carry out surveys to get user feedback
Support for both iOS and Android
!

Mixpanel - How do my app's users invite their friends ?!
!

Mixpanel – Which Campaign gives us the most paying customers ?!
Mixpanel – Points distributed for most of the people that play my game ?!
Mixpanel – Integration (iOS)!
#define MIXPANEL_TOKEN @"YOUR_TOKEN"!
!
// Initialize the library with your!
// Mixpanel project token, MIXPANEL_TOKEN!
[Mixpanel sharedInstanceWithToken:MIXPANEL_TOKEN];!
!
// Later, you can get your instance with!
Mixpanel *mixpanel = [Mixpanel sharedInstance];!
In most cases, it makes sense to do this in 

application:didFinishLaunchingWithOptions:!
Mixpanel – Sending Event (iOS)!

Mixpanel *mixpanel = [Mixpanel sharedInstance];!
!
[mixpanel track:@"Plan Selected" properties:@{!
@"Gender": @"Female",!
@"Plan": @"Premium"!
}];!

Once you've initialized the library, you can track an event by calling

track:properties: with the event name and properties.
Mixpanel – Integration (Android)!
MixpanelAPI mixpanel =!
MixpanelAPI.getInstance(context, MIXPANEL_TOKEN);!
!
JSONObject props = new JSONObject();!
props.put("Gender", "Female");!
props.put("Plan", "Premium");!
!
mixpanel.track("Plan Selected", props);!
Mixpanel – Demo!
https://mixpanel.com/
Thank You!

More Related Content

PDF
Google APIs for NSBM Students
PDF
Test Driven Development - Workshop
PPTX
Live Panel: Appium Core Committers Answer Your Questions
PDF
[Srijan Wednesday Webinars] Building a High Performance QA Team
PDF
SauceCon19: Fashionable XCUITest for iOS App
PDF
NSTC2019: Choosing CI Friendly Mobile Automation Framework
PPTX
Do You Enjoy Espresso in Android App Testing?
PPTX
Testing Your Android and iOS Apps with Appium in Testdroid Cloud
Google APIs for NSBM Students
Test Driven Development - Workshop
Live Panel: Appium Core Committers Answer Your Questions
[Srijan Wednesday Webinars] Building a High Performance QA Team
SauceCon19: Fashionable XCUITest for iOS App
NSTC2019: Choosing CI Friendly Mobile Automation Framework
Do You Enjoy Espresso in Android App Testing?
Testing Your Android and iOS Apps with Appium in Testdroid Cloud

What's hot (20)

PPTX
Mobile Automation Using Appium - vodQA Bangalore 2015
PPTX
Everything You Need To Know about Appium and Selenium
PPTX
How to define an api
PDF
SauceCon 2017: Making Your Mobile App Automatable
PPTX
Do's and Don'ts of APIs
PPT
Appium tutorial| Appium Training
PDF
Using Selenium To Test Mobile? Meet Appium!
DOCX
Calabash my understanding
PDF
Mocking APIs Collaboratively with Postman
PPTX
Selenium Camp 2016
PDF
SauceCon 2017: Building a Continuous Delivery Pipeline with Testing in Mind
PDF
SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?
PPTX
Wheat - Mobile functional test automation
PPT
Six Steps To Build A Successful API
PDF
YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.
PPTX
Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud
PDF
SauceCon 2017: Testing @ the Speed of Concurrency
PDF
SauceCon 2017: test.allTheThings(): Digital Edition
PPTX
Parallel testing with appium
PPTX
Advanced Mocking for Swagger APIs
Mobile Automation Using Appium - vodQA Bangalore 2015
Everything You Need To Know about Appium and Selenium
How to define an api
SauceCon 2017: Making Your Mobile App Automatable
Do's and Don'ts of APIs
Appium tutorial| Appium Training
Using Selenium To Test Mobile? Meet Appium!
Calabash my understanding
Mocking APIs Collaboratively with Postman
Selenium Camp 2016
SauceCon 2017: Building a Continuous Delivery Pipeline with Testing in Mind
SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?
Wheat - Mobile functional test automation
Six Steps To Build A Successful API
YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.
Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud
SauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: test.allTheThings(): Digital Edition
Parallel testing with appium
Advanced Mocking for Swagger APIs
Ad

Similar to Getting Predictable - Pragmatic Approach for Mobile Development - Devday.lk 2013 (20)

PPTX
AppNotch Enterprise
PDF
IBM MobileFirst - Hybrid Application Development with Worklight
PPTX
CI/CD for mobile at HERE
PPTX
Building High Quality Android Applications
PDF
Low Code Capabilities of Digital Product Design Platforms
PPTX
Dashlane Mission Teams
PDF
AgilitySpeaks Case Study Packet
KEY
Why Do Mobile Projects Fail?
PPTX
DevOps for AI Apps
PPTX
AppNotch 2.0
PDF
SWE Interactive - Overview
PDF
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
PPTX
Nathan Kotek - Advanced App Solutions
PDF
Anshul Mahajan_iOS
KEY
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
PPT
Mobile media module part 6 - app development rev-mf
PPT
SOASTA Webinar: Process Compression For Mobile App Dev 120612
PDF
Howard Gebb Resume
PPTX
Mobile Application Development .pptx
PDF
Building Mobile (app) Masterpiece with Distributed Agile
AppNotch Enterprise
IBM MobileFirst - Hybrid Application Development with Worklight
CI/CD for mobile at HERE
Building High Quality Android Applications
Low Code Capabilities of Digital Product Design Platforms
Dashlane Mission Teams
AgilitySpeaks Case Study Packet
Why Do Mobile Projects Fail?
DevOps for AI Apps
AppNotch 2.0
SWE Interactive - Overview
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
Nathan Kotek - Advanced App Solutions
Anshul Mahajan_iOS
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Mobile media module part 6 - app development rev-mf
SOASTA Webinar: Process Compression For Mobile App Dev 120612
Howard Gebb Resume
Mobile Application Development .pptx
Building Mobile (app) Masterpiece with Distributed Agile
Ad

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Big Data Technologies - Introduction.pptx
PPT
Teaching material agriculture food technology
PPTX
A Presentation on Artificial Intelligence
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
KodekX | Application Modernization Development
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
cuic standard and advanced reporting.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Big Data Technologies - Introduction.pptx
Teaching material agriculture food technology
A Presentation on Artificial Intelligence
Mobile App Security Testing_ A Comprehensive Guide.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Understanding_Digital_Forensics_Presentation.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
cuic standard and advanced reporting.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
20250228 LYD VKU AI Blended-Learning.pptx

Getting Predictable - Pragmatic Approach for Mobile Development - Devday.lk 2013

  • 1. Getting Predictable Predictable Delivery in Mobile Application Development Anjana Somathilake Director, Engineering and Architecture
  • 3. Target Audience ! App Developers who are challenged by, •  QA team that demands stability •  Continuous injection of regression defects •  Random app crashes •  …
  • 4. Key success factors of tech startups! •  Founder(s)! Founders have strong leadership skills, charisma and communication skills. build strong teams, attract strategic partners/investors, and have deep domain knowledge. •  Vision! Vision to make the company unique and let it stand out amongst its competitors. •  Team! Strong teams that can execute on any project and make it sustainable and profitable. •  Market opportunity! The product, solution or technology should solve s demand that the target market really needs. •  High-quality product! Must create cool, innovative and useful products of high quality.
  • 5. Key Success Factors of a High Quality Product! “Technology ! Selection”! “Engineering! Rigor”! •  On Time Delivery! •  Functional Beauty ! “Tech Architecture! and Design”! •  User Experience (UX) ! “Performance ! Tuning”!
  • 9. Impact! Challenges KSF Missing Regression Aggressive Add New Bus Random Manual Beta App Usage Defects Timelines Developer Factor Crashes Testing Distribution Analytics On Time Delivery                 UX                 Functional Beauty                
  • 10. Impact of the Solution! Regression Aggressive Defects Timelines _ Acceptance Testing Add New Bus Missing Usage Random Developer Factor Analytics Crashes         Unit Tests       CI Builds           App Distribution   Crash Reports Actions and Events Tracking                                               Manual Beta App Testing Distribution                      
  • 13. Unit Testing – JUint and OCUnit! I don’t believe in Unit Testing Are you kidding me?
  • 14. Acceptance Testing – What is Calabash?! •  Tool for BDD (Behavior-driven development) style acceptance testing, consisting of two projects: •  •  Calabash Android: https://github.com/calabash/calabash-android Calabash iOS: https://github.com/calabash/calabash-ios •  Open-Source and Free •  Written in Objective C, Java and Ruby •  Test cases will be written in Ruby
  • 15. Calabash Features! •  Write “business” readable specifications (Cucumber) •  •  Execute the spec as automated acceptance tests •  BDD via the Cucumber tool •  Cross-platform testing: maximize sharing when developing on multiple platforms •  Runs on physical devices as well as simulators/emulators Native and hybrid apps for Android and iOS
  • 17. Calabash Demo! •  •  •  •  Calabash Console Cucumber Feature Files Step Definitions
  • 18. Automated Builds – Jenkins CI! •  Contiguous integration for both iOS and Android •  Execute unit tests and Calabash tests as part of CI •  Identify build failures •  Automated emails when build errors occur, tests fails •  Upload builds to TestFlight!
  • 19. Jenkins CI - Dashboard! https://ci.jenkins-ci.org/
  • 20. Continuous Inspection of Code Quality - Clang Static Analyzer! •  Source code analysis tool that finds bugs in C, C++, and Objective-C! •  Find basic syntactic issues to deep bugs by reasoning about the semantics of code •  Clang Static Analyzer is built on top of Clang and LLVM •  •  •  This can be easily integrated with CI servers (i.e Jenkins) Download http://clang-analyzer.llvm.org/ Demo: http://buildbot.llvm.linuxfoundation.org/checker/
  • 21. App Distribution for Beta Testing - TestFlight! •  Your private App store/Play store •  Upload your builds and grant access to beta testers •  Easily manage multiple versions of your app •  Manage users, teams and create distribution groups •  Easily collect UUIDs for provisioning •  Integrate with CI build servers (i.e Jenkins) •  Collect feedback on builds from testers •  Support for both iOS and Android
  • 24. Crash Reporting - Crashlytics! •  Crash Reporting Service for Mobile Apps •  Facilitate a developer focused report on the app crashes, highlighting the root cause •  Provides details such as type of device, free space on disk/RAM and orientation •  See the guilty line of the code, the number of users affected, the number of occurrences of a crash •  Allows adding log statements to code to track down bugs •  Support for both iOS and Android
  • 27. Actions and Events Tracking - Mixpanel! •  Mixpanel is an analytics platform for mobile & web, it helps you analyze the actions users take in your app. •  An action can be anything - uploading a picture, playing a video, or sharing a post, for example.
  • 28. Mixpanel - Features! •  •  •  •  •  •  •  •  •  Identify how customers use the app Get to know the most used and least used features Track app usage of individual users Send push notifications/GCM, text messages and emails to users Formulas for deep analysis for analytical data Awesome reports, funnels, segmentations, graphs Track revenue on purchases Carry out surveys to get user feedback Support for both iOS and Android
  • 29. ! Mixpanel - How do my app's users invite their friends ?!
  • 30. ! Mixpanel – Which Campaign gives us the most paying customers ?!
  • 31. Mixpanel – Points distributed for most of the people that play my game ?!
  • 32. Mixpanel – Integration (iOS)! #define MIXPANEL_TOKEN @"YOUR_TOKEN"! ! // Initialize the library with your! // Mixpanel project token, MIXPANEL_TOKEN! [Mixpanel sharedInstanceWithToken:MIXPANEL_TOKEN];! ! // Later, you can get your instance with! Mixpanel *mixpanel = [Mixpanel sharedInstance];! In most cases, it makes sense to do this in application:didFinishLaunchingWithOptions:!
  • 33. Mixpanel – Sending Event (iOS)! Mixpanel *mixpanel = [Mixpanel sharedInstance];! ! [mixpanel track:@"Plan Selected" properties:@{! @"Gender": @"Female",! @"Plan": @"Premium"! }];! Once you've initialized the library, you can track an event by calling track:properties: with the event name and properties.
  • 34. Mixpanel – Integration (Android)! MixpanelAPI mixpanel =! MixpanelAPI.getInstance(context, MIXPANEL_TOKEN);! ! JSONObject props = new JSONObject();! props.put("Gender", "Female");! props.put("Plan", "Premium");! ! mixpanel.track("Plan Selected", props);!