Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Beta testing with CI

1,240 views

Published on

使用Redmine + Git + TestFlight + Jenkins幫助加速 App開發流程,讓PM安心,RD靜心,BOSS開心。

Published in: Engineering

Beta testing with CI

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

×