Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

為何開始⾃自動化測試

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

每次升級都覺得怕怕的

Slide 11

Slide 11 text

⼈人⼼心的⾨門檻

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

填寫資料送出

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

搞 CI Jenkins or CI Services

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Coverage report

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

你⼀一樣可以 mock

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

⾃自動化測試的優點

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

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