SlideShare a Scribd company logo
1 of 12
Download to read offline
web testing2.0 in DevOps methodology用 DevOps 思維
看待網頁測試
• 以前要手動刻功能,現在有內容管理系統自動化上版
• 以前要人工撰寫,現在有 HTML5 工具包
未來測試的自動化、工具化已經成為不爭的事實…
作者: 張崑
hqw621hqw@gmail.com
測試是告訴我們,還有事情沒完成,那就捲起袖子把它做對吧!
自動化測試 (automatic testing )第2章
12
”測試的最佳時機就是程式碼剛寫完的時候”
--<軟件開發初期單元測試名言>
本章摘要
本章將帶你進入自動化測試的世界,從自動化歷史回顧瞭解自動化測試在 DevOps 中
所扮演的角色,及介紹各自動化測試模型,最後將針對自動化測試進行程式碼的剖析。
自動化測試金字塔
每一個名詞的背後都有它的起源故事,自動化
測試這個名詞也是,2006 年 Mike Cohn 提出
三層式自動化測試金字塔,總共包含三個部分,
UI、Integration 和 Unit testing :
第2章 自動化測試
13
UI
包含包含介面自動化生成與比對等
機制,主要協助測試人員快速判定
介面的正確性。
Integration
包含多個功能整合後流程的測試、
主要針對不同測試個案進行流程化
測試
Unit
Testing
包含功能正確性的測試、網頁連結
正確性的測試、主要皆針對測試整
個功能邏輯面的完整性。
UI
Integration
Unit Testing
為什麼要這樣做區分呢 ? Cohn 所提出的自動化
測試金字塔本意就是期望我們從最底層的單元
測試著手,從底開始一路攻到頂打造更堅固的
測試回饋。而這樣的概念在當時也被許多公司
奉為圭臬,試圖貫徹測試自動化的精神。
TDD 的解決方案
於是乎自動化金字塔被視為許多開發團隊的圭
旨,甚至為了要配合敏捷 (scrum) 進行轉型,
大規模地裁撤獨立測試部門,將人員打散併入
各個 Scrum 團隊的風潮。主要都是希望開發與
測試這兩個環節能夠無縫的搭配,並進而將組
織邁向由測試驅動開發 (Testing Driven
Development, TDD) 的模式。
你說甚麼叫做 TDD ? 試想你的開發不就正因為
” 偵測到使用者需求而進行開發 ”,而
開發中又 ” 偵測到錯誤進而修改開發 ”,
一切都從測試驅動開發(TDD)。
第2章 自動化測試
14
Testing
DevelopTesting
Develop
again
Scrum
TDD
自動化冰淇淋
第2章 自動化測試
15
Automatic
Testing
自動化測試模組建立。
Integration
包含多個功能整合後流程的測試、
主要針對不同測試個案進行流程化
測試
Unit
Testing
包含功能正確性的測試、網頁連結
正確性的測試、主要皆針對測試整
個功能邏輯面的完整性。
Manual
Testing
由人工進行手動測試,大多針對介
面進行手動測試。
只可惜 TDD 的做法很快便落沒,為什麼稱為
冰淇淋,原因在於我們還是習慣以人工測試為
主,這形狀像極了冰淇淋。
Manual Testing
Automatic
Testing
Integration
Unit
Testing
第2章 自動化測試
16
或許你會問為什麼自動化的概念這麼好,但這
項思維卻不普及 ? 當然更重要的原因在於 TDD
這個概念被拋出後,並沒有人能夠有效 落地化
(landing),這造成我們得花更多的力氣進行人
工測試,2012 年最常見的就是上一頁那樣的測
試流程,整個組織的自動化測試主要還是針對
於用戶介面,對於單元測試的投資明顯少了許
多。從這樣的結果就能夠反映了整個開發團隊
對於自動化測試投資的不足。
另一項原因當然是許多投資自動化測試的團隊,
為了能夠儘快產出結果,便採取了一些測試的
捷徑措施,從最容易上手的使用者介面 (UI) 開
始。
傳統的商用軟體供應商或者某些新興的SaaS雲
端服務提供商的系統在用戶介面中往往涵蓋非
常多的業務邏輯,他們的測試團隊過往主要依
賴於通過手工測試來完成其業務的測試,評測
產品的品質。
因此其自動化測試的投資重點和目標,也往往
是逐步將現有人工測試的個案透過自動化替代,
這是一種非常典型的路徑依賴,而產生的結果
就是 ”團隊對於底層的自動化測試方面
的關注相當不足。”
甚麼叫做落地化 (landing) ? :
落地化指的是當提出一個構想之後不是
畫大餅,而是能夠提出執行的順序,協
助企業真正落實這項政策。
有鑑於冰淇淋測試模型的瓶頸,自動化杯子蛋
糕模式便是因應上述底層自動化不足所提出的
解決方案,Fabio Pereira 於 2014 年提出了這
項概念,但很快這個想法也無疾而終,原因在
於開發和測試團隊隸屬不同部門,兩者中間有
著強大的隔閡。從協同合作的角度上來講,這
些團隊都各自為政,彼此間並不能很有效地運
作,於是就算把底層投入範圍擴大,實質上卻
沒有帶來更有效的運作。
這代表著過程中即便讓這三個環節都注入不少
心力,但卻是 1+1+1 < 3 的成效。
自動化杯子蛋糕
第2章 自動化測試
17
Manual Testing
Automatic
Testing
Integration
Unit
Testing
DevOps 的思維
甚麼叫做 DevOps 看到這邊你大概略知一二,
我們希望開發和維運兩端有著持續不斷回饋的
可能性,但上述你會發現 DevOps 的作法不僅
僅是導入自動化測試就能了結。
市面上的 DevOps 的工具太多了,舉凡
Jenkins、Gitlab 這些都有助於達成 DevOps
地進行,但重點在於如何正確的使用,並且與
開發和維運兩端有密切合作關係。
這邊跟大家分享的觀點不單單僅是導入工具,
若是你能夠不透過工具,但藉由適當管理機制
讓開發維運能夠有效整合,也是一項好的政策。
本書不去定義甚麼才稱為 DevOps ,這只是一
項思維,而思維背後的作法該是不同團隊一起
努力去達成共識的。實作的過程中你的團隊會
建立所謂的默契,一旦默契形成,距離營造
DevOps 的氛圍也就不遠了。
但是即便這項思維沒有一定的規範,但或許解
開部分你對 DevOps 的迷思後你會更上手!
第2章 自動化測試
18
你還記得這張圖吧 ?
迷思1
DevOps 就是自動化
這大概是最普遍的迷思之一,大多數企業都認
為自動化的導入就是實施 DevOps。
但很可惜不是這麼說的,DevOps 強調無縫且
快速的回饋,自動化正好扮演了這一個環節,
但不代表因為有了自動化你就具有 DevOps 的
能力,自動化的效益完全在於自動化後的結果
給予甚麼回饋。
此外,有哪個工程師或測試人員持續的去使用
這類的工具、幫助 DevOps 持續運行才會是自
動化環節的重點。
DevOps 的迷思另一方面也來自於敏捷式開發
方式 (agile development),快速的佈署和測試
回饋讓系統開發生命週期降低,但有多少人因
為這類開發方式受益,我們太強調名詞,以致
於忘記了本質。
如同現在我們談的自動化,它的確能夠協助
DevOps 的運行,但他不是萬靈丹,我們該做
的是:
“ 確保你要導入的環節能夠與前後流程
扣合,這才是它的精神所在! “
第2章 自動化測試
19
迷思2
DevOps 需要一堆工具
工具化將會是未來的趨勢,但仔細思考 HTML5
也提供你許多工具包,就連部落格也給你客製
化工具讓你任意架設網頁,你都用過了嗎?
於是你會發現重點不是有一堆工具,而是你要
如何去使用這些工具。
再舉一個例子,我想許多企業在還沒有
DevOps思維時,會透過 google drive 進行文件
的備份和檔案歸屬管理,試問,真的每天有人
願意登入去管理這些東西嗎? 還是等到出了問
題才開始東翻西找?
工具在這個環節我想不是個必需品,但換個角
度想,它可以是一個協助你更上一層樓的好幫
手,端看你願不願意認識這個幫手。
傳統我們 IT 人員都認為系統導入最大的抗拒
是那些不懂科技的普通人,現在同樣的難題落
到你手中了,你懂科技,你也懂用了工具會更
方便,那你怎麼不願意試試?
當然若是不用工具依然能夠有DevOps的成效,
那麼工具就不再是討論的重點了!
“ DevOps 更需要的是心態上的轉變 “
第2章 自動化測試
20
迷思3
DevOps 讓我省下
測試和維運人力
省下人力這一句話你是不是也很熟悉,想當初
雲端 (cloud) 盛行的時候不也吵得沸沸揚揚,說
著虛擬化將會壓縮人的工作機會,但仔細思考
那朵雲若是沒有內容那不過就是一團空煙霧罷
了。
因此不是人力消失,而是轉型,想想雲端
上的應用是需要人去想的,雲端的普及是需要
人去推廣的,甚至這朵雲也是要人去建置的。
因此消失的測試人力會去哪裡?
舉例而言: 網頁的介面 (UI) 比對我想是需要人
工審視的,想想你的網頁設計是自動化工具可
以工整辨識的嗎? 一旦標準化的判定,你的UI
說不定少了線條美感或是創意的展現。
除此之外,系統文件的更新也需要專職的人力
去實踐,這不正是軟體工程中的難題之一,若
是沒有人帶頭持續進行我想也是枉然。
“ 未來的測試人力將有不同的使命! “
第2章 自動化測試
21
迷思4
DevOps 需要雲端化
當我們想到版本控管、程式備份都會想到雲端,
真的是這樣嗎? 一定要雲端化才能夠做DevOps
嗎? 我想這是一個非常大的迷思,看看你電腦
的本機是不是也開了許多資料夾,資料夾內你
會分門別類,當有更動時候你會補上 v1、v2、
v3的版本號,這個過程你不就正在做反饋,
如果你的管理夠熟練也夠清晰,說不定還比學
習一套雲端化管理工具成本還低。
下一章我們將開始帶領你進入 DevOps 的世界,
透過自動化程式實踐網頁測試自動化,並更想
讓你知道:
“ 本機端的命令指令 (command line)
也能夠幫助你做到自動化測試 “
第2章 自動化測試
22
如果你也開始對 DevOps這樣的思維感到興趣,
或是對於自動化測試有一些想法,你可以試著
下載python, selenium, webdriver…等先玩玩
看,往後的第三章我們將帶各位實踐網頁自動
化測試。

