SlideShare a Scribd company logo
1 of 30
Download to read offline
Testing and Publishing
Apps
@niallrochen.roche@ucl.ac.uk
Niall Roche
Lead Technologist, Innovation and Entrepreneurship
UCL Engineering
• Mobile Developer - pretty much every platform!
• Lecturer in Distributed and Mobile Computing at ITT Dublin
• UCL - Tech Lead at Dept of Innovation and Enterprise
• Tech Trainer
• Mentor at
Background
Overview
• App Distribution Overview
• Publishing Guidelines
• App Lab
• App Templates
• Testing
Publishing Options
• Websites
• Portals
• Mini Apps, Widgets
• Public App Stores
• Private App Stores
• Enterprise App Stores
• UCL App Lab
UCL Web Guidelines
• UCL have guidelines for it’s digital and web
presence to UI and branding consistency
• UCL have developed Indigo guidelines for best
practice in representing UCL content according to
the design guidelines as demonstrated at

https://www.ucl.ac.uk/indigo.
• For web applications where the ui is implemented
at the client side these templates need to
implemented in frameworks such as React.js
App Templates
• Provide a good starting point for new developers and reduce
research time on new projects
• To avoid reinventing the wheel on each new project (however
not all apps are the same and may require different wheels!)
• To provide consistency in technologies across projects to
ease support and maintenance
• To improve overall quality by using mature and stable
frameworks and tools to ensure code quality
• Templates implementations - iOS, Android and Web/Hybrid
Areas Addressed
• Testing Tools (both unit and automated)
• UI Frameworks with good MVC implementaiton for SOC and data binding
• Offline interaction and caching
• Logging and Exception handling
• Crash handling and reporting
• Build tools involving code quality checking and reducing resource sizes (lint tools and resource optimisation
and obfuscation)
• Analytics tools (ideally linked to logging tools)
• Networking and error handling
• Security (tools + best practice to ensure user data is stored safely at rest and in transit) also authentication
such as oAuth2
• Push Messaging
• Dependency Management - use of dependency management tools
App Distribution
• Apps for public distribution require signing with different certificates to development
builds
• iOS Distribution Certificates
• Android Release Keys
• In addition to the app lots of data about the app is needed
• Legal info, Age Ratings, availability, categories, promotional content
• Privacy Policy - see MEF tool http://www.appprivacy.net/#learn-more
• Guides
• https://developer.apple.com/library/content/documentation/LanguagesUtilities/
Conceptual/iTunesConnect_Guide/Chapters/UploadingBinariesforanApp.html
• https://developer.android.com/studio/publish/preparing.html
Prepare for Launch
• Get All paperwork and legals in place long before launch
as this normally takes quite a while
• Create the necessary Certificates Profiles etc.
• Upload App Meta data and promotional content
• App search Optimisation ASO and App Naming, keywords,
description icons and screenshots are very important
• Promotional/Support Website + Social
• Logos and Screenshots in necessary resolutions and sizes
Publishing Guidelines
• Each app platform has their own guidelines
• UI Guidelines
• Apps should follow the design language and
interaction styles of the platform
• e.g. Android Material Design, Apple HIG
• If these are not followed or if UI elements are used
incorrectly or inconsistent to guidelines, the apps
can be refused
Publishing Guidelines
• Other Important Guidelines
• Apps should not make use of excessive battery or
network activity
• background activity of app should be reasonable
and not draw excessive resources
• push vs poll architectures are best
• Apps should not try to access APIs that are not
permitted (Apple and Microsoft in particular)
CARTOON CREDIT: "The Joy of
Tech™" by Nitrozac & Snaggy,
joyoftech.com. Copyright © 2008
Geek Culture. Archived at
GeekCulture.com.
Problems with Approval
• not following Human Interface Guidelines
• using Private APIs (functions reserved for Apple)
• apps not working offline
• competition with built-in app or Apple service
• e.g. alternatives to in-app purchases
• using existing Apple icons for different purpose
Problems with Approval
• don’t just wrap a mobile website into an App
• Check the size of the App
• Validate the app before launch
• Be careful with background activity and data use
• testing using tools and on real devices on different OS
and hardware variants
• Leave time for Approval/Rejection/Reapply/Rejection
App approval times
• current average is 4-5 days (weekends too)
• http://appreviewtimes.com for latest times
• @appreviewtimes will post once a day with the
latest averages
• double that to be safe (ideally 2 weeks)
• can be more near a new iOS version release
Prelaunch Strategies
• Soft launch in smaller App Stores (App Lab)
• TestFlight and Google Play Beta
• launchsky.com preapps.com
• Promote on discovery sites like Appolicious
• Coordinate marketing activities with launch
• Reviews - who blogs/writes about your type of apps -
send them a promo code
Gather detailed use analytics to learn and
iterate with the help of our UX Consultants
and connect directly with users hoping to
become App Ambassadors.
Beta test in App Lab, UCL's app
store exclusive for it’s 45,000+ staff &
students
APP Lab
@ucladvances
applab.ucl.ac.uk
Important Features to Add
• User Feedback mechanism online and in-app
• Let users suggest improvements & inform about issues
• Crash reporting and handling
• Manage permissions appropriately
• prompt user before the OS asks for permissions
• Ratings API (use carefully don't annoy users)
• Analytics and Metrics
• Push Notifications
Validating Assumptions
• What you think vs what users actually do
• A/B testing for each feature
• abtestmaster.com for list of libraries
• Measurement is key to validate
• Analytics tools
• segment.io flurry google UXCam mixpanel
• Measure, learn and improve
• Let the data help to drive your decisions
Keeping Users Engaged
• Keep user using your app or the will stop using it
• Competition with other apps on device is high
• Use Push Notifications - but not too much
• Find reasons for them to engage
• Update regularly to keep users engaged
• Competitions/Promotions/Social etc
Android Fragmentation 2015
Testing
• Testing on Simulators and a small set of devices is not sufficient
• Important to identify baseline support of devices and OS versions to support
• Determine who and where your users are and the devices they are likely to use
• https://developer.android.com/about/dashboards/index.html
• https://www.statista.com/statistics/271774/share-of-android-platforms-on-
mobile-devices-with-android-os/
• https://opensignal.com/reports/2015/08/android-fragmentation/
• https://www.browserstack.com
• https://www.appannie.com
Testing Tools
• Power Analysis
• https://developer.att.com/application-resource-optimizer
• Resource usage
• tools to monitor CPU GPU RAM Battery Screen updates Network Analysis
• iOS - Instruments
• Android - Profile
• https://developer.android.com/studio/profile/index.html
• Web
• Chrome Inspector
Android Monitor
Test Automation
• Web Automation
• WebDriver protocol - Selenium
• iOS
• appium.io XCTest
• Android resources
• https://developer.android.com/studio/test/index.html
• Robotium
• http://quamotion.mobi/ (iOS Android Windows)
• Calabash (iOS Android)
• see https://www.youtube.com/watch?v=KAj3XGtVLhg for an intro to Appium
Testing Options
Open Device Labs
https://opendevicelab.com/
Crowd Sourced Testing
https://testfairy.com/
https://www.testbirds.com/
https://www.applause.com
https://globalapptesting.com/
http://ubertesters.com/
Cloud Testing
real devices accessed in the cloud:
https://www.browserstack.com
https://www.perfectomobile.com/
https://www.xamarin.com/test-cloud
https://aws.amazon.com/device-
farm/
https://saucelabs.com/
Unit Testing
• test individual pieces of functionality
• need to ‘mock’ other parts of the system that the
functionality interacts with
• Popular frameworks include Jasmine, Mocha
• XCTest for iOS - can test UI classes too
Jasmine
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
XCTest
class TableValidationTests: XCTestCase {
/// Tests that a new table instance has zero rows and columns.
func testEmptyTableRowAndColumnCount() {
let table = Table()
XCTAssertEqual(table.rowCount, 0, "Row count was not zero.")
XCTAssertEqual(table.columnCount, 0, "Column count was not zero.")
}
}

More Related Content

What's hot

Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Devathon
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaEdureka!
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using AppiumMindfire Solutions
 
Flutter vs react native head to toe comparison [2021 edition]
Flutter vs react native  head to toe comparison [2021 edition]Flutter vs react native  head to toe comparison [2021 edition]
Flutter vs react native head to toe comparison [2021 edition]Katy Slemon
 
Meetup kickoff slides - Perfecto Mobile, September 2014
Meetup kickoff slides - Perfecto Mobile, September 2014Meetup kickoff slides - Perfecto Mobile, September 2014
Meetup kickoff slides - Perfecto Mobile, September 2014Perfecto Mobile
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With AppiumKnoldus Inc.
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application developmentKunjan Thakkar
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Sauce Labs
 
iOS & Android Application Development - Pee Dee User Group Meeting
iOS & Android Application Development - Pee Dee User Group MeetingiOS & Android Application Development - Pee Dee User Group Meeting
iOS & Android Application Development - Pee Dee User Group MeetingJim Tochterman
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application developmentKnoldus Inc.
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumBugRaptors
 
MonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationMonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationContusQA
 
Appium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAppium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAndrii Dzynia
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaNoam Kfir
 

What's hot (20)

Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | Edureka
 
Introduction to flutter
Introduction to flutter Introduction to flutter
Introduction to flutter
 
Hybrid Mobile App
Hybrid Mobile AppHybrid Mobile App
Hybrid Mobile App
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
 
Flutter vs react native head to toe comparison [2021 edition]
Flutter vs react native  head to toe comparison [2021 edition]Flutter vs react native  head to toe comparison [2021 edition]
Flutter vs react native head to toe comparison [2021 edition]
 
Meetup kickoff slides - Perfecto Mobile, September 2014
Meetup kickoff slides - Perfecto Mobile, September 2014Meetup kickoff slides - Perfecto Mobile, September 2014
Meetup kickoff slides - Perfecto Mobile, September 2014
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With Appium
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
 
iOS & Android Application Development - Pee Dee User Group Meeting
iOS & Android Application Development - Pee Dee User Group MeetingiOS & Android Application Development - Pee Dee User Group Meeting
iOS & Android Application Development - Pee Dee User Group Meeting
 
Appium
AppiumAppium
Appium
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application development
 
Appium solution artizone
Appium solution   artizoneAppium solution   artizone
Appium solution artizone
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
 
MonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android ApplicationMonkeyTalk Automation Testing For Android Application
MonkeyTalk Automation Testing For Android Application
 
ATAGTR2017 Appium
ATAGTR2017 AppiumATAGTR2017 Appium
ATAGTR2017 Appium
 
Appium testing api
Appium testing apiAppium testing api
Appium testing api
 
Appium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriverAppium Mobile Test Automation like WebDriver
Appium Mobile Test Automation like WebDriver
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using Cordova
 

Similar to App testing and publishing

UCL M.Sc. Technology Entrepreneurship 2015 - Launching Digital Products
UCL M.Sc. Technology Entrepreneurship 2015 -  Launching Digital ProductsUCL M.Sc. Technology Entrepreneurship 2015 -  Launching Digital Products
UCL M.Sc. Technology Entrepreneurship 2015 - Launching Digital ProductsNiall Roche
 
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
 
"Building your mobile app: budget, planning and best practices!" by Philippe ...
"Building your mobile app: budget, planning and best practices!" by Philippe ..."Building your mobile app: budget, planning and best practices!" by Philippe ...
"Building your mobile app: budget, planning and best practices!" by Philippe ...TheFamily
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBitbar
 
Building your Mobile App: Budget, Planning and Best Practices
Building your Mobile App: Budget, Planning and Best PracticesBuilding your Mobile App: Budget, Planning and Best Practices
Building your Mobile App: Budget, Planning and Best PracticesPhilippe Dumont
 
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
 
5 Keys to Your Best Automated Testing Strategy
5 Keys to Your Best Automated Testing Strategy5 Keys to Your Best Automated Testing Strategy
5 Keys to Your Best Automated Testing StrategySOASTA
 
Measuring the Right App Metrics - Guide for Beginners
Measuring the Right App Metrics - Guide for BeginnersMeasuring the Right App Metrics - Guide for Beginners
Measuring the Right App Metrics - Guide for BeginnersDeepak Abbot
 
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
 
Best Practices for Mobility
Best Practices for Mobility Best Practices for Mobility
Best Practices for Mobility RapidValue
 
Webinar Series - How To Launch Your App Idea
Webinar Series - How To Launch Your App IdeaWebinar Series - How To Launch Your App Idea
Webinar Series - How To Launch Your App IdeaTheAppLabb
 
Building Agility for Automated Mobile Apps Testing
Building Agility for Automated Mobile Apps TestingBuilding Agility for Automated Mobile Apps Testing
Building Agility for Automated Mobile Apps TestingKapil Saxena
 
6 Points to Consider Before Testing any Mobile Application
6 Points to Consider Before Testing any Mobile Application 6 Points to Consider Before Testing any Mobile Application
6 Points to Consider Before Testing any Mobile Application Chirag Thumar
 
Webinar app testing and distribution
Webinar app testing and distribution Webinar app testing and distribution
Webinar app testing and distribution Service2Media
 
Strategies for Mobile Web Application Testing
Strategies for Mobile Web Application TestingStrategies for Mobile Web Application Testing
Strategies for Mobile Web Application TestingTechWell
 
Importance of Mobile App Architecture For Mobile App Development
Importance of Mobile App Architecture For Mobile App DevelopmentImportance of Mobile App Architecture For Mobile App Development
Importance of Mobile App Architecture For Mobile App DevelopmentHelios Solutions
 
Building awesome business apps
Building awesome business appsBuilding awesome business apps
Building awesome business appsBjorn Byrne
 
Insights on Android App Development, Marketing and Monetization
Insights on Android App Development, Marketing and MonetizationInsights on Android App Development, Marketing and Monetization
Insights on Android App Development, Marketing and MonetizationJayneel Patel
 
Conducting User Research
Conducting User ResearchConducting User Research
Conducting User ResearchJeremy Horn
 

Similar to App testing and publishing (20)

UCL M.Sc. Technology Entrepreneurship 2015 - Launching Digital Products
UCL M.Sc. Technology Entrepreneurship 2015 -  Launching Digital ProductsUCL M.Sc. Technology Entrepreneurship 2015 -  Launching Digital Products
UCL M.Sc. Technology Entrepreneurship 2015 - Launching Digital Products
 
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
 
"Building your mobile app: budget, planning and best practices!" by Philippe ...
"Building your mobile app: budget, planning and best practices!" by Philippe ..."Building your mobile app: budget, planning and best practices!" by Philippe ...
"Building your mobile app: budget, planning and best practices!" by Philippe ...
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App Testing
 
Building your Mobile App: Budget, Planning and Best Practices
Building your Mobile App: Budget, Planning and Best PracticesBuilding your Mobile App: Budget, Planning and Best Practices
Building your Mobile App: Budget, Planning and Best Practices
 
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
 
5 Keys to Your Best Automated Testing Strategy
5 Keys to Your Best Automated Testing Strategy5 Keys to Your Best Automated Testing Strategy
5 Keys to Your Best Automated Testing Strategy
 
Measuring the Right App Metrics - Guide for Beginners
Measuring the Right App Metrics - Guide for BeginnersMeasuring the Right App Metrics - Guide for Beginners
Measuring the Right App Metrics - Guide for Beginners
 
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)
 
