beta testing with ci
TRANSCRIPT
Beta testing with CILiyao Chen
2014/10/15
Before TestFlight• 把⼿手機給RD,RD會把測試版App放到⼿手機
• 無形之中RD⼀一直被中斷
• PM拿到app不知道跟更新哪些功能(所以會問
• 某個功能⼀一下好⼀一下壞
原本的流程 出了什麼問題?
At first
• 功能做到哪了?!
• 什麼時候可以測?!
• 最新版在哪下載?!
• 這⼀一版哪些功能可以測?!
• 那個醬也要安裝測試版
At first
• 你問的是哪⼀一個功能?!
• 就還沒做完怎麼測?!
• 不是都有寄email嗎?!
• 你可以⾃自⼰己看ticket阿!
• 怎麼⼜又要加⼈人了
The gap
• 功能做到哪了?!
• 什麼時候可以測?!
• 最新版在哪下載?!
• 這⼀一版哪些功能可以測?!
• 那個醬也要安裝測試版
• 你問的是哪⼀一個功能?!
• 就還沒做完怎麼測?!
• 不是都有寄email嗎?!
• 你可以⾃自⼰己看ticket阿!
• 怎麼⼜又要加⼈人了
PM: 看不到進度很不安 RD: 寫Code就很累了 PM還⼀一直打斷我
Release Note
功能做到哪了?!這⼀一版有哪些功能可以測?
每次發版給你Release Note吧
Release Note?新建⽴立 已關閉已解決實作中
#13
#12
#11#14
#5
Release Note?新建⽴立 已關閉已解決實作中
#13
#12
#11#14
#5
Release Note?新建⽴立 已關閉已解決實作中
#13
#12
#11#14
#5
Release Note?新建⽴立 已關閉已解決實作中
#12
#14
#13 #11#5
我要驗收哪些?
Release Note?新建⽴立 已關閉已解決實作中
#12
#14v1 Release Note!
#11 bug fixed -#13 bug fixed -
#13 #11#5
Release Note?新建⽴立 已關閉已解決實作中
#12
#14
#13 #11#5
先關了驗過的v1 Release Note!
#11 bug fixed -#13 bug fixed -
Release Note?新建⽴立 已關閉已解決實作中
#12
#14
#5
怎麼還有⼀一個? 可能是
1. RD忘了加在Release Note 2. PM驗收忘記關 3. RD沒做完就丟給PM4. … etc.
Release Note?新建⽴立 已關閉已解決實作中
#12
#14
#5
把#5踢回給RD
Release Note?新建⽴立 已關閉已解決實作中
#12
#14
#5
把#5踢回給RD繼續下⼀一回合
Without TestFlight
• 封裝.ipa • 上傳.ipa並取得url • 製作.plist放上ipa的url • 撰寫Release Note • 寄群組信 (常常要更新群組)
• 封裝.ipa • 上傳.ipa並取得url 拖曳上傳.ipa • 製作.plist放上ipa的url • 撰寫Release Note • 寄群組信 (常常要更新群組) 給PM管理測試⼈人員(TestFlight群組)發佈版本時⾃自動寄信
Without CIcommit
build .ipa
release note
debug
takes 5 ~ 10 mins
takes 5 ~ 10 mins
「⼿手動寫Release Note很⿇麻煩,沒有更好的⽅方法了嗎?」
–APP RD
懶惰沒有極限
懶惰沒有極限
讓我來為您服務。
⼿手動寫Release Note很⿇麻煩,沒有更好⽅方法了嗎?
懶惰沒有極限
• 封裝.ipa • 上傳.ipa並取得url 拖曳上傳.ipa • 製作.plist放上ipa的url • 撰寫⾃自動產⽣生Release Note • 寄群組信 (常常要更新群組) 給PM管理測試⼈人員(TestFlight群組)發佈版本時⾃自動寄信
懶惰沒有極限
CI還可以做什麼
• 建置source code
• 執⾏行測試(各種⾃自動化測試)
• 執⾏行程式碼分析(靜態與動態程式碼分析)
• ⾃自動部屬 幫你把App交付給Tester
Monkey Test Unit Test API Test
CI的⺫⽬目的
• 降低⾵風險
• 減少⼈人⼯工⼿手動的繁複程序
• 可隨時產⽣生⼀一版可部署的版本
• 增加系統透明度
每天「⾃自動」健康檢查
CI不能做什麼
• ⾃自動測試程式碼「功能」雖然每天⾃自動健康檢查但是健康檢查的「項⺫⽬目及條件」還是要⾃自⼰己訂
Dev commit pull
build
code analysis
report issue
check issue
unit test
Without CI
Dev
Take long time.
Dev commit pull
build
code analysis
report issue
check issue
unit test
With CI
Take short time.
Why Jenkins
• 整合RSS/Email通知
• ⽀支援分散式架構
• ⼤大量豐富的套件
• iOS & Android support
Our Jenkins Job for iOS
• Pull from GitLab
• Run test
• Build & Archive
• Upload to testFlightwith Release Note
pull
buildunit test
upload
Pull from GitLab
Build & Archive
Upload to testFlight
進階CI應⽤用• Auto Build & Unit Test!
• Monkey Test
• Test Code Coverage
• Coding Style Check
• Merge to Master Build
• Upload to testFlight
有了CI以後
• 努⼒力實⾏行寫Test「確保」程式依照「需求」進⾏行
• Tester可以每天拿到最新的版本測試
• 開發循環更快
• 及早發現及早治療
iOS repo with CI
檔案配置考量
Q. 把Pfile 放在repo裡⾯面?
換Pfile 可以直接蓋過去
(需要完整bundle id的app時)
Q. 把Build & Archive的script直接放在repo?
在Local端可以確認script build
Crash Report
Reference
• http://www.dotblogs.com.tw/hatelove/archive/2011/12/25/introducing-continuous-integration.aspx
• http://ithelp.ithome.com.tw/question/10102931