Scaling Mobile Development
-
Upload
lookout -
Category
Technology
-
view
557 -
download
0
description
Transcript of Scaling Mobile Development
2014
Scaling Mobile Development
Stephanie Shupe @steph_shupe
Software Engineer, Lookout
October 10, 2014
#GHC14
2014
2014
Development Team Evolution
2014
Development Team Evolution
2014
Development Team Evolution
2014
Development Team Evolution
2014
Development Team Evolution
2014
Outline
§ Lookout Case Study § Tools to scale mobile development § Key Recommendations
2014
Lookout iOS App Case Study
§ New Product ~2011
§ Team grew from 1 to 6 developers
§ Processes developed as team grew in size
2014
Lookout iOS App Versions
0
0.5
1
1.5
2
2.5
3
2014
App Versions v. Developers
0
1
2
3
4
5
6
7
Sep-11 Jun-12 Mar-13 Dec-13 Sep-14
iOS App Version Developers
2014
App Versions v. Developers
0
1
2
3
4
5
6
7
Sep-11 Jun-12 Mar-13 Dec-13 Sep-14
iOS App Version Developers
2014
Tools for any size team Process / Tool 1 dev 2-4 devs 5+ devs Version Control l l l Planning Tool m m l Unit Testing l l l Code Review Tool m l Integration Testing m l Automated UI Testing m m l Continuous Integration m l Localization Tool m Code Style Guideline l Release Process l
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Workflow
New Task
Write Code • Localize* • Write
Tests
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Planning Tool
§ Lightweight − Whiteboard − To-Do Lists
§ Heavyweight − Task Managing Software / Website
2014
Planning Tool
https://www.atlassian.com/software/jira
2014
Planning Tool
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Writing Code…
My project no longer
compiles?!
2014
Version Control
git-scm.com github.com
2014
Version Control
github.com
2014
Writing Code…
What’s the style?
2014
Code Style Guideline
2014
Writing Code…
Wir haben andere
Sprachen?
2014
Localization Management
§ Lightweight − Email strings files back and forth
§ Heavyweight − Localization Tool
2014
Localization Tool
2014
Localization Tool
§ Command line tool § Graphical interface for translators § Cross-project translation database
2014
Writing Code…
Something is broken, but I don’t know why!
2014
Unit Testing describe(@"+isExpired:", ^{ context(@"when date occurred in past", ^{ beforeEach(^{ subject = [NSDate dateWithTimeIntervalSinceNow:-‐10]; }); it(@"should return expired", ^{ [[theValue([NSDate isExpired:subject]) should] beYes]; }); }); context(@"when date occurs in future", ^{ beforeEach(^{ subject = [NSDate dateWithTimeIntervalSinceNow:1000000]; }); it(@"should return not expired", ^{ [[theValue([NSDate isExpired:subject]) should] beNo]; }); }); });
2014
Integration Testing context(@"when a request is made with malformed data", ^{ it(@"should return an error", ^AsyncBlock {
Request *request = [Request new];
...
expect(error).toNot.beNil();
expect(httpResponse.statusCode).to.equal(500);
[client enqueueRequest:request]; }); });
2014
Automated User Interface Testing
§ Automates Manual Tests § Test the same app you submit to the
marketplace
2014
Automated User Interface Testing
Run Tests
Generate Screen shots
Linguistic Verification
Quality Assurance
2014
Automated User Interface Testing
§ Open Source § Interacts with UI Elements § Tests can be written in Ruby, Java, ObjC
https://saucelabs.com/appium
2014
2014
Automated User Interface Testing
Language
English
Japanese
Russian
German
Spanish
French
Device Resolution (px)
480x320
960x640
1024x768
1136x640
1334x750
1920x1080
2048x1536
OS Version
iOS 6
iOS 7
iOS 8
2014
Automated User Interface Testing
6 languages x
7 supported device resolutions x
3 supported OS Versions
126 Combinations
2014
iOS App Crashes v. Automated Tests
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Verifying Code
§ Lightweight − Manually compile project − Manually run tests − Minimal Continuous Integration
§ Heavyweight − Continuous Integration
2014
Continuous Integration
http://jenkins-ci.org/
§ Build project − pre- or post- code check in
§ Run test suites § Report back status § Code Review plugin support
2014
Continuous Integration
http://jenkins-ci.org/
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Reviewing Code…
How do I know that
this code is any good?
2014
Code Review Tool
https://code.google.com/p/gerrit/
2014
Code Review Tool
Push Code
• git push gerrit HEAD:refs/publish/master
Gerrit • Kick off Jenkins Build* • Code review interface
Jenkins • Task number? • Project builds? • Tests pass?
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Committing Code…
I’ve committed,
so I’m done.
2014
Workflow
New Task
Write Code • Write
Tests • Localize*
Verify Code • Build
Project • Run Tests
Peer Review
Commit Code
Release to Market • Quality
Assurance
2014
Releasing Code…
There isn’t a magical ‘Release’ button?
2014
Release Process
2014
Tools for any size team Process / Tool 1 dev 2-4 devs 5+ devs Version Control l l l Planning Tool m m l Unit Testing l l l Code Review Tool m l Integration Testing m l Automated UI Testing m m l Continuous Integration m l Localization Tool m Code Style Guideline l Release Process l
2014
Lookout’s Mobile Dev Toolbelt Process / Tool What Lookout Uses Version Control Git Planning Tool JIRA Unit Testing JUnit, Kiwi Code Review Tool Gerrit Integration Testing Robotium, Specta Automated User Interface Testing Appium Continuous Integration Jenkins Localization Tool Web Translate It (WTI) Code Style Guideline Google / Apple code style guidelines Release Process Wiki documents
2014
Additional tools to consider § Code coverage § Code guideline enforcement § Automated releases § Automated builder setup § Crash tooling § Error logging § Agile Processes § Performance testing § Code Modularization § Dependency Manager
2014
Got Feedback?
Rate and Review the session using the
GHC Mobile App To download visit www.gracehopper.org