Best Practices for Mobility
Best Practices for Mobility Best Practices for Mobility
Best Practices for Mobility
 
Webinar Series - How To Launch Your App Idea
Webinar Series - How To Launch Your App IdeaWebinar Series - How To Launch Your App Idea
Webinar Series - How To Launch Your App Idea
 
Building Agility for Automated Mobile Apps Testing
Building Agility for Automated Mobile Apps TestingBuilding Agility for Automated Mobile Apps Testing
Building Agility for Automated Mobile Apps Testing
 
6 Points to Consider Before Testing any Mobile Application
6 Points to Consider Before Testing any Mobile Application 6 Points to Consider Before Testing any Mobile Application
6 Points to Consider Before Testing any Mobile Application
 
Webinar app testing and distribution
Webinar app testing and distribution Webinar app testing and distribution
Webinar app testing and distribution
 
Anil_kumar_Resume
Anil_kumar_ResumeAnil_kumar_Resume
Anil_kumar_Resume
 
Strategies for Mobile Web Application Testing
Strategies for Mobile Web Application TestingStrategies for Mobile Web Application Testing
Strategies for Mobile Web Application Testing
 
Importance of Mobile App Architecture For Mobile App Development
Importance of Mobile App Architecture For Mobile App DevelopmentImportance of Mobile App Architecture For Mobile App Development
Importance of Mobile App Architecture For Mobile App Development
 