More Related Content

Similar to 用 DevOps 思維看待網頁測試 (第二章)

Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Kirk Chen
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
现代化敏捷测试工作者
现代化敏捷测试工作者现代化敏捷测试工作者
现代化敏捷测试工作者Yi Xu
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous deliveryQiao Liang
 
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min   中文敏捷自动化测试中的教训 45min   中文
敏捷自动化测试中的教训 45min 中文Shuyong Lin
 
Test corner #20 誰說只有測試金字塔
Test corner #20 誰說只有測試金字塔Test corner #20 誰說只有測試金字塔
Test corner #20 誰說只有測試金字塔yinwilliam
 
quick_orm 简介
quick_orm 简介quick_orm 简介
quick_orm 简介tyler4long
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2daoopp
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记Ryan YU
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现drewz lin
 
Rails 炸機實務
Rails  炸機實務Rails  炸機實務
Rails 炸機實務Manic
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationnetdbncku
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站51CTO
 
豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验drewz lin
 

Similar to 用 DevOps 思維看待網頁測試 (第二章) (20)

Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
Xpp
XppXpp
Xpp
 
现代化敏捷测试工作者
现代化敏捷测试工作者现代化敏捷测试工作者
现代化敏捷测试工作者
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous delivery
 
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min   中文敏捷自动化测试中的教训 45min   中文
敏捷自动化测试中的教训 45min 中文
 
