68
Why do we need Backend Testing

Why do we need backend testing

Embed Size (px)

Citation preview

Page 1: Why do we need backend testing

Why do we need Backend Testing

Page 2: Why do we need backend testing

安安你好

Page 3: Why do we need backend testing

TMDers

Page 4: Why do we need backend testing

•⽴立偉 •硬體公司裏⾯面的軟體⼯工程師 •上海賣 Storage 當業務 •回臺北 Coding •能 Coding 是幸福的

Page 5: Why do we need backend testing

腦筋急轉彎 A:

Bug 通常分爲哪兩種?

Page 6: Why do we need backend testing

答:

沒被發現 與被發現的

Page 7: Why do we need backend testing

腦筋急轉彎B:

被發現的 Bug 通常分爲哪兩種?

Page 8: Why do we need backend testing

答:

被貴爲上帝的客⼾戶發現

與其他⼈人發現的

Page 9: Why do we need backend testing

許願?

•消滅這個世界上所有的 Bug?

Page 10: Why do we need backend testing

許願?•⽐比客⼾戶更早發現 Bug

• (Bug)早期發現早期治療,(專案)存活率⾼高

Page 11: Why do we need backend testing

該怎麼美夢成真?

Page 12: Why do we need backend testing

規格 (Spec)/

測試 (Test)

Page 13: Why do we need backend testing

如果我們想做⼀一個⼩小功能

Page 14: Why do we need backend testing

⼤大家有沒有掉過⼿手機?

Page 15: Why do we need backend testing

步驟 1

Why ?

爲什麼要做,定義需求

Page 16: Why do we need backend testing

步驟 1

如果⼀一直打錯密碼

嘿嘿...美國國防部 DoD 5220.22-M格式化!

接着我就聽到了鍵盤的敲打聲...

Page 17: Why do we need backend testing

步驟 1

⼿手機集體⾃自殺了...

Page 18: Why do we need backend testing

步驟 1

需求未定義明確

第⼀一次啓⽤用先告知,打錯 10 次⼿手機會鎖定 1 ⼩小時,接着在錯誤會觸發安全機制格式化儲存區。

Page 19: Why do we need backend testing

步驟 2How ?

如何做,定義流程

Page 20: Why do we need backend testing

步驟 2How ?

「⽽而且第⼀一次設定密碼時要有提⽰示告知」

「⼗十次打錯密碼,⼿手機會鎖定⼀一⼩小時」 「⼀一⼩小時後,解鎖失敗⼗十次格式化」

Page 21: Why do we need backend testing

步驟 3

What ?

動⼿手做,實作程式碼

Page 22: Why do we need backend testing

結論:Tdd / Bdd 的精神

Think, before you act.

Page 23: Why do we need backend testing

結論:Tdd / Bdd 的精神 或許上不了天堂,但⾄至少不會下地獄的四步驟: 1. 確認需求 ( 上帝客⼾戶想要什麼 ) 2. 寫下規格 3. 規劃流程 ( 思考與規劃 ) 4. 實作 ( 寫程式 )

Page 24: Why do we need backend testing

道歉啓⽰示

我花了各位三分鐘的⽣生命說了廢話。

Page 25: Why do we need backend testing

爲什麼需要規格 (Spec)?

Page 26: Why do we need backend testing

⿇麻雀腦失憶症•⼝口說無憑 •容易忘記 •溝通誤差 •需求變更

Page 27: Why do we need backend testing

優點•可以協助分派⼯工作

•忘記的時候可以看

•⽼老闆/客⼾戶不認賬的時候可以拿來吐他

Page 28: Why do we need backend testing

規格的種類

Page 29: Why do we need backend testing

規格的種類•⽂文字記錄 (⽩白紙⿊黑字?合約?) •錄⾳音錄影 •⾃自⼰己的⿇麻雀腦 •同事的腦 • PM 的腦 (以上三個通通可能會忘記) •可以被閱讀且電腦可執⾏行的規格

Page 30: Why do we need backend testing

可讀可執⾏行的規格這是做什麼⽤用的

怎麽⽤用

⽤用了應該發⽣生什麼事情

Page 31: Why do we need backend testing

Red Green Refactor

Page 32: Why do we need backend testing

Think