Building awesome business apps
Building awesome business appsBuilding awesome business apps
Building awesome business apps
 
Insights on Android App Development, Marketing and Monetization
Insights on Android App Development, Marketing and MonetizationInsights on Android App Development, Marketing and Monetization
Insights on Android App Development, Marketing and Monetization
 
Conducting User Research
Conducting User ResearchConducting User Research
Conducting User Research
 

Recently uploaded

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

App testing and publishing

  • 1. Testing and Publishing Apps @niallrochen.roche@ucl.ac.uk Niall Roche Lead Technologist, Innovation and Entrepreneurship UCL Engineering
  • 2. • Mobile Developer - pretty much every platform! • Lecturer in Distributed and Mobile Computing at ITT Dublin • UCL - Tech Lead at Dept of Innovation and Enterprise • Tech Trainer • Mentor at Background
  • 3. Overview • App Distribution Overview • Publishing Guidelines • App Lab • App Templates • Testing
  • 4. Publishing Options • Websites • Portals • Mini Apps, Widgets • Public App Stores • Private App Stores • Enterprise App Stores • UCL App Lab
  • 5. UCL Web Guidelines • UCL have guidelines for it’s digital and web presence to UI and branding consistency • UCL have developed Indigo guidelines for best practice in representing UCL content according to the design guidelines as demonstrated at
 https://www.ucl.ac.uk/indigo. • For web applications where the ui is implemented at the client side these templates need to implemented in frameworks such as React.js
  • 6. App Templates • Provide a good starting point for new developers and reduce research time on new projects • To avoid reinventing the wheel on each new project (however not all apps are the same and may require different wheels!) • To provide consistency in technologies across projects to ease support and maintenance • To improve overall quality by using mature and stable frameworks and tools to ensure code quality • Templates implementations - iOS, Android and Web/Hybrid
  • 7. Areas Addressed • Testing Tools (both unit and automated) • UI Frameworks with good MVC implementaiton for SOC and data binding • Offline interaction and caching • Logging and Exception handling • Crash handling and reporting • Build tools involving code quality checking and reducing resource sizes (lint tools and resource optimisation and obfuscation) • Analytics tools (ideally linked to logging tools) • Networking and error handling • Security (tools + best practice to ensure user data is stored safely at rest and in transit) also authentication such as oAuth2 • Push Messaging • Dependency Management - use of dependency management tools
  • 8. App Distribution • Apps for public distribution require signing with different certificates to development builds • iOS Distribution Certificates • Android Release Keys • In addition to the app lots of data about the app is needed • Legal info, Age Ratings, availability, categories, promotional content • Privacy Policy - see MEF tool http://www.appprivacy.net/#learn-more • Guides • https://developer.apple.com/library/content/documentation/LanguagesUtilities/ Conceptual/iTunesConnect_Guide/Chapters/UploadingBinariesforanApp.html • https://developer.android.com/studio/publish/preparing.html
  • 9. Prepare for Launch • Get All paperwork and legals in place long before launch as this normally takes quite a while • Create the necessary Certificates Profiles etc. • Upload App Meta data and promotional content • App search Optimisation ASO and App Naming, keywords, description icons and screenshots are very important • Promotional/Support Website + Social • Logos and Screenshots in necessary resolutions and sizes
  • 10. Publishing Guidelines • Each app platform has their own guidelines • UI Guidelines • Apps should follow the design language and interaction styles of the platform • e.g. Android Material Design, Apple HIG • If these are not followed or if UI elements are used incorrectly or inconsistent to guidelines, the apps can be refused
  • 11. Publishing Guidelines • Other Important Guidelines • Apps should not make use of excessive battery or network activity • background activity of app should be reasonable and not draw excessive resources • push vs poll architectures are best • Apps should not try to access APIs that are not permitted (Apple and Microsoft in particular)
  • 12. CARTOON CREDIT: "The Joy of Tech™" by Nitrozac & Snaggy, joyoftech.com. Copyright © 2008 Geek Culture. Archived at GeekCulture.com.
  • 13. Problems with Approval • not following Human Interface Guidelines • using Private APIs (functions reserved for Apple) • apps not working offline • competition with built-in app or Apple service • e.g. alternatives to in-app purchases • using existing Apple icons for different purpose
  • 14. Problems with Approval • don’t just wrap a mobile website into an App • Check the size of the App • Validate the app before launch • Be careful with background activity and data use • testing using tools and on real devices on different OS and hardware variants • Leave time for Approval/Rejection/Reapply/Rejection
  • 15. App approval times • current average is 4-5 days (weekends too) • http://appreviewtimes.com for latest times • @appreviewtimes will post once a day with the latest averages • double that to be safe (ideally 2 weeks) • can be more near a new iOS version release
  • 16. Prelaunch Strategies • Soft launch in smaller App Stores (App Lab) • TestFlight and Google Play Beta • launchsky.com preapps.com • Promote on discovery sites like Appolicious • Coordinate marketing activities with launch • Reviews - who blogs/writes about your type of apps - send them a promo code
  • 17. Gather detailed use analytics to learn and iterate with the help of our UX Consultants and connect directly with users hoping to become App Ambassadors. Beta test in App Lab, UCL's app store exclusive for it’s 45,000+ staff & students APP Lab @ucladvances applab.ucl.ac.uk
  • 18. Important Features to Add • User Feedback mechanism online and in-app • Let users suggest improvements & inform about issues • Crash reporting and handling • Manage permissions appropriately • prompt user before the OS asks for permissions • Ratings API (use carefully don't annoy users) • Analytics and Metrics • Push Notifications
  • 19. Validating Assumptions • What you think vs what users actually do • A/B testing for each feature • abtestmaster.com for list of libraries • Measurement is key to validate • Analytics tools • segment.io flurry google UXCam mixpanel • Measure, learn and improve • Let the data help to drive your decisions
  • 20. Keeping Users Engaged • Keep user using your app or the will stop using it • Competition with other apps on device is high • Use Push Notifications - but not too much • Find reasons for them to engage • Update regularly to keep users engaged • Competitions/Promotions/Social etc
  • 22. Testing • Testing on Simulators and a small set of devices is not sufficient • Important to identify baseline support of devices and OS versions to support • Determine who and where your users are and the devices they are likely to use • https://developer.android.com/about/dashboards/index.html • https://www.statista.com/statistics/271774/share-of-android-platforms-on- mobile-devices-with-android-os/ • https://opensignal.com/reports/2015/08/android-fragmentation/ • https://www.browserstack.com • https://www.appannie.com
  • 23. Testing Tools • Power Analysis • https://developer.att.com/application-resource-optimizer • Resource usage • tools to monitor CPU GPU RAM Battery Screen updates Network Analysis • iOS - Instruments • Android - Profile • https://developer.android.com/studio/profile/index.html • Web • Chrome Inspector
  • 25.
  • 26. Test Automation • Web Automation • WebDriver protocol - Selenium • iOS • appium.io XCTest • Android resources • https://developer.android.com/studio/test/index.html • Robotium • http://quamotion.mobi/ (iOS Android Windows) • Calabash (iOS Android) • see https://www.youtube.com/watch?v=KAj3XGtVLhg for an intro to Appium
  • 27. Testing Options Open Device Labs https://opendevicelab.com/ Crowd Sourced Testing https://testfairy.com/ https://www.testbirds.com/ https://www.applause.com https://globalapptesting.com/ http://ubertesters.com/ Cloud Testing real devices accessed in the cloud: https://www.browserstack.com https://www.perfectomobile.com/ https://www.xamarin.com/test-cloud https://aws.amazon.com/device- farm/ https://saucelabs.com/
  • 28. Unit Testing • test individual pieces of functionality • need to ‘mock’ other parts of the system that the functionality interacts with • Popular frameworks include Jasmine, Mocha • XCTest for iOS - can test UI classes too
  • 29. Jasmine describe("A suite", function() { it("contains spec with an expectation", function() { expect(true).toBe(true); }); });
  • 30. XCTest class TableValidationTests: XCTestCase { /// Tests that a new table instance has zero rows and columns. func testEmptyTableRowAndColumnCount() { let table = Table() XCTAssertEqual(table.rowCount, 0, "Row count was not zero.") XCTAssertEqual(table.columnCount, 0, "Column count was not zero.") } }