Test corner #20 誰說只有測試金字塔
Test corner #20 誰說只有測試金字塔Test corner #20 誰說只有測試金字塔
Test corner #20 誰說只有測試金字塔
 
quick_orm 简介
quick_orm 简介quick_orm 简介
quick_orm 简介
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现
 
Rails 炸機實務
Rails  炸機實務Rails  炸機實務
Rails 炸機實務
 
單元測試
單元測試單元測試
單元測試
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站Linux运维趋势 第14期 高性能电子商务网站
Linux运维趋势 第14期 高性能电子商务网站
 
豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验
 

More from Chris Chang

淺談Fintech(7)
淺談Fintech(7)淺談Fintech(7)
淺談Fintech(7)Chris Chang
 
淺談Fintech(6)
淺談Fintech(6)淺談Fintech(6)
淺談Fintech(6)Chris Chang
 
淺談Fintech(5)
淺談Fintech(5)淺談Fintech(5)
淺談Fintech(5)Chris Chang
 
抄,是最好的獲利模式(全)
抄,是最好的獲利模式(全)抄,是最好的獲利模式(全)
抄,是最好的獲利模式(全)Chris Chang
 
抄,是最好的獲利模式
抄,是最好的獲利模式抄,是最好的獲利模式
抄,是最好的獲利模式Chris Chang
 
