30
Testing and Publishing Apps @niallroche [email protected] Niall Roche Lead Technologist, Innovation and Entrepreneurship UCL Engineering

App testing and publishing

Embed Size (px)

Citation preview

Page 1: App testing and publishing

Testing and Publishing Apps

@[email protected]

Niall Roche Lead Technologist, Innovation and Entrepreneurship

UCL Engineering

Page 2: App testing and publishing

• 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

Page 3: App testing and publishing

Overview• App Distribution Overview

• Publishing Guidelines

• App Lab

• App Templates

• Testing

Page 4: App testing and publishing

Publishing Options• Websites

• Portals

• Mini Apps, Widgets

• Public App Stores

• Private App Stores

• Enterprise App Stores

• UCL App Lab

Page 5: App testing and publishing

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

Page 6: App testing and publishing

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

Page 7: App testing and publishing

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

Page 8: App testing and publishing

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

Page 9: App testing and publishing

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

Page 10: App testing and publishing

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

Page 11: App testing and publishing

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)

Page 12: App testing and publishing

CARTOON CREDIT: "The Joy of Tech™" by Nitrozac & Snaggy,

joyoftech.com. Copyright © 2008 Geek Culture. Archived at

GeekCulture.com.

Page 13: App testing and publishing

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

Page 14: App testing and publishing

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

Page 15: App testing and publishing

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

Page 16: App testing and publishing

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

Page 17: App testing and publishing

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

Page 18: App testing and publishing

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

Page 19: App testing and publishing

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

Page 20: App testing and publishing

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

Page 21: App testing and publishing

Android Fragmentation 2015

Page 22: App testing and publishing

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

Page 23: App testing and publishing

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

Page 24: App testing and publishing

Android Monitor

Page 25: App testing and publishing
Page 26: App testing and publishing

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

Page 27: App testing and publishing

Testing OptionsOpen 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/

Page 28: App testing and publishing

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

Page 29: App testing and publishing

Jasmine

describe("A suite", function() {

it("contains spec with an expectation", function() {

expect(true).toBe(true);

});

});

Page 30: App testing and publishing

XCTestclass 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.")

}

}