Page 33: Why do we need backend testing

Red

• 確認好功能後,寫出可閱讀可執⾏行的 Spec。

• 無法通過測試,會錯誤。

Page 34: Why do we need backend testing

Green

可以通過測試,不會有錯誤。

Page 35: Why do we need backend testing

Refactor

把程式碼重構變得更棒

( 當然直接寫出很棒的程式碼更好)

且重構完之後不會造成規格不符

Page 36: Why do we need backend testing

有⼀一天

上帝客⼾戶會變更需求

Page 37: Why do we need backend testing

但就算有了規格

如果發⽣生以下這件事情

Page 38: Why do we need backend testing

我們被耍的時候...

Page 39: Why do we need backend testing
Page 40: Why do we need backend testing
Page 41: Why do we need backend testing

我們⼜又被耍的時候...

Page 42: Why do we need backend testing
Page 43: Why do we need backend testing

沒有規格跟不正確的規格

或者有很多份規格

都很可怕

Page 44: Why do we need backend testing

因此需要確保

規格是正確的

Page 45: Why do we need backend testing

Continuous Integration

持續整合

Page 46: Why do we need backend testing

⼩小故事•這是朋友跟我說的故事 •有⼀一天 User 說某功能被改壞了 •但是看了⼀一下上次改動記錄是 2012/XX/XX 兩年前

•噢,User 說其實他從來沒按過那顆按鈕 •阿不就還好他不是在臺北捷運上班

Page 47: Why do we need backend testing

持續整合

•有變更就建置專案 •⾺馬上測試是不是正常 •⼀一旦有錯誤會及時發現

Page 48: Why do we need backend testing

⾹香蕉可以請猴⼦子

Page 49: Why do we need backend testing

22K 請⼀一個⼯工讀⽣生 ?

Page 50: Why do we need backend testing

可以讓⼈人⼒力花費在更有效益的事情上

Page 51: Why do we need backend testing

–魏靈公

「⼯工欲善其事,必先利其器。」

Page 52: Why do we need backend testing

Jenkins

Page 53: Why do we need backend testing

網路 + Server

Page 54: Why do we need backend testing

⾃自動建制專案

Page 55: Why do we need backend testing

主動通知問題

Page 56: Why do we need backend testing

隨時可了解狀況

Page 57: Why do we need backend testing

規格 + CI 與 Jenkins

Page 58: Why do we need backend testing

規格 + CI 與 Jenkins

可讀可執⾏行的規格 > 是規格也是測試

CI 與 Jenkins 持續的執⾏行這些測試

+

Page 59: Why do we need backend testing

⼩小故事 ⼤大啟⽰示職災傷害預防

Page 60: Why do we need backend testing

⽊木頭加⼯工廠•把🌲放在平台,按下按鈕,切成兩半,⽤用🍌請🐒都能做的事情。

•但平均⼀一年要換掉⼀一隻🐒。

•🐒會少⼀一隻👋 •雖然⽼老闆很⿊黑⼼心⼀一⽑毛都不賠,但是卻引發🐒勞⽅方的罷⼯工抗議。

Page 61: Why do we need backend testing

快問快答•🐒們只要求對職業傷害需要補償,最重要的是,要有有效⽅方案改善危險的⼯工作環境。

•⼀一起想想有什麼⽅方案?

Page 62: Why do we need backend testing

解決⽅方案

•⼀一次要按下兩顆🔘,才能啟動⼑刀⽚片切🌲。

•透過制度減低錯誤率。

Page 63: Why do we need backend testing

某天與 Webber 的對話

Page 64: Why do we need backend testing

Tdd / Bdd 已死?

Page 65: Why do we need backend testing

⼈人⼈人都是⼤大神?•多數專案都是團隊 •即使是單⼈人團隊,也有其他利害關係⼈人

•規格可以作爲溝通的標準與依據

Page 66: Why do we need backend testing

結論

Page 67: Why do we need backend testing

我們都想讓 Bug 更少

•有很多⼯工具與流程 •達到⺫⽬目的的⽅方式 •找到適合⾃自⼰己團隊的⼯工具,發揮效⽤用。

Page 68: Why do we need backend testing

我們都想讓世界更美好

•寫規格與測試就是⼀一種很棒的⼯工具