淺談測試Part2
淺談測試Part2淺談測試Part2
淺談測試Part2Chris Chang
 
淺談測試Part1
淺談測試Part1淺談測試Part1
淺談測試Part1Chris Chang
 
資訊架構(Part 1)
資訊架構(Part 1)資訊架構(Part 1)
資訊架構(Part 1)Chris Chang
 
使用者導向設計(Ucd)
使用者導向設計(Ucd)使用者導向設計(Ucd)
使用者導向設計(Ucd)Chris Chang
 
淺談Fintech(4)
淺談Fintech(4)淺談Fintech(4)
淺談Fintech(4)Chris Chang
 
作業系統(Os)教我的道理 part1
作業系統(Os)教我的道理 part1作業系統(Os)教我的道理 part1
作業系統(Os)教我的道理 part1Chris Chang
 
淺談Fintech(3).ppt
淺談Fintech(3).ppt淺談Fintech(3).ppt
淺談Fintech(3).pptChris Chang
 
About profession
About professionAbout profession
About professionChris Chang
 
關於論文這件事
關於論文這件事關於論文這件事
關於論文這件事Chris Chang
 
淺談Fintech(2).ppt
淺談Fintech(2).ppt淺談Fintech(2).ppt
淺談Fintech(2).pptChris Chang
 
淺談Fintech(1).ppt
淺談Fintech(1).ppt淺談Fintech(1).ppt
淺談Fintech(1).pptChris Chang
 

More from Chris Chang (19)

淺談Fintech(7)
淺談Fintech(7)淺談Fintech(7)
淺談Fintech(7)
 
淺談Fintech(6)
淺談Fintech(6)淺談Fintech(6)
淺談Fintech(6)
 
淺談Fintech(5)
淺談Fintech(5)淺談Fintech(5)
淺談Fintech(5)
 
抄,是最好的獲利模式(全)
抄,是最好的獲利模式(全)抄,是最好的獲利模式(全)
抄,是最好的獲利模式(全)
 
抄,是最好的獲利模式
抄,是最好的獲利模式抄,是最好的獲利模式
抄,是最好的獲利模式
 
