mopcon 2015 - 軟體、測試、程式設計家

57
軟體、測試、程式設計家 MOPCON 2015 周家弘 SJ [email protected] http://blog.toright.com

Upload: sj-chou

Post on 16-Apr-2017

2.624 views

Category:

Software


2 download

TRANSCRIPT

Page 1: MOPCON 2015 - 軟體、測試、程式設計家

軟體、測試、程式設計家

MOPCON 2015周家弘 SJ

[email protected]://blog.toright.com

Page 2: MOPCON 2015 - 軟體、測試、程式設計家

軟體、測試、程式設計家

Page 3: MOPCON 2015 - 軟體、測試、程式設計家

軟體設計是一件複雜的工作!

高腦力密集性 + 高複雜性

Page 4: MOPCON 2015 - 軟體、測試、程式設計家

我們回想一下...自己最後一次覺得驕傲的作品?

Page 5: MOPCON 2015 - 軟體、測試、程式設計家

何時我們開始不再重視軟體品質?

Page 6: MOPCON 2015 - 軟體、測試、程式設計家

http://blog.purechat.com/fast-cheap-and-good-the-small-business-guide-to-content-creation/

軟體開發的現實面

Page 7: MOPCON 2015 - 軟體、測試、程式設計家

程序猿每天都在做什麼?

寫 Code、填坑/救火、防止系統爆炸!

Page 8: MOPCON 2015 - 軟體、測試、程式設計家

系統爆炸不是既定 Feature

Page 9: MOPCON 2015 - 軟體、測試、程式設計家

RD 內心的尊嚴攻城獅種的蘋果沒有蟲!

Page 10: MOPCON 2015 - 軟體、測試、程式設計家

軟體:牽一髮而動全身我們該如何面對錯綜複雜的系統?

Page 11: MOPCON 2015 - 軟體、測試、程式設計家

面對 Bug?

Page 12: MOPCON 2015 - 軟體、測試、程式設計家

正視、解決、掌握

Page 13: MOPCON 2015 - 軟體、測試、程式設計家

掌握 Bug是為了避免重蹈覆轍!

Page 14: MOPCON 2015 - 軟體、測試、程式設計家

掌握 Bug 的要訣在於測試!

Page 15: MOPCON 2015 - 軟體、測試、程式設計家

軟體、測試、程式設計家

Page 16: MOPCON 2015 - 軟體、測試、程式設計家

軟體需測試乃天經地義只是程度上的差別 !?

Page 17: MOPCON 2015 - 軟體、測試、程式設計家

我們應該花多少時間測試軟體?

Page 18: MOPCON 2015 - 軟體、測試、程式設計家

軟體專案時間分配

Page 19: MOPCON 2015 - 軟體、測試、程式設計家

平常我們都如何測試系統?三種典型的測試模式

Page 20: MOPCON 2015 - 軟體、測試、程式設計家

模式一、QA 測!凡事讓專業的來!

Page 21: MOPCON 2015 - 軟體、測試、程式設計家

模式二、RD 測!自己的程式自己測...

Page 22: MOPCON 2015 - 軟體、測試、程式設計家

模式三、客戶測!你懂 der...

Page 23: MOPCON 2015 - 軟體、測試、程式設計家

奇怪,明明有測試怎麼還是 GG 了!

Page 24: MOPCON 2015 - 軟體、測試、程式設計家

軟體不只要測試還要全面!

Page 25: MOPCON 2015 - 軟體、測試、程式設計家

自動化測試才是王道

Page 26: MOPCON 2015 - 軟體、測試、程式設計家

如果可以全面性地自動化測試!

那該有多好?

Page 27: MOPCON 2015 - 軟體、測試、程式設計家

寫測試要怎麼開始?

Page 28: MOPCON 2015 - 軟體、測試、程式設計家

首先先培養寫測試的好習慣!

從小地方開始...

Page 29: MOPCON 2015 - 軟體、測試、程式設計家

有了自動化測試能讓程式設計師踏實地開發新功能!

Page 30: MOPCON 2015 - 軟體、測試、程式設計家

測試工作應該在什麼時候進行?

