Upgrade to Pro — share decks privately, control downloads, hide ads and more …

克服人心的障礙,跨越自動化測試的門檻

 克服人心的障礙,跨越自動化測試的門檻

Ming Shien Tzang

June 02, 2017
Tweet

More Decks by Ming Shien Tzang

Other Decks in Programming

Transcript

  1. 克服⼈人⼼心的障礙
    跨越⾃自動化測試的⾨門檻
    IThome #Testing Day
    @tzangms

    View Slide

  2. @tzangms
    StreetVoice
    網路路技術部副總經理理

    View Slide

  3. 先講⼀一下我們⽬目前的狀狀態
    在開始講之前呢

    View Slide

  4. View Slide

  5. View Slide

  6. 為何開始⾃自動化測試

    View Slide

  7. 潮!
    「可以跟⼈人家說我們有在做⾃自動化測試啊」

    View Slide

  8. ⼿手動測試太浪費時間
    想像⼀一下會員註冊,要填資料還要收信啟⽤用帳號

    View Slide

  9. 改了了 A 功能,B 功能爆炸

    View Slide

  10. 每次升級都覺得怕怕的

    View Slide

  11. ⼈人⼼心的⾨門檻

    View Slide

  12. 「沒有時間」
    「這時間不如拿去寫新功能」
    「好⿇麻煩啊」
    「不知道怎麼開始」

    View Slide

  13. 其實⼤大家都不知道⾃自⼰己
    浪費了了多少時間

    View Slide

  14. 你可以⽤用⼀一分半的時間執⾏行行 569 個測試嗎?
    不⾏行行嘛!是不是!?

    View Slide

  15. 有開發過會員系統嗎?
    想像⼀一下⼿手動測試的痛苦

    View Slide

  16. 基本註冊功能
    • 填寫帳號資料送出
    • 等認證信
    • 點認證連結

    View Slide

  17. 填寫資料送出

    View Slide

  18. 填⼀一堆資料後
    發現程式有問題

    View Slide

  19. 「咦,真的是程式有問題嗎?」
    第⼀一個念念頭是什什麼?

    View Slide

  20. ⼀一邊開發⼀一邊測試
    填⼀一堆資料後發現程式還是有問題
    再測⼀一遍

    View Slide

  21. 然後會發⽣生什什麽事
    以下是最常發⽣生的狀狀況

    View Slide

  22. 帳號名稱⽤用過了了
    「可惡惡! ⼜又得想新的帳號名稱」

    View Slide

  23. 啊 密碼檢查過不了了
    當初為何要限制八個字元,⽽而且還要中英⽂文混⽤用啊,混帳
    123 不⾏行行嗎?

    View Slide

  24. Captcha
    「啊,⼜又輸入錯了了」

    View Slide

  25. 驗證信怎麼還沒收到
    ⼼心裡想說「該不會寄到垃圾信件夾了了吧?」
    過了了 5 分鐘後 …「啊,終於收到了了!」

    View Slide

  26. 驗證連結怎麼是錯的
    「嘖,好像程式真的沒寫好」

    View Slide

  27. 終於開發完成
    驗證信已經收了了 50 封不⽌止

    View Slide

  28. 昨天升級了了某個套件
    今天同事說:「是不是註冊功能有問題呀?」
    你說: 應該不會吧,沒有改註冊功能啊 … (但是⼼心裡冒冷汗)
    接著

    View Slide

  29. View Slide

  30. 如果你決定開始嘗試了了
    你可能會碰到什什麽問題

    View Slide

  31. 卡關
    決定嘗試⾃自動化測試後,可能卡關的⾨門檻

    View Slide

  32. 搞 CI
    Jenkins or CI Services

    View Slide

  33. 光是 Jenkins 不難,但是對於剛入⾨門的⼈人來來說,⼀一
    堆設定加起來來就會覺得悲傷了了。

    View Slide

  34. ⽤用 Travis CI 只要這樣
    Circle CI 也可以試試,其實看狀狀況會比 Travis CI 更更簡單

    View Slide

  35. 產⽣生 Coverage 也很簡單
    ⽤用 codecov 的話,在 .travis.yml 補上這幾⾏行行就可以了了

    View Slide

  36. Coverage report

    View Slide

  37. View Slide

  38. ⽣生測試資料
    ⼀一開始最⼤大的⾨門檻,你要找到對的⼯工具

    View Slide

  39. Before
    After
    ⼀一開始的做法真的會令⼈人⾺馬上放棄
    例例如要測試的⾸首⾴頁有 10 區塊分別顯⽰示不同類型的資料

    View Slide

  40. 遠端 API
    當你碰到外部 API 的時候怎麼測試?

    View Slide

  41. 你⼀一樣可以 mock

    View Slide

  42. 如何開始導入測試
    同事最難搞了了對不對 (誤)

    View Slide

  43. ⾃自⼰己先寫測試
    然後漸進式地開始慢慢宣導

    View Slide

  44. 例例如在聊天時不經意說出:
    「啊,我現在都不⽤用⼿手動測試了了,好爽啊!」

    View Slide

  45. 看到覆蓋率的數字
    讓⼤大家有感

    View Slide

  46. 「喔喔喔! Coverage 提升了了百分之⼀一!!」

    View Slide

  47. 再加上⾃自動部署
    ⼤大家就可以感受到好處了了

    View Slide

  48. View Slide

  49. 從哪邊開始著⼿手
    從最重要的地⽅方開始補測試

    View Slide

  50. 最不希望出錯的地⽅方
    例例如: 購買、付款、⾸首⾴頁

    View Slide

  51. ⼿手動測試最累⼈人的地⽅方
    例例如剛才提到的註冊流程

    View Slide

  52. ⼀一邊開發⼀一邊補測試
    image credit from: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/

    View Slide

  53. Refactor 之前
    ⾄至少你可以確定不會 Refactor 後爆炸

    View Slide

  54. 閒閒沒事的時候
    Come on, 總是有這種時候吧!?

    View Slide

  55. ⾃自動化測試的優點

    View Slide

  56. 安⼼心
    再也不⽤用擔⼼心部署上去後爆炸了了

    View Slide

  57. 升級 framework 也不⽤用怕
    最近⼀一⼝口氣升級三個版號,測試都幫我們預先抓出來來了了

    View Slide

  58. 可以開始做⾃自動化部署
    ⾃自動化部署真的很爽

    View Slide

  59. View Slide

  60. View Slide

  61. 還沒說服你嗎?
    來來找我聊聊

    View Slide