SlideShare a Scribd company logo
1 of 63
Download to read offline
為了了推動⾃自動化測試,
你付出了了多少?
Zen@ AgileTour HsinChu
2019.12
Who is Zen ?
! I am from Macau
! Back-end Engineer/ TDD promoter/ Facilitator
! 擅長⾃自動化測試, TDD/BDD
! 現職 TenMax AdTech Lab 騰學廣告科技
! 4yrs+ Scrum exp
! AgileTour Taipei speaker (2018,2019)
團隊不寫 Test
該怎麼辦?
Agenda
● 如何看待「團隊不寫⾃自動化測試」
● 推動⾃自動化測試,變⾰革的4個階段
● 如何推動變⾰革
● summary
「為甚麼總是不寫 Test 呀?」
臺北站
臺北站
當你問
「為甚麼⼤大家總是不寫呀」的時候
你是真的想知道為甚麼嗎?
推論階梯

(Ladder of Inference)
七個階段:
「觀察」
「過濾資訊」
「賦予意義」
「假設」
「作出結論」
「調整看法」
「作出⾏行行動」
團隊裡的成員不寫 Test
我已經講過寫測試很重要了了
不寫是因為不重視品質
⼤大家太懶懶惰了了
要定⼀一些KPI ⼤大家follow
code coverage

要達到80% 以上 !
有沒有試著開始寫?
是否有遇到阻礙?
可能沒有寫出

有效測試的經驗
先知道⼤大家寫 test 的程度
下個sprint安排 

pair programming
Their responsibility
【Blame】
My responsibility
【Help】
「為甚麼不寫Test」
背後的原因
變⾰革的4個階段
推動導入⾃自動化測試 -- 變⾰革
否認期
抗拒期 探索期
承諾期
否認期
不願⾯面對的真相
否認期
- 「user 應該不會這樣使⽤用」
- 「我就改這個地⽅方⽽而已」=> 「應該不會影
響到別處」
- 「我是來來負責開發功能的,不是來來當 QA
的」
- 只要滿⾜足某些假設,就不是個問題
特徵:
⾃自欺欺⼈人、⾃自信
⼼心存僥倖、對問題視⽽而不⾒見見
抗拒期
跳出舒適圈前的掙扎
抗拒期
- 「只有⼀一樣的時間,為甚麼要做更更多
事?」
- 「都是 legacy code 造成的,只能follow」
- 「已經有 QA 幫我們把關了了」
- 「寫測試⼜又不能賺錢 」
特徵:
恐懼與抗拒
安於現狀狀 ,陽奉陰違
有寫就好
High Coverage, But no protection
⾝身陷抗拒期的泥沼
我早說了了 ...
- 寫測試不能賺錢
- 寫測試拖慢進度
- 產品不賣是因為:
- Idea 不 work
- QA 能⼒力力不⾜足
- User 不識貨
- Marketing 不給⼒力力
Agile
doesn’t
work
探索期
暨期待⼜又害怕受傷害
探索期 - 「怎樣寫比較好?有沒有更更好的寫法?」
- 「這段這樣寫 之後好像沒辦法寫測試」
- 「甚麼是 isolation ?」
- 「原來來還有這麼棒的寫法!」
- TDD
特徵:
試驗,探索未知
好奇、焦慮、撞牆
承諾期
能⼒力力越⼤大 責任越⼤大
承諾期
- 「這個 test 還有更更簡短的寫法」
- 「這樣寫其他⼈人應該能讀得懂」
- 「如何能讓其他⼈人也能⼀一起維護?」
- 「沒有寫 test,不敢 commit」
- 「Test fail 導致 build break,要先修好」
- 品質穩定度上升
特徵:
被認同,新挑戰
⾃自主、分享成果、幫助他⼈人
團隊讓⼈人信任
⼈人緣變好
否認期
抗拒期 探索期
承諾期
能量量曲線
每個階段的
需要 / 不需要
否認期
- 財務損益
- user 流失率
- 客訴內容
- 流量量、收益
需要:資訊
- 產品品質
- Bug/Exception reports
- 長尾處理理時數,佔開發的總時數 XX%
- 每⽉月hotfix次數
- Release 頻率
- 外⾯面的世界
Cost of test
Sprints
Sp1 Sp2 Sp3 Sp4 Sp5 Sp6 Sp7
Code changed
Existing
Refactor
New
Member
90 => 250 cases
4h => 1.5 Day
否認期
不需要:隱瞞
- 「我們很好」
- 「只要⽤用⼀一樣的⽅方式繼續努⼒力力下去就能成
功」
抗拒期
- 吐露不想再⼿手動測試的⼼心聲
- 富「告別式意義」的 Retro
- ⾯面對品質低落落,檢討現狀狀
- 肯定過去努⼒力力
- 擔負產品的主⼈人
- 「這是你的⼩小孩」
- 沒有廚師是不先⾃自⼰己試味道
需要:告別式 動之以情
對過去的依戀
對舒適圈的依賴
抗拒期
不需要:被Push、被說教
- 跟情緒低落落的⼈人講道理理
- 「你不懂我的難處」
- 造成距離感、對立
探索期
- ⽀支持
- 學習寫測試,對付出的過程給予肯定
- Feedback
- 寫出來來的測試code,針對結果給予回饋
- 怎樣寫可以更更好、可以更更有可讀性
- 新知識
- 外部訓練
- workshop
- 試錯空間
- Test-sensibility 需要時間累積
需要:
探索期
不需要:被質疑
- 「你這麼利利害那都給你寫就好」
- 「改來來改去的,我⼿手動測還比較快」
- 找理理由合理理化⾃自⼰己「不適合寫test」
- 還沒有成果,感到吃⼒力力不討好
技術⾯面: 建立共識
探索期 實務
Coding
Convention
- 精⼒力力花在測試的邏輯上,⽽而不是
花在命名跟讀code上
⼀一致的
- Naming rule
- Structure
from Clean Code Ch#9
是甚麼造就了了⼀一個整潔的測試?
三件事,可讀性、可讀性,還是可讀性。可讀性,在單元測試裡可能比在產品程式裡還要重要。
Readability
技術⾯面: 降低⾨門檻
探索期 實務
築起鷹架
- 簡化的 setup
- 為 Business 封裝
好的 library
- best_practice.md
承諾期
需要:
- 被需要
- 希望促成團隊⽂文化
- 成果被肯定
- service downtime 統計
- hotfix, 插單的減少
- 同儕間的肯定
承諾期
不需要:被指導
- 已有 ⾃自組織意識
刻意練習
承諾期 實務
促成