Page 31: MOPCON 2015 - 軟體、測試、程式設計家

敏捷開發中...整個軟體開發週期都應該隨時測試

Page 32: MOPCON 2015 - 軟體、測試、程式設計家

持續整合Continuous Integration

Page 33: MOPCON 2015 - 軟體、測試、程式設計家

Why ?透過持續整合實現持續交付

Page 34: MOPCON 2015 - 軟體、測試、程式設計家

先別說這個了

各位今年健康檢查了嗎?

系統也應該要例行進行健康檢查!

Page 35: MOPCON 2015 - 軟體、測試、程式設計家

實踐持續整合是為了掌握軟體開發節奏!

Page 36: MOPCON 2015 - 軟體、測試、程式設計家

到底什麼是持續整合?

Page 37: MOPCON 2015 - 軟體、測試、程式設計家

持續整合

不間斷、不停地、一直做、有事沒事就做一下

Page 38: MOPCON 2015 - 軟體、測試、程式設計家

持續整合

把大家寫的 Code 在一起跑看看有沒有錯!

Page 39: MOPCON 2015 - 軟體、測試、程式設計家

持續整合

有事沒事就把大家寫的 Code 一起跑看看有沒有錯!

Page 40: MOPCON 2015 - 軟體、測試、程式設計家

有事沒事就做一下 = 自動化把大家寫的 Code 放在一起 = 版本控制

跑看看有沒有錯 = 測試

Page 41: MOPCON 2015 - 軟體、測試、程式設計家

測試驅動開發TDD, Test-Driven Development

Page 42: MOPCON 2015 - 軟體、測試、程式設計家

我的感想...

Page 43: MOPCON 2015 - 軟體、測試、程式設計家

結對編程Pair Programming

Page 44: MOPCON 2015 - 軟體、測試、程式設計家

系統反饋System Feedback

Page 45: MOPCON 2015 - 軟體、測試、程式設計家

透過每日(即時)建置自動化測試你的系統!

隨時掌握系統健康狀態

Page 46: MOPCON 2015 - 軟體、測試、程式設計家

如何建置持續整合系統?

Jenkins● Private Project● WAR File Package● Linux apt / yum install● Rich Plugins

TravisCI● Open Source Project● GitHub Integration● Docker Based● .travis.yml Config

Page 47: MOPCON 2015 - 軟體、測試、程式設計家

持續整合可以做些什麼事?

Page 48: MOPCON 2015 - 軟體、測試、程式設計家

Push Code Static Code Analysis Resource Compress

Make Source

Pack Depoly

BuildDocument

Function Test Notify

Real-Time Build by

Unit Test UI Test

Page 49: MOPCON 2015 - 軟體、測試、程式設計家

Resource Compress

Make Source

Pack

BuildDocument

Nightly Build by

Pull Code Static Code Analysis

Integration Testing

Git TagDepoly Function Test NotifyUnit Test CoverageReport

Release

UI Test

Page 50: MOPCON 2015 - 軟體、測試、程式設計家

實踐持續整合常遇到的難題

● 系統耦合度太高,無法獨立測試● 實踐 UI 測試報酬率低● 錯誤邏輯不易測試,覆蓋率不足● 開發流程導入困難

Page 51: MOPCON 2015 - 軟體、測試、程式設計家

實踐持續整合的幾項建議

● 準備乾淨的測試環境● 建置過程不超過 20 分鐘● 培養寫出可被測試的程式碼● 透過測試程式驗證錯誤● 盡可能自動化你的工作● 透過自動化測試,大膽重構

Page 52: MOPCON 2015 - 軟體、測試、程式設計家

持續整合的核心價值

自動化 + 測試 + 系統反饋

Page 53: MOPCON 2015 - 軟體、測試、程式設計家

我們都需要勇氣凡事先有個開始...

Page 54: MOPCON 2015 - 軟體、測試、程式設計家

軟體、測試、程式設計家

Page 55: MOPCON 2015 - 軟體、測試、程式設計家

程式設計是快樂且富有創造性的工作!

Page 56: MOPCON 2015 - 軟體、測試、程式設計家

成為一位程式設計家