SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Was ist angesagt?

Mobile Automation Using Appium - vodQA Bangalore 2015
Mobile Automation Using Appium - vodQA Bangalore 2015Mobile Automation Using Appium - vodQA Bangalore 2015
Mobile Automation Using Appium - vodQA Bangalore 2015Thoughtworks
 
Everything You Need To Know about Appium and Selenium
Everything You Need To Know about Appium and SeleniumEverything You Need To Know about Appium and Selenium
Everything You Need To Know about Appium and SeleniumLizzy Guido (she/her)
 
SauceCon 2017: Making Your Mobile App Automatable
SauceCon 2017: Making Your Mobile App AutomatableSauceCon 2017: Making Your Mobile App Automatable
SauceCon 2017: Making Your Mobile App AutomatableSauce Labs
 
Do's and Don'ts of APIs
Do's and Don'ts of APIsDo's and Don'ts of APIs
Do's and Don'ts of APIsJason Harmon
 
Appium tutorial| Appium Training
Appium tutorial| Appium Training Appium tutorial| Appium Training
Appium tutorial| Appium Training QA Masters
 
Using Selenium To Test Mobile? Meet Appium!
Using Selenium To Test Mobile? Meet Appium!Using Selenium To Test Mobile? Meet Appium!
Using Selenium To Test Mobile? Meet Appium!Sauce Labs
 
Calabash my understanding
Calabash my understandingCalabash my understanding
Calabash my understandingFARHAN SUMBUL
 
Mocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with PostmanMocking APIs Collaboratively with Postman
Mocking APIs Collaboratively with PostmanNordic APIs
 
Selenium Camp 2016
Selenium Camp 2016Selenium Camp 2016
Selenium Camp 2016Dan Cuellar
 
SauceCon 2017: Building a Continuous Delivery Pipeline with Testing in Mind
SauceCon 2017: Building a Continuous Delivery Pipeline with Testing in MindSauceCon 2017: Building a Continuous Delivery Pipeline with Testing in Mind
SauceCon 2017: Building a Continuous Delivery Pipeline with Testing in MindSauce Labs
 
SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?
SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?
SauceCon 2017: Are Manual Testers Needed In Automated DevOps World?Sauce Labs
 
Wheat - Mobile functional test automation
Wheat - Mobile functional test automationWheat - Mobile functional test automation
Wheat - Mobile functional test automationSunny Tambi
 
Six Steps To Build A Successful API
Six Steps To Build A Successful APISix Steps To Build A Successful API
Six Steps To Build A Successful APIChris Haddad
 
YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.
YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.
YAGNI, YMMV and APIs: building a hybrid strategy for your API platform.Diogo Lucas
 
Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud
Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud
Testdroid: Release Perfect Apps with Mobile Visual Testing in the Cloud Applitools
 
SauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of ConcurrencySauceCon 2017: Testing @ the Speed of Concurrency
SauceCon 2017: Testing @ the Speed of ConcurrencySauce Labs
 
SauceCon 2017: test.allTheThings(): Digital Edition
SauceCon 2017: test.allTheThings(): Digital EditionSauceCon 2017: test.allTheThings(): Digital Edition
SauceCon 2017: test.allTheThings(): Digital EditionSauce Labs
 
Parallel testing with appium
Parallel testing with appiumParallel testing with appium
Parallel testing with appiummoizjv
 
Advanced Mocking for Swagger APIs
Advanced Mocking for Swagger APIsAdvanced Mocking for Swagger APIs
Advanced Mocking for Swagger APIsSmartBear
 

Was ist angesagt? (20)

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

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

AppNotch Enterprise
AppNotch EnterpriseAppNotch Enterprise
AppNotch Enterpriseappnotch
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBIZZ
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HEREStefan Verhoeff
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
Low Code Capabilities of Digital Product Design Platforms
Low Code Capabilities of Digital Product Design PlatformsLow Code Capabilities of Digital Product Design Platforms
Low Code Capabilities of Digital Product Design PlatformsJohnMcGuigan10
 
Dashlane Mission Teams
Dashlane Mission TeamsDashlane Mission Teams
Dashlane Mission TeamsDashlane
 
AgilitySpeaks Case Study Packet
AgilitySpeaks Case Study PacketAgilitySpeaks Case Study Packet
AgilitySpeaks Case Study PacketWaqas Shah
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle ManagementAmazon Web Services
 
Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Indiginox
 
DevOps for AI Apps
DevOps for AI AppsDevOps for AI Apps
DevOps for AI AppsRichin Jain
 
AppNotch 2.0
AppNotch 2.0AppNotch 2.0
AppNotch 2.0appnotch
 
SWE Interactive - Overview
SWE Interactive - OverviewSWE Interactive - Overview
SWE Interactive - OverviewCraig Le
 
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)Lab Mobile Filkom UB
 
Nathan Kotek - Advanced App Solutions
Nathan Kotek - Advanced App SolutionsNathan Kotek - Advanced App Solutions
Nathan Kotek - Advanced App SolutionsKarlijn Meijer
 
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPIntroduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPKeyLimeTie
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mfMichelle Ferrier
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA
 
Howard Gebb Resume
Howard Gebb ResumeHoward Gebb Resume
Howard Gebb ResumeHoward Gebb
 
Building Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed AgileBuilding Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed AgileWee Witthawaskul
 

Ähnlich wie Getting Predictable - Pragmatic Approach for Mobile Development - Devday.lk 2013 (20)

AppNotch Enterprise
AppNotch EnterpriseAppNotch Enterprise
AppNotch Enterprise
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HERE
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Low Code Capabilities of Digital Product Design Platforms
Low Code Capabilities of Digital Product Design PlatformsLow Code Capabilities of Digital Product Design Platforms
Low Code Capabilities of Digital Product Design Platforms
 
Dashlane Mission Teams
Dashlane Mission TeamsDashlane Mission Teams
Dashlane Mission Teams
 
AgilitySpeaks Case Study Packet
AgilitySpeaks Case Study PacketAgilitySpeaks Case Study Packet
AgilitySpeaks Case Study Packet
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?
 
DevOps for AI Apps
DevOps for AI AppsDevOps for AI Apps
DevOps for AI Apps
 
AppNotch 2.0
AppNotch 2.0AppNotch 2.0
AppNotch 2.0
 
SWE Interactive - Overview
SWE Interactive - OverviewSWE Interactive - Overview
SWE Interactive - Overview
 
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
03 - Membangun Aplikasi Mobile Berkualitas (Herman Tolle)
 
Nathan Kotek - Advanced App Solutions
Nathan Kotek - Advanced App SolutionsNathan Kotek - Advanced App Solutions
Nathan Kotek - Advanced App Solutions
 
Anshul Mahajan_iOS
Anshul Mahajan_iOSAnshul Mahajan_iOS
Anshul Mahajan_iOS
 
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOPIntroduction to iPhone App Development - midVentures DESIGN+DEVELOP
Introduction to iPhone App Development - midVentures DESIGN+DEVELOP
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mf
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612
 
Howard Gebb Resume
Howard Gebb ResumeHoward Gebb Resume
Howard Gebb Resume
 
Building Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed AgileBuilding Mobile (app) Masterpiece with Distributed Agile
Building Mobile (app) Masterpiece with Distributed Agile
 

Kürzlich hochgeladen

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Kürzlich hochgeladen (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

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);!