淺談測試Part2
淺談測試Part2淺談測試Part2
淺談測試Part2
 
淺談測試Part1
淺談測試Part1淺談測試Part1
淺談測試Part1
 
資訊架構(Part 1)
資訊架構(Part 1)資訊架構(Part 1)
資訊架構(Part 1)
 
使用者導向設計(Ucd)
使用者導向設計(Ucd)使用者導向設計(Ucd)
使用者導向設計(Ucd)
 
淺談Fintech(4)
淺談Fintech(4)淺談Fintech(4)
淺談Fintech(4)
 
阿原肥皂
阿原肥皂阿原肥皂
阿原肥皂
 
Lean production
Lean productionLean production
Lean production
 
作業系統(Os)教我的道理 part1
作業系統(Os)教我的道理 part1作業系統(Os)教我的道理 part1
作業系統(Os)教我的道理 part1
 
淺談Fintech(3).ppt
淺談Fintech(3).ppt淺談Fintech(3).ppt
淺談Fintech(3).ppt
 
About strategy
About strategyAbout strategy
About strategy
 
About profession
About professionAbout profession
About profession
 
關於論文這件事
關於論文這件事關於論文這件事
關於論文這件事
 
淺談Fintech(2).ppt
淺談Fintech(2).ppt淺談Fintech(2).ppt
淺談Fintech(2).ppt
 
淺談Fintech(1).ppt
淺談Fintech(1).ppt淺談Fintech(1).ppt
淺談Fintech(1).ppt
 

