Upload
olivier-destrebecq
View
172
Download
0
Embed Size (px)
Citation preview
© 2017 MOBDESIGN
Don’t lose your users because of Endless Quality Issues
Olivier Destrebecq @[email protected]://www.mobdesignapps.fr
!
"
#
@otusweb
Users are expensive
SUBSCRIPTION APPS COST & CONVERSION FUNNEL
GAMING APPS COST & CONVERSION FUNNEL
SHOPPING APPS COST & CONVERSION FUNNEL
Source: liftoff.io User Acquisition Trends and Benchmarks SUBSCRIPTION APPS REPORT 2017
Install $4.40
Register $30.51
Subscription $161.38
Install $4.07
Register $8.94
Purchase $50.69
Install $4.45
Register $30.51
Purchase $75.86
14.43%Install-to-Register
2.73%Install-to-Subscription
45.5%Install-to-Register
8.0%Install-to-Subscription
14.6%Install-to-Register
5.9%Install-to-Subscription
@otusweb
Crashes are expensive
Imagine an app with
2 Million MAUStable at 99.7%, so only0.3% of users see a crash
60 000users a month will see a crash
Only 16% of user will try a failing app more than twice. If 10% decide they are done because of the bug, that is
6 000 users$24 000 at $4 install
Does not even take into account the cost to convert that user to being a client
Source: TechCrunch citing Compuware study
@otusweb
So how do you avoid this?All slides available on Twitter (with extra links)
@otusweb #mobilization2017
@otusweb
Get started rightKnow which scenarios you want to enable AND STICK TO THOSE!
Take the time to iterate on design: Issues in design are easy and cheap to fix
Set up your team correctly, know where the buck stops
Work with people you enjoy working with
As a team pick your approach to keep quality up
@otusweb
Perform user testingGet users from your target segment and show them your early prototypes
3. Observe and shut up
4. Answer questions with questions
Bad: “Did you easily find the search button?”
Good: “Which information is most important to you?”
1. DON’T LEAD THE WITNESS 2. ASK USER TO GO THROUGH YOUR MAIN SCENARIOS
Bad: Go to shirt section and pick a shirt
Good: You want to buy a new shirt for work. please use this app to find one
@otusweb
Security: a fine line, walk it regularlyDon’t be an Equifax, Target or Yahoo
Use the OWASP Mobile App Security checklist
Prioritise and mitigate
Review it regularly
@otusweb
Version control is your best friend
Pick one, learn to use it and use it Ease collaboration
Understand what happened
Reverse time
Use a branching model Multiple release going on at the same time
Main development does not halt for release
Feature Branches
Develop Release Branches
Hotfixes Master
Tim
e
Tag 0.2
Feature for future
release
From this position on, “next release” means the release
after 1.0
Major feature for next release
Incorporate bugfix in develop
Severe bug fixed for
production: hotfix 0.2
Tag 0.1
Tag 1.0Bug fixes from rel. branch may be continuously
merged back into develop
Only bug fixes!
Start of release
branch for 1.0
Source: Vincent Driessen : A successful branching model
@otusweb
Bug life cycle
Defines bugs states and responsabilities
No bugs falls through the cracks
No bug fix gets released without testing
Developer cannot close a bug
New bug from a user with con confirm or a
product without UNCONFIRMED state
Bug is reopened, was never confirmedBug confirmed of
received enough votes
Developer takes possession
Development is finished with bug
Developer takes possession
Ownership is changed
Development is finished with bug
Developer takes possession
Issue is resolved
Bug is closed
QA not satisfied with solution
QA verifies solution worked
Bug is reopened
Bug is reopened Bug is closed
UNCONFIRMED
NEW
REOPEN
CLOSED
RESOLVED
Possible resolutions:FIXED
DUPLICATE WONTFIX
WORKSFORME INVALID REMINDLATER
ASSIGNED
VERIFIED
Source: Bugzilla: Lifecycle of a bug
@otusweb
Pair programmingA second brain always brings in more value
Catch default very early in the cycle
Great to work on complex software issues
Not so great for simple tasks
Great to mentor other or learn from others
@otusweb
Code reviewA second pair of eyes always brings value
Great to learn new practice from fellow developers
Great to spot flows in code
Don’t hesitate to do them in person or follow up in person
Review every pull request before merging
Not the place for spellcheck, format check etc
@otusweb
Automate your testing
Manual testing is great, slow and painful to repeat
Use Unit, integration and UI test
UI test: a pain to maintain, automate only the most important flow
Unit test are easy to maintain, cover as much as you can
Lots of tools: XCTest, Cucumber, Appium, EarlGrey
@otusweb
Continuous integration
Goal is to release often, if releasing is hard, then release cycle lengthen
Continuous integration (continuous build + automated testing + delivery automation)
Jenkins, BuddyBuild, bitrise.io, fastlane and others
@otusweb
Static code analysisFinds issues with your code flow
Reports on code complexity
Multiple tools available (SwiftLint, OCLint, fauxpas, xCode, Tailor, Danger)
Run it on build and on pull request
Adopt the rules with your team
Enforce a 0 warning merge rule
@otusweb
Use crash AND error reportingWhat's worse than a crash? A crash that you don’t know about.
What’s worse than a crash you don’t know about, an error you don’t know about.
Install a crash reporting, link it to your bug database
Install an error reporting, link it to your bug database
Prioritise issues based on frequency and impact
@otusweb
Test on real devices in contextThe real world throws to many curve balls to only test on the simulator (bad connection, low battery, backgrounding, hardware specificity)
Performance, BLE, wifi devices, camera based app, TouchID can only be tested on real devices
@otusweb
Automate as much as possibleI’m lazy, I’m sure you are great, but probably a little lazy too
Add as many of those tools/process into your build automation
Make those automation gate keepers to prevent bad code into master