團隊⽂文化
Test
Pair/Mob

Code
review
Fix
ASAP
CI/CD Retro
Neil
3 yrs
2015 2019
⼿手動測試
2017
開
始
嘗
試
寫
測
試
2018
外
訓
Internal
prom
otion
Agile
M
eetup

sharing Pair/Mob

Code review
⼤大量量重構
Test framework
upgrade
否認期 抗拒期 探索期 承諾期
2016
Recap
他⼈人責任
vs
我的責任
否認期
抗拒期 探索期
承諾期
變⾰革的4個階段
變⾰革中那些重要的事...
抗拒期
- 動之以情
- 告別式
否認期
- 事實與真相
探索期
- 降低⾨門檻
- 建立共識
承諾期
- 刻意練習
- 尋找新挑戰
- 促成團隊⽂文化
我的團隊正處在哪個階段?
我可以怎樣幫助團隊做得更更好?
如果你現在跑敏捷的⽅方式,
跟⼀一年年前差不多,
那麼你可能不是那麼敏捷
--- by ???
END.
Appendix
- Email me: zen0106[at]gmail.com
- My Medium: zen’s iteration
- 淺談⾼高效撰寫單元測試 slide post
- How to write a readable unit test
- 學TDD、外訓 請找 91哥 - 91敏捷之路路
- 敏捷宮廷中的測試攻略略 slide
- [DevOps meetup] 從研發團隊管理理及產品發展的⾓角度看DevOps
- 想了了解 TenMax ⼯工程⽂文化,請找 Richard Hsiao

More Related Content

What's hot

Abc2013 spring kawakami
Abc2013 spring kawakamiAbc2013 spring kawakami
Abc2013 spring kawakami
cyberagent
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
Hiroki Kondo
 

What's hot (20)

Abc2013 spring kawakami
Abc2013 spring kawakamiAbc2013 spring kawakami
Abc2013 spring kawakami
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
Testing in Production, Deploy on Fridays
Testing in Production, Deploy on FridaysTesting in Production, Deploy on Fridays
Testing in Production, Deploy on Fridays
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
[MOPCON2019]從零建立商業技術團隊
[MOPCON2019]從零建立商業技術團隊[MOPCON2019]從零建立商業技術團隊
[MOPCON2019]從零建立商業技術團隊
 
料理を楽しくする画像配信システム
料理を楽しくする画像配信システム料理を楽しくする画像配信システム
料理を楽しくする画像配信システム
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
 
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違いLinuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
 
突破困境:資安開源工具之應用分享 [2019/03/21] @臺灣資安大會
突破困境:資安開源工具之應用分享 [2019/03/21] @臺灣資安大會突破困境:資安開源工具之應用分享 [2019/03/21] @臺灣資安大會
突破困境:資安開源工具之應用分享 [2019/03/21] @臺灣資安大會
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
KubeVirt 101
KubeVirt 101KubeVirt 101
KubeVirt 101
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 

