ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
-
Upload
istanbul-tech-talks -
Category
Engineering
-
view
129 -
download
1
Transcript of ITT 2015 - Vincent Garrigues - Continuous Integration at SoundCloud
iOS Crash Complaints (avg per Week)
0
35
70
105
140
April May June July August
2014 SoundCloud community team
iOS Crash Complaints (avg per Week)
0
35
70
105
140
April 2014 July 2014 October 2014 January 2015
2015 SoundCloud community team
- (id<AnalyticsProviderInterface>)soundcloudInternalProvider { if ([FlipTheSwitch isDevEventgatewayEnabled]) { return [self eventGatewayProvider]; } else { return [self eventLoggerProvider]; } }
Feature flagging
github.com/michaelengland/fliptheswitch
buildanalysis
unit tests
acceptance tests
AppStoreAdHocα and β
~ 5min 30sec ~ 7min ~ 3min
~ 15min
🚦 🚦
build unit tests
acceptance tests build
linter
dependencies
~2000
local librariesunit tests
i18n push
build unit tests
acceptance tests build
linter
dependencies
~2000
~5000
local librariesunit tests
i18n push
build unit tests
acceptance tests build
linter
dependencies
~2000
~5000
local librariesunit tests
i18n push
build unit tests
acceptance tests build
linter
dependencies
~5000
~2000
local librariesunit tests
i18n push
build unit tests
acceptance tests build
linter
dependencies
~5000
~2000
local librariesunit tests
i18n push
• frank • cucumber
http://www.testingwithfrank.comhttps://cukes.info
mobile apiproxy
The proxy can change: • response status code • response body • record and undo actions
(like, repost…)
buildanalysis
unit tests
acceptance tests
AppStoreAdHocα and β
🚦 🚦
~ 5min 30sec ~ 7min ~ 3min
~ 15min
acceptance tests
• iOS version • iPhone (4S, 5, 6, 6+) • iPad (retina and non retina) • feature flag configurations
flakyrazor1. Take failing test out of the test pool
2. Run the test multiple times (flaky or failing?)
3. Assign it to the author/committer
flakyrazor4. Assess test value 5. Act on test duration changes 6. Show statistics on why the test failed
• we have images for all the machines
• CLIs to provision the machines remotely
• OS X server stores the images and controls the imaging process