用 DevOps 思維看待網頁測試 (第二章)

  • 1. web testing2.0 in DevOps methodology用 DevOps 思維 看待網頁測試 • 以前要手動刻功能,現在有內容管理系統自動化上版 • 以前要人工撰寫,現在有 HTML5 工具包 未來測試的自動化、工具化已經成為不爭的事實… 作者: 張崑 hqw621hqw@gmail.com 測試是告訴我們,還有事情沒完成,那就捲起袖子把它做對吧!
  • 2. 自動化測試 (automatic testing )第2章 12 ”測試的最佳時機就是程式碼剛寫完的時候” --<軟件開發初期單元測試名言> 本章摘要 本章將帶你進入自動化測試的世界,從自動化歷史回顧瞭解自動化測試在 DevOps 中 所扮演的角色,及介紹各自動化測試模型,最後將針對自動化測試進行程式碼的剖析。
  • 3. 自動化測試金字塔 每一個名詞的背後都有它的起源故事,自動化 測試這個名詞也是,2006 年 Mike Cohn 提出 三層式自動化測試金字塔,總共包含三個部分, UI、Integration 和 Unit testing : 第2章 自動化測試 13 UI 包含包含介面自動化生成與比對等 機制,主要協助測試人員快速判定 介面的正確性。 Integration 包含多個功能整合後流程的測試、 主要針對不同測試個案進行流程化 測試 Unit Testing 包含功能正確性的測試、網頁連結 正確性的測試、主要皆針對測試整 個功能邏輯面的完整性。 UI Integration Unit Testing 為什麼要這樣做區分呢 ? Cohn 所提出的自動化 測試金字塔本意就是期望我們從最底層的單元 測試著手,從底開始一路攻到頂打造更堅固的 測試回饋。而這樣的概念在當時也被許多公司 奉為圭臬,試圖貫徹測試自動化的精神。
  • 4. TDD 的解決方案 於是乎自動化金字塔被視為許多開發團隊的圭 旨,甚至為了要配合敏捷 (scrum) 進行轉型, 大規模地裁撤獨立測試部門,將人員打散併入 各個 Scrum 團隊的風潮。主要都是希望開發與 測試這兩個環節能夠無縫的搭配,並進而將組 織邁向由測試驅動開發 (Testing Driven Development, TDD) 的模式。 你說甚麼叫做 TDD ? 試想你的開發不就正因為 ” 偵測到使用者需求而進行開發 ”,而 開發中又 ” 偵測到錯誤進而修改開發 ”, 一切都從測試驅動開發(TDD)。 第2章 自動化測試 14 Testing DevelopTesting Develop again Scrum TDD
  • 6. 第2章 自動化測試 16 或許你會問為什麼自動化的概念這麼好,但這 項思維卻不普及 ? 當然更重要的原因在於 TDD 這個概念被拋出後,並沒有人能夠有效 落地化 (landing),這造成我們得花更多的力氣進行人 工測試,2012 年最常見的就是上一頁那樣的測 試流程,整個組織的自動化測試主要還是針對 於用戶介面,對於單元測試的投資明顯少了許 多。從這樣的結果就能夠反映了整個開發團隊 對於自動化測試投資的不足。 另一項原因當然是許多投資自動化測試的團隊, 為了能夠儘快產出結果,便採取了一些測試的 捷徑措施,從最容易上手的使用者介面 (UI) 開 始。 傳統的商用軟體供應商或者某些新興的SaaS雲 端服務提供商的系統在用戶介面中往往涵蓋非 常多的業務邏輯,他們的測試團隊過往主要依 賴於通過手工測試來完成其業務的測試,評測 產品的品質。 因此其自動化測試的投資重點和目標,也往往 是逐步將現有人工測試的個案透過自動化替代, 這是一種非常典型的路徑依賴,而產生的結果 就是 ”團隊對於底層的自動化測試方面 的關注相當不足。” 甚麼叫做落地化 (landing) ? : 落地化指的是當提出一個構想之後不是 畫大餅,而是能夠提出執行的順序,協 助企業真正落實這項政策。
  • 7. 有鑑於冰淇淋測試模型的瓶頸,自動化杯子蛋 糕模式便是因應上述底層自動化不足所提出的 解決方案,Fabio Pereira 於 2014 年提出了這 項概念,但很快這個想法也無疾而終,原因在 於開發和測試團隊隸屬不同部門,兩者中間有 著強大的隔閡。從協同合作的角度上來講,這 些團隊都各自為政,彼此間並不能很有效地運 作,於是就算把底層投入範圍擴大,實質上卻 沒有帶來更有效的運作。 這代表著過程中即便讓這三個環節都注入不少 心力,但卻是 1+1+1 < 3 的成效。 自動化杯子蛋糕 第2章 自動化測試 17 Manual Testing Automatic Testing Integration Unit Testing
  • 8. DevOps 的思維 甚麼叫做 DevOps 看到這邊你大概略知一二, 我們希望開發和維運兩端有著持續不斷回饋的 可能性,但上述你會發現 DevOps 的作法不僅 僅是導入自動化測試就能了結。 市面上的 DevOps 的工具太多了,舉凡 Jenkins、Gitlab 這些都有助於達成 DevOps 地進行,但重點在於如何正確的使用,並且與 開發和維運兩端有密切合作關係。 這邊跟大家分享的觀點不單單僅是導入工具, 若是你能夠不透過工具,但藉由適當管理機制 讓開發維運能夠有效整合,也是一項好的政策。 本書不去定義甚麼才稱為 DevOps ,這只是一 項思維,而思維背後的作法該是不同團隊一起 努力去達成共識的。實作的過程中你的團隊會 建立所謂的默契,一旦默契形成,距離營造 DevOps 的氛圍也就不遠了。 但是即便這項思維沒有一定的規範,但或許解 開部分你對 DevOps 的迷思後你會更上手! 第2章 自動化測試 18 你還記得這張圖吧 ?
  • 9. 迷思1 DevOps 就是自動化 這大概是最普遍的迷思之一,大多數企業都認 為自動化的導入就是實施 DevOps。 但很可惜不是這麼說的,DevOps 強調無縫且 快速的回饋,自動化正好扮演了這一個環節, 但不代表因為有了自動化你就具有 DevOps 的 能力,自動化的效益完全在於自動化後的結果 給予甚麼回饋。 此外,有哪個工程師或測試人員持續的去使用 這類的工具、幫助 DevOps 持續運行才會是自 動化環節的重點。 DevOps 的迷思另一方面也來自於敏捷式開發 方式 (agile development),快速的佈署和測試 回饋讓系統開發生命週期降低,但有多少人因 為這類開發方式受益,我們太強調名詞,以致 於忘記了本質。 如同現在我們談的自動化,它的確能夠協助 DevOps 的運行,但他不是萬靈丹,我們該做 的是: “ 確保你要導入的環節能夠與前後流程 扣合,這才是它的精神所在! “ 第2章 自動化測試 19
  • 10. 迷思2 DevOps 需要一堆工具 工具化將會是未來的趨勢,但仔細思考 HTML5 也提供你許多工具包,就連部落格也給你客製 化工具讓你任意架設網頁,你都用過了嗎? 於是你會發現重點不是有一堆工具,而是你要 如何去使用這些工具。 再舉一個例子,我想許多企業在還沒有 DevOps思維時,會透過 google drive 進行文件 的備份和檔案歸屬管理,試問,真的每天有人 願意登入去管理這些東西嗎? 還是等到出了問 題才開始東翻西找? 工具在這個環節我想不是個必需品,但換個角 度想,它可以是一個協助你更上一層樓的好幫 手,端看你願不願意認識這個幫手。 傳統我們 IT 人員都認為系統導入最大的抗拒 是那些不懂科技的普通人,現在同樣的難題落 到你手中了,你懂科技,你也懂用了工具會更 方便,那你怎麼不願意試試? 當然若是不用工具依然能夠有DevOps的成效, 那麼工具就不再是討論的重點了! “ DevOps 更需要的是心態上的轉變 “ 第2章 自動化測試 20
  • 11. 迷思3 DevOps 讓我省下 測試和維運人力 省下人力這一句話你是不是也很熟悉,想當初 雲端 (cloud) 盛行的時候不也吵得沸沸揚揚,說 著虛擬化將會壓縮人的工作機會,但仔細思考 那朵雲若是沒有內容那不過就是一團空煙霧罷 了。 因此不是人力消失,而是轉型,想想雲端 上的應用是需要人去想的,雲端的普及是需要 人去推廣的,甚至這朵雲也是要人去建置的。 因此消失的測試人力會去哪裡? 舉例而言: 網頁的介面 (UI) 比對我想是需要人 工審視的,想想你的網頁設計是自動化工具可 以工整辨識的嗎? 一旦標準化的判定,你的UI 說不定少了線條美感或是創意的展現。 除此之外,系統文件的更新也需要專職的人力 去實踐,這不正是軟體工程中的難題之一,若 是沒有人帶頭持續進行我想也是枉然。 “ 未來的測試人力將有不同的使命! “ 第2章 自動化測試 21
  • 12. 迷思4 DevOps 需要雲端化 當我們想到版本控管、程式備份都會想到雲端, 真的是這樣嗎? 一定要雲端化才能夠做DevOps 嗎? 我想這是一個非常大的迷思,看看你電腦 的本機是不是也開了許多資料夾,資料夾內你 會分門別類,當有更動時候你會補上 v1、v2、 v3的版本號,這個過程你不就正在做反饋, 如果你的管理夠熟練也夠清晰,說不定還比學 習一套雲端化管理工具成本還低。 下一章我們將開始帶領你進入 DevOps 的世界, 透過自動化程式實踐網頁測試自動化,並更想 讓你知道: “ 本機端的命令指令 (command line) 也能夠幫助你做到自動化測試 “ 第2章 自動化測試 22 如果你也開始對 DevOps這樣的思維感到興趣, 或是對於自動化測試有一些想法,你可以試著 下載python, selenium, webdriver…等先玩玩 看,往後的第三章我們將帶各位實踐網頁自動 化測試。