Similar to 為了推動自動化測試,你付出了多少?

Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
LetAgileFly
 
现代化敏捷测试工作者
现代化敏捷测试工作者现代化敏捷测试工作者
现代化敏捷测试工作者
Yi Xu
 
从码农到大师—— 我看程序员的成长
从码农到大师—— 我看程序员的成长从码农到大师—— 我看程序员的成长
从码农到大师—— 我看程序员的成长
Jay Xu
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
Yenwen Feng
 
Google analytics 還原使用者操作現場
Google analytics 還原使用者操作現場Google analytics 還原使用者操作現場
Google analytics 還原使用者操作現場
Shih-En Chou
 

Similar to 為了推動自動化測試,你付出了多少? (20)

ScrumMaster的影響力
ScrumMaster的影響力ScrumMaster的影響力
ScrumMaster的影響力
 
Stop Retrospective, Start Continuous Improving
Stop Retrospective, Start Continuous ImprovingStop Retrospective, Start Continuous Improving
Stop Retrospective, Start Continuous Improving
 
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
Scrum gathering 2012 shanghai 产品管理及用户体验 分会场:敏捷的hard模式 产品经理视角(窦涵之)
 
现代化敏捷测试工作者
现代化敏捷测试工作者现代化敏捷测试工作者
现代化敏捷测试工作者
 
亞太數位創業拉力營-創業智庫召集說明與介紹 2070715
亞太數位創業拉力營-創業智庫召集說明與介紹 2070715亞太數位創業拉力營-創業智庫召集說明與介紹 2070715
亞太數位創業拉力營-創業智庫召集說明與介紹 2070715
 
从码农到大师—— 我看程序员的成长
从码农到大师—— 我看程序员的成长从码农到大师—— 我看程序员的成长
从码农到大师—— 我看程序员的成长
 
敏捷软件开发——一个实践者的思考V1.2
敏捷软件开发——一个实践者的思考V1.2敏捷软件开发——一个实践者的思考V1.2
敏捷软件开发——一个实践者的思考V1.2
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
 
演示高手:Ppt制作与演示技巧(学习教练 肖刚)
演示高手:Ppt制作与演示技巧(学习教练 肖刚)演示高手:Ppt制作与演示技巧(学习教练 肖刚)
演示高手:Ppt制作与演示技巧(学习教练 肖刚)
 
Agile summit2021 - Talk About Exploratory Testing
Agile summit2021 - Talk About Exploratory TestingAgile summit2021 - Talk About Exploratory Testing
Agile summit2021 - Talk About Exploratory Testing
 
啟動自組織團隊
啟動自組織團隊啟動自組織團隊
啟動自組織團隊
 
Program Guide: Let Agile Fly! Scrum Gathering Shanghai 2012 Conference
Program Guide: Let Agile Fly! Scrum Gathering Shanghai 2012 ConferenceProgram Guide: Let Agile Fly! Scrum Gathering Shanghai 2012 Conference
Program Guide: Let Agile Fly! Scrum Gathering Shanghai 2012 Conference
 
從工程角度上,引領團隊持續挖掘產品風險
從工程角度上,引領團隊持續挖掘產品風險從工程角度上,引領團隊持續挖掘產品風險
從工程角度上,引領團隊持續挖掘產品風險
 
愛上失敗與測試|設計思考的第4+5關 Design Thinking Level 4+5
愛上失敗與測試|設計思考的第4+5關 Design Thinking Level 4+5	愛上失敗與測試|設計思考的第4+5關 Design Thinking Level 4+5
愛上失敗與測試|設計思考的第4+5關 Design Thinking Level 4+5
 
創業管理:兼職創業者完整課程 Week 1
創業管理:兼職創業者完整課程 Week 1創業管理:兼職創業者完整課程 Week 1
創業管理:兼職創業者完整課程 Week 1
 
Agile Summit Taipei 2019 - Agile Testing Strategy
Agile Summit Taipei 2019 - Agile Testing StrategyAgile Summit Taipei 2019 - Agile Testing Strategy
Agile Summit Taipei 2019 - Agile Testing Strategy
 
Google analytics 還原使用者操作現場
Google analytics 還原使用者操作現場Google analytics 還原使用者操作現場
Google analytics 還原使用者操作現場
 
Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011
 
Value of technology
Value of technologyValue of technology
Value of technology
 
微軟的商業智慧
微軟的商業智慧微軟的商業智慧
微軟的商業智慧
 

為了推動自動化測試,你付出了多少?