經歷了許多不同課程,演講,以及面對不同層級的人士來說,大家都深切瞭解『測試的好處』,但是在實務上,為什麼我們卻無法完全實踐呢?

首先我們必須體認到一件事情,『測試』 的確無法增加任何產能。

在我們寫過這麼多專案,做了這麼多程式開發架構中,最大的盲點就在於此,『測試』這件事情,對於一位開發者的產能完全無法提升,更何況對於技術管理人員來說,要掌握一個團隊的開發速度,需要的就是掌握『功能的成長』。

想當然爾,『測試』當然是一件可以被忽略的事情,那為何又有這麼多人提倡『測試的好處』。

開發的謬誤

對於開發新的功能,就是經常遭遇到許多不同角色的挑戰,許多不同人員的爭執,最後淪落到開發人員手中,就只能默默的聽話,好好的實做它。

而這中間就是不斷的趕工,不斷的把新的功能加上去,將新的功能推出。

的確 Time to Market 是很重要的事情,但是你所做的是一個 POC (Portotype of concept) 還是一個可能正在長期經營的 Project

在實際流程中,很多時候短暫的 POC 一旦上線之後,就直接變成線上的 Production code ,不論幾次都屢試不爽。一旦這件事情『有效』,它就開始有 Market ,有了使用者,就開始迎接新生命。

接下來不是進行開發 production code 的產出,而是『新功能』『後台』『管控』『分析』等面對客戶端直接或間接的功能接總而來,接下來就陷入開始『疊床架屋』的環境中,又開始陷入一個無限的循環。

測試是一種流

改一個方向,用另外一個觀點開始新的專案吧!

認清沒有所謂的 POC ,有的就是使用前人的經驗,使用自己曾經開發過的片段程式碼,組裝成另外一套可行的解決方案,而在這看似疊床架屋的過程中,我們至少需要設定一個『安全網』。

『安全網』在一開始開工之前我們就必須將設定範圍釐清,還有建置『安全網』的佈局要瞭解清楚,安全網建置太多,當然看似好棒棒,但實際上可能連工人要簡單拿個梯子向上,都會被安全網卡住,這過程屢見不鮮。

『安全網』也就是建立 『測試先行』 的開流程,在建構整體開發狀況時,先行評估哪些部分需要『測試』,將測試範圍使用最小驗證方式進行,在逐步加強上去功能,透過不斷的漸增強功能,安全網也會建立的更為完整。

執行的方法

再回頭過來看,我們就會發現,安全網建立的越為完整,我們能夠對於程式交付的信心就特別足夠。

而事實上執行步驟並沒有想像中的複雜,

軟體開發工程大師 Martin Fowler 就點出了其中的測試先行精髓,

 * Write a test for the next bit of functionality you want to add.

 * Write the functional code until the test passes.

 * Refactor both new and old code to make it well structured.

•    寫一些測試給予接下來要增加的功能

•    編寫這段功能,一直不斷的進行驗證,直到測試通過為止

•    調整新和舊的程式碼結構,並且保持架構和驗證正確性

誰,該先負責扛起測試先行?

試著將新的專案,用上述的方式開始改變自己的或改變團隊的開發方式,我們可以發現在一開始的時候,最需要付出最大的責任,在於『技術主管』或者『資深工程師』身上,有幾件事情要進行,

•    對於目標瞭解的總覽,需要瞭解整體件事『基於此階段全盤的目標的性』

•    對於『技術架構的掌握』,訂出架構

•    推動團隊使用的『測試先行模型』,以及訂定規則,確認『測試先行框架採用』。

當這些事情被擬定下去後,開始進行嚴格控管,開始進行任何驗證方式,監督每位組員都採用此樣框架進行開發,進行驗證,持續的監督,每日的監督,直到所有人都將此認同為『流』一般的概念。

這件事情對於身為『技術主管』及『資深工程師』責無旁貸。

只有將這件事情,從深層的體認,進行源頭開始,展開渠道的挖掘,才有辦法進行源源不斷的向下擴展的瀑布,延伸到每個團隊的成員,屆時責任將會是『團隊的所有人』責任均分。

測試是對於工程師的壓榨?

對於世界上的所有人來說,改變本來就是不簡單的事情,特別是已經習慣了多年的方式,知識,想法,實際經驗,需要用不同方式顛覆,的確有他的難度。

的確,對於工程師來說,在一開始先行測試,是一種『絕對的壓榨』,在這段時間功能要開發,測試要產出,還要去改變自己的思維及作法,的確是難以讓人接受。

困難點就在於能否自我突破那道關卡,就如同用新的姿勢挑戰以往的運動,如同跑步,如果沒有小步小步的修正腳的姿勢,抬腿的高度,永遠無法飆出更快的衝刺記錄, 『闖過壓榨期,才有辦法邁進新視野』

這過程絕對是『痛苦的』,但也是『挑戰性的』,兼具自我成長價值。

是想要永久的停留此地,還是要擁抱更多得可能,這問題就留給各位去探討。

後記

技術對於已經進入此領域的人來說,永遠都只是一個敲門磚,內在永遠不變的是『心態』,以及對於『更好』的堅持,同時程式開發也是一門『與人溝通的藝術』。

難就難在它沒有一個絕對,只有情境與概念,以及對應的角色及適用的時空背景。

後續我們還可以談論更多關於,接案者要怎麼進行導入測試流程,前端測試要怎麼導入,前端 UI 是否都需要加入測試,前端快速變動下該如何測試等議題。

Mokayo 技術專欄中,有更多關於 Google Analytics 概觀 ,以及前端自動化測試初探,另外我們陸續把更多實際開發『測試先行的方法』,『前端測試實做』的方法與大家分享。

請持續鎖定!

###

立即報名Web 前端持續整合開發實戰

觀念、工具、流程一次搞定 

課程簡介

從編譯語言角度,讓前端所有事情再度需要被編譯化,讓繁忙的工作留給伺服器去執行。

透過本次課程可以讓網站開發者了解,前端編譯工具使用方式,從開發到測試,以及相關工具介紹。

時間: 6 月 26 日 (日) 9:30 - 16:30

地點:台北市松山區八德路四段123號3樓

票價:$3990

點我報名 

 

熱門新聞

Advertisement