雖然這篇單元測試整合測試鄉民發文沒有被收入到精華區:在單元測試整合測試這個話題中,我們另外找到其它相關的精選爆讚文章
在 單元測試整合測試產品中有5篇Facebook貼文,粉絲數超過1萬的網紅91 敏捷開發之路,也在其Facebook貼文中提到, 【從學員練習影片觀察到一個關於 TDD 的有趣現象】 極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的) 我從2位第一次上我課的學員(當然就是 #極速...
同時也有10部Youtube影片,追蹤數超過1萬的網紅李庭冰,也在其Youtube影片中提到,馬祖風氣區管理處 空拍機性能測試 想最快看到最新影片 請訂閱~ 小冰 https://www.facebook.com/Bboy.shaobin/ Once in a lifetime 團隊 https://www.facebook.com/Once-in-a-lifetime-%E4%B8%8...
「單元測試整合測試」的推薦目錄
單元測試整合測試 在 sam deng Instagram 的最佳解答
2021-02-03 10:42:47
BOSE 在 2019 年開始,搞出了能聽音樂的太陽眼鏡這檔子事,把藍芽無線音響塞進了兩側的鏡腳,發展到現在已經有 ALTO、Tenor、Soprano 和 Rondo 幾款(名字還都跟音樂有關)可以選擇,多到有「你的臉型最適合哪支 BOSE 太陽眼鏡」這種文章。 如今發揚光大,做了這隻適合戶外運...
單元測試整合測試 在 109學測∣企鵝讀書帳×企鵝工作坊 Instagram 的最讚貼文
2021-07-11 08:52:37
考完學測了,企鵝覺得在準備學測時的幾本書很實用,因為每個人使用上不同,所以企鵝就不標示推薦幾顆星~ 主要推薦的是書局可以買的到的參考書,補習班的書籍不在推薦書單之中。 ——————————————————— . . 【國文科】 👍六冊課本 一定要讀熟30篇古文 👍龍騰版古今閱讀100 訓練手感,古...
-
單元測試整合測試 在 李庭冰 Youtube 的精選貼文
2016-11-16 13:45:33馬祖風氣區管理處 空拍機性能測試
想最快看到最新影片
請訂閱~
小冰
https://www.facebook.com/Bboy.shaobin/
Once in a lifetime 團隊
https://www.facebook.com/Once-in-a-lifetime-%E4%B8%80%E7%94%9F%E4%B8%80%E6%AC%A1-%E6%B4%BB%E5%8B%95%E5%9C%98%E9%9A%8A-913634415380449/
DJI Mavic Pro 智能飛行篇
外觀部分
Phantom 從第一代就延續了一致的四軸設計風格,也因為只有白色,所以 Phantom 也被暱稱為“小白” 空拍機,Phantom 4 這次當然還是延續了主要 Phantom 系列的設計風格,但明顯因為電池容量加大而相對前幾代肚子變大了,因為肚子變大相對四個軸也變得更加短小,而加高的四個馬達除了對於動力有所提升,也讓槳轉動時對相機的干擾也相對變小,但可惜的是腳架還是延續舊有一貫設計無法收起,所以當然雲台也只能俯仰而無法左右旋轉,畢竟上面還有老大哥 DJI Inspire 系列需要尊重一下。
另外原本霧面的白色在 Phantom 4 看來也改成亮面Glossy,這對拍攝者會產生反光效果,還有亮面應該比較容易刮傷,看來飛機的包膜生意會很好。
而重量部分 Phantom 3 是 1280g, 這次的Phantom 4 微幅增加100g到 1380g,當然電池應該貢獻不少重量。
動力系統
Phantom 3 的動力系統是水平 16m/s,垂直上升與下降5m/s & 3m/s,Phantom 4 也增加了一個運動模式提升動力到 72Km/h, (20m/s),垂直上升與下降也提升到各為 6m/s & 4m/s,是一個把空拍機拿來當 FPV 競速機來操的概念,但如果空拍還是建議回到一般模式,免得飛太快避障系統來不及反應喔,另外槳的部分也改用快拆槳的設計更加快速與安全。
電力部分
Phantom 3 使用的是 4S 15.2V 容量為 4480mAh的智能電池,可以飛行時間是23mins,這次 Phantom 4 一舉將電池放大為 15.2V 5350mAh的智能電池,在新的視覺定位與避障系統 (共五個相機)應該更費電的狀況下,飛行時間小幅增加五分鐘延長到 28 mins,這讓原先猜測 Phantom 4 可以飛行到 35mins 的人應該會有點小失望。
相機部分
Phantom 3 的採用的相機是 Sony Exmore BSI 1/2.3" CMOS傳感器,鏡頭為F2.8定光圈,最高可以錄製 4K影像 30f/s,Phantom 4 看來沒有很大升級還是維持 1/2.3" CMOS傳感器,鏡頭為F2.8定光圈,最高可以錄製 4K影像 30f/s,而主要的改變是支援 1080P 120f/s 拍攝,當需要拍攝一些慢動作運動或風景畫面很好用,向 GoPro 致敬。
雲台部份
Phantom 4 雲台系統最大改進是採用雙臂設計,主要考量應該是比較強固也更穩定,畢竟已購買 Phantom 3 的消費者撞壞雲台而破費維修的不在少數,看來售後維修部門的 Big Data 有用在產品設計部門改良。另外新的雲台外觀也看不到類似舊的四個防震球的機構防震,到底是取消還是藏在內部還要再觀察,不過整體防震效果應該是要更優的。
視覺定位系統
Phantom 3 的視覺定位系統外觀有點不太協調,像是一個硬是外加的模組,這次 Phantom 4 把視覺定位系統重新設計,整合性更佳,也把本來兩個超音波定高與一個相機定 XY 軸設計變成兩個相機的“雙目”視覺定位,當然辨識效果也更好了讓室內戶外也更安全,原本辨識高度為30~300cm, 速度最高8m/s 提升到辨識高度為10m, 速度最高10m/s。
圖傳部分
Phantom 3 使用的是大疆獨步全球的 LightBridge 技術,可以最遠到 5000m外傳輸 720p 30f/s 影像,這次 Phantom 4 的圖傳看來沒有提升,畢竟後面的追兵對此項規格還很遙遠。
遙控器部分
Phantom 4 此次遙控器採用與 Phantom 3 相同的設計,畢竟前一代遙控器質感不錯,也沒有必要改變,但能不能與 Phantom 3 共用而只買飛機?以大疆的策略上應該不會這樣做幫消費者想?(根據原廠說明把 P3 P-A-F 模式在 P4 改成 P-S-A S:Sport)
避障功能
避障系統應該是此次 Phantom 4 最重要的功能,也是今年無人機的發展重點,包含對手零度 XPlorer 2 與 Yuneec Typhoon H 都提供類似或不同技術的避障功能,Phantom 4 主要提供的是前方雙鏡頭60度避障礙物偵測,有效距離為 10m,當然障礙物必須是很明顯的大面積物體,一般對於電線,繩子等可能就無法偵測了,另外當然側飛或倒著飛也無法避障,360度避障礙物可能要等到更高階或下一代的產品了。
其他功能
智能飛行這次新增了視覺追蹤 (ActiveTrack) 功能,過去是用手機或遙控器GPS來做 Follow Me 跟隨功能,這次 Phantom 4 可以直接利用相機鎖定人物來跟蹤,所以被跟蹤對象就不一定要拿遙控器,大幅增加拍攝移動人物的方便性,不過最先導入這項技術可是零度喔,實際測試過程中人物移動太快當然也會跟丟喔。
另外這次有把指南針與慣性單元 IMU雙重設計,避免一組損害時另一組還可正常運作,只是如果兩組都受干擾時呢?
指點飛行 (TapFly) 功能是可以利用手指在螢幕滑動直接控制飛機飛行方向,最神的是遇到障礙物可以懸停或自動拉高避過障礙物喔! -
單元測試整合測試 在 吳老師教學部落格 Youtube 的最佳貼文
2016-08-05 21:47:30Android_Studio開發網路資料庫(第7次ListView_CSV專案與修改程式&連結網路與功能表選單元件&自動產生Activity方法與生命週期&Intent類別功能說明與外部存取&增加Menu功能&匯入就專案與Intent大全&將雲端試算表整合到ListView當資料來源)
上課內容:
01_JAVA連結網路複習
02_建立ListView_CSV專案與修改程式
03_ListView連結網路與功能表選單元件
04_功能表選單元件程式設計
05_自動產生Activity方法與生命週期練習
06_Intent類別功能說明與外部存取說明
07_Intent類別程式時作與增加Menu功能
08_如何匯入就專案與Intent大全補充
09_如何將雲端試算表整合到ListView當資料來源
完整影音
https://www.youtube.com/playlist?list=PLCfL1sBZ2_SR3fpB-TKkBVdFEvdATyk0p
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/java_object2016
懶人包:http://terry55wu.blogspot.com/p/android.html
想學好Android開發,
先學會Android_Studio開發環境建置,
或是直些下載我的Android_Studio穩定開發版,
只要再裝好JAVA SDK(32位元)版即可,
不要浪費時間再當白老鼠,這也是很多人的痛。
接下來就是建個 HelloWorld 接下來就是把自己的創意變成APP,
開始努力建置APP,為台灣的軟體產業加把勁,
展現台灣的軟實力吧!
Android_Studio穩定開發版 [下載]
JAVA SDK(32位元) [下載]
課程理念與課程介紹:
Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達500萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成為各產業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
參考書目
Android 初學特訓班
作者:鄧文淵/總監製;文淵閣工作室/編著
出版社:碁峰 出版日期:2011年12月29日 2刷
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安
出版社:碁峰
出版日期:2011年12月29日
吳老師教學部落格:
http://terry55wu.blogspot.com/
吳老師
android 開發教學,android 程式教學,android 使用教學,android app教學,android sdk,android eclipse,android 開發,android studio 開發教學,android studio tutorial,android studio download,android app開發資料庫,app開發資料庫,網路資料庫教學,app開發教學 -
單元測試整合測試 在 吳老師教學部落格 Youtube 的最佳貼文
2016-08-05 21:45:56Android_Studio開發網路資料庫(第7次ListView_CSV專案與修改程式&連結網路與功能表選單元件&自動產生Activity方法與生命週期&Intent類別功能說明與外部存取&增加Menu功能&匯入就專案與Intent大全&將雲端試算表整合到ListView當資料來源)
上課內容:
01_JAVA連結網路複習
02_建立ListView_CSV專案與修改程式
03_ListView連結網路與功能表選單元件
04_功能表選單元件程式設計
05_自動產生Activity方法與生命週期練習
06_Intent類別功能說明與外部存取說明
07_Intent類別程式時作與增加Menu功能
08_如何匯入就專案與Intent大全補充
09_如何將雲端試算表整合到ListView當資料來源
完整影音
https://www.youtube.com/playlist?list=PLCfL1sBZ2_SR3fpB-TKkBVdFEvdATyk0p
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/java_object2016
懶人包:http://terry55wu.blogspot.com/p/android.html
想學好Android開發,
先學會Android_Studio開發環境建置,
或是直些下載我的Android_Studio穩定開發版,
只要再裝好JAVA SDK(32位元)版即可,
不要浪費時間再當白老鼠,這也是很多人的痛。
接下來就是建個 HelloWorld 接下來就是把自己的創意變成APP,
開始努力建置APP,為台灣的軟體產業加把勁,
展現台灣的軟實力吧!
Android_Studio穩定開發版 [下載]
JAVA SDK(32位元) [下載]
課程理念與課程介紹:
Android智慧型手機平台,已成為手機上最完整的開放開發平台
人手必備的趨勢下行動上網已達500萬人次以上,手機相關應用,將會超越PC,比PC更智慧,更貼近個人使用習慣,未來APP將漸取代Web,成為各產業或政府對外窗口。
如何開發APP,以循序漸進的方式講授Android應用程式架構、圖形介面開發、測試與除錯等,進而取得證照。
吳老師教學特色:
1.影音複習分享(全程錄影)。
2.能不硬code程式,有程式也會提供畫面。
3.提供業界實務開發經驗。
4.書上沒講到的操作,圖形化工具使用。
5.隨時更新第一手資訊。
參考書目
Android 初學特訓班
作者:鄧文淵/總監製;文淵閣工作室/編著
出版社:碁峰 出版日期:2011年12月29日 2刷
Java SE 7與Android 4.x程式設計範例教本
作者:陳會安
出版社:碁峰
出版日期:2011年12月29日
吳老師教學部落格:
http://terry55wu.blogspot.com/
吳老師
android 開發教學,android 程式教學,android 使用教學,android app教學,android sdk,android eclipse,android 開發,android studio 開發教學,android studio tutorial,android studio download,android app開發資料庫,app開發資料庫,網路資料庫教學,app開發教學
單元測試整合測試 在 91 敏捷開發之路 Facebook 的精選貼文
【從學員練習影片觀察到一個關於 TDD 的有趣現象】
極速開發的課後練習作業,雖說重點是放在極速開發要學習的技巧與刻意練習的模型,但開發的方式、順序也是刻意安排成類似 TDD 的進行方式,來讓生產力最大化(TDD 本來就是幫助開發的,不是幫助測試的)
我從2位第一次上我課的學員(當然就是 #極速開發,代表他們沒上過#單元測試 跟 #TDD與持續重構),雖然他們是照著示範影片、上課教學用 TDD 在寫整個 tennis 的過程,但從他們執行測試的時間點就可以發現:
「他是用測試來驗證 production code 的正確性」,即使他先寫了測試,也不先執行,沒有看到紅燈,每次都等到 production code 寫完了,應該要綠燈時,才執行測試。
而其他上過 TDD 課的同學 ,或是上過單元測試的同學,知道測試是用來描述情境,如果現在「加入的這個情境是新的需求或需求異動,代表目前 production code 還不支援這個情境,執行測試跑出的紅燈,就是等等 production code 要完成的 #目標」
test-frist 從來都只是 TDD 其中一個小小的衍生產物,而不是全貌。TDD, 測試驅動開發 從來都是一種開發方法,而不是測試方法。
總有些人老愛把 TDD 拿來跟測試相提並論,就總是喜歡把 test-first 當作靶子打,覺得違反人性跟直覺,覺得先寫測試在很多情況下是浪費時間或是不 work,可能拿來跟一堆測試的方法論相提並論,或總是只拿回歸測試的效益來當作 TDD 的整體。抑或是陷入 isolation unit test 與 integration test (其實就是非 isolation 等級、有實際依賴的自動測試)之爭。
```
註:TDD 事實上是可以不是單元測試等級的。
```
要比較正確看待 TDD 的角度,首先要知道它是幫助開發的、它是一種開發方式(當然不是唯一一種,甚至也不會是最好的一種,因為根本沒有最好,只有剛好)
接著要了解 TDD 可能用 IPO 模型還比較貼切,input-process-output,在你開發任何功能之前,你總要先想過這件事。而先想這件事,才是 TDD 的最基本精神。
接著是怎麼把你想好的東西,變成可執行的 spec,我們只是用測試程式來「描述」你腦袋中的「IPO模型」,把 process 的過程當作一個黑箱子。
而這個 IPO 模型在結合成「使用情境」,就會帶來「高易用性 API 的好處」,只有在一開始就先想好怎麼給別人用,最後才會好用。所謂的一開始想好,指的不是預先設計一堆 class,而是 input/output 想清楚期待(一般會結合實例化需求,搭配 Given/When/Then 的 gherkin style 來把前置條件、資料、前提想好,當發生什麼事,應該是怎樣的結果),然後描述它。在紅燈定義清楚目標,綠燈完成 input/output 關係且沒弄壞前面的所有情境後,來針對 process 進行重構(事實上 Kent Beck 的 TDD by Example 更多是用 refactor 來 #完成 process。
```
註:所謂的 output 不一定只有回傳值,包含外部依賴狀態、資料的改變,甚至顆粒度小一點,針對物件導向設計的話,物件內部狀態的改變也算,只是物件內部狀態改變,驗證點要嘛是拿得到內部狀態,要嘛就是要驗證物件哪個行為會因這個內部狀態而有所不同。
```
## 戰 TDD 之前該先做好的功課
要戰 TDD,是不是至少要把 Kent Beck 的 TDD by Example 看完?
要戰 TDD,請不要拿它跟測試方法論來比,那只是一下就被人看破手腳。因為它是個開發方法論。
要戰 TDD,請不要把它的好處只限縮在跟回歸測試、自動測試的比較,因為那只是它的衍生好處,當你試過在白海報紙上 TDD 就懂,TDD 是在釐清你的思緒的同時,又可以以終為始,確保你在 production code 的每一個動作都是為了滿足某個期待的情境。
要戰 TDD,請不要去把 單元測試、整合測試捲進來,那是測試的顆粒度,那是測試的分類,TDD 從來都不是只能限於單元測試。
要戰 TDD,請不要在那邊戰他是 bottom-up ,是直接從程式/class 的角度出發,事實上 TDD 既不是 bottom-up, 也不是 top-down, (書裡面就有講這件事咩),實務上的 TDD 結合倫敦派(GOOS)跟芝加哥派(Classic TDD),會更像 Outside-In 的進行方式,先定義好驗收情境,接著從最外部(也就是使用者看得到的部份)一路把依賴往另一邊的系統邊界推,直到推到系統以外的依賴資源(persistence 或 external API/service)
```
註: ATDD by Example 中 ATDD by Example, Kent Beck 寫的序最後的一段話。
Kent Beck:
「就像我曾說過的,TDD的一個缺點是,它可能會退化為一種用來滿足開發人員需求的編程技能。某些開發人員從更廣泛的角度來看待TDD,輕易在他們測試的不同抽象級別間跳躍。然而在ATDD中不存在歧義,這是一種加強與非編程人員溝通的技術。我們之間良好的協作關係,以及作為這種關係基礎的溝通,能夠使軟件開發更有效率。採用ATDD是向著溝通更清晰這個目標邁進的重要一步,而此書是一本全面又平易近人的入門讀物。」
```
要戰 TDD,請不要只關注在 test-frist,因為他只是用 test 來幫助你 think-first,不要邊寫邊想。然後不要過份依賴或相信你腦袋的能力,把你想好的東西具體化出來,最好可以被直接執行,最好除了你以外每個人執行出來的結果都會一樣(不管是對的,還是錯的)
要戰 TDD, 請不要把論點放在見樹不見林,如果你有看 TDD by Example 的 Part 1, Part 2 那兩個加起來共 24 個章節,就知道一開始就得把當下想到的全貌紀錄在一個「紙本」的 backlog (所謂的紙本,只是要講這並不依賴於任何工具)
而這個需求輪廓的全貌,會隨著你逐漸完成一部分一部分的情境,設計逐漸浮現後,而隨時跟著增減調整。
但不代表 TDD 就是先想到一個測試案例,就直接先幹下去了,那根本是亂搞。
以上這些,都還不是在列 TDD 的好處,而是針對那些從來沒搞懂 TDD 但又愛戰 TDD 的人一點提醒,你戰的很可能是「你誤解的 TDD」。
TDD 還有許多實務上的用途,列上我在譯者序中的一小段:
>> 測試驅動開發(Test-Driven Development, TDD)!一種以測試為開發輔助、以測試來描述需求情境、以測試來當作目標、以測試來表達期望、以測試來驗證疑問、以測試來實驗學習、以測試來溝通協作、以測試來協助設計高易用性 API 的「開發方法」。
譯者序有開放給大家看,請見:https://tdd.best/book/tdd-by-example/
拜託,要戰之前去看一下祖師爺 Kent Beck 對 TDD 的原始見解:https://www.tenlong.com.tw/products/9789864345618?list_name=srh
如果你想正確的使用 TDD 來幫助你在實務上產生許多的價值,帶來許多的好處,尤其是需求釐清、持續重構、小步快跑的部份,最好理解的培訓課就在這:https://tdd.best/courses/classic-tdd-by-example-video-training/
最後我想講一段話:
TDD 從來都不該被導入到團隊中,但它是一種很好的自我鍛鍊與學習的方式,也是一種能用很低的成本來帶來很多好處的開發方法(見下方註腳),然而它也不是適用所有的情況,但它可以讓『完美』變成一個動詞,而非不變的形容詞。
```
註:
Kent Beck 在 DHH 靠腰:《TDD is Dead》 之後寫的一篇反串文:《RIP TDD》
https://www.facebook.com/notes/1063422864115918/
我幾年前的簡易翻譯,通常也是 TDD 可以幫助你解決的問題,如下:
- Over-engineering (過度設計)
- API feedback (改善API的設計與可用性)
- Logic errors (想的跟寫的不一樣,寫的跟需求不一樣)
- Documentation (寫跟維護文件是痛苦的)
- Feeling overwhelmed (找不到切入點)
- Separate interface from implementation thinking (抽象設計)
- Agreement (確保已修正問題的證據)
- Anxiety (改東壞西的擔心受怕)
```
很久沒對 TDD 發表這種長篇大論了,因為不理解、不想理解、不同角度理解的人居多,能真的到各自的塔上用不同角度來看原義,以及實務上用它來幫助解決的問題有哪些的人,真的太少。
大部分人只想針對這個詞彙來攻訐以博得流量跟吸引目光,而不是想著「我可以用它來幫助我什麼」
問題跟需求是中性的,解決問題跟滿足需求的手段與方式有千萬種,不會只有一種,也不會有所謂的對錯,多點角度去了解不同的方法、方式,然後融會貫通,發揮綜效,在實務上用最少的成本與風險來產生最大的價值,這才是真正的目標。
導入敏捷不該是目標,導入 TDD 也不該是目標,目標永遠都是在實務上產生價值、解決問題、滿足需求。
單元測試整合測試 在 軟體開發學習資訊分享 Facebook 的最佳貼文
在現代軟體開發中,擁有適當的自動化測試覆蓋率被認為是最佳實踐。 在本課程中,你將學習如何使用非常流行的開源工具測試 Java 和 Spring Boot 應用程式。
在本課程的第一部分,您將看到,軟體測試生態系統是非常多樣化的。 JUnit 和 Mockito 是 Java 的兩個主要測試程式庫。 JUnit 提供測試執行 context,而 Mockito 提供模擬功能。 這些程式庫可以一起用來編寫單元測試、整合測試和功能測試。 您還將瞭解為什麼擁有適當的測試覆蓋率對於支援其它流行的敏捷實踐(如持續整合和持續部署(簡稱 CI / CD))至關重要。
全世界的敏捷團隊都認為測試驅動開發(TDD)是生產高品質軟體的關鍵技術。 本課程首先使用 JUnit 5 演示如何使用 TDD 建立一個簡單的 Java 應用程式,然後再次使用 TDD 將應用程式發展到更高的品質和功能水平。
接下來,本課程將深入介紹 JUnit 5的特性和功能。 你將學習如何為 Java Web 應用程式編寫 JUnit 5 單元測試。
https://softnshare.com/testing-spring-boot-beginner-to-guru/
單元測試整合測試 在 愛流浪的小風 Facebook 的最佳貼文
上次跟大家分享了縮短 Release 的價值,用實際的數字來讓大家感受一下,透過縮短 Release 週期所帶來的好處,希望大家也可以實際的試試看縮短 Release 週期,不過在談到要縮短 Release 週期的時候,聽到最多的困擾是,那實際上要怎麼做,才能夠讓 Release 這件事情可以快速並且頻繁的發生呢?
1. 適當的 Task 大小
通常在做任務拆分時,我會希望把 Task 大小控制在 1~3 天能完成的範圍(這就看個人,我個人喜歡至少這個粒度,不過越小越好),就算是一個大功能的局部功能也好,並且這個 Task 在做完之後就可以直接上線,是能跟完全相容現在的系統,在透過系統架構設計,例如 Config 或 Feature Flag 來控制功能是否開放給使用者。
(打完這一部分之後就發現有另外兩件事情可以和大家聊聊,關於任務拆分的處理和如何透過系統架構設計來持續上線程式碼 XD)
2. Code review
Code review 其實是團隊協作中很重要的一件事情,當然如果你們經常直接 Pair Programming 的話就可以省去這一段,我很喜歡 Code review 的一個原因,是因為這是一個討論程式碼實現的很好機會,通常你會有一些具體的例子可以來討論,並且也可以同步團隊成員對於整個系統架構的期望,所以除了確認程式碼是否正確之外,不要浪費這個機會和團隊成員們交流討論,這也是一個偷偷學習別人思路的好時機!另外透過 Code review ,還能確保大家對於整個系統的認知是有跟上進度的,像我們目前團隊就會確保至少有接近 50% 的成員 Approve 之後才能 Merge PR,讓大家在不能 Mob 時也能跟上大家所做的變更。
3. 持續整合、部署
除了人為的 Code review 之外,我通常還會相當依賴 CI Server 來幫我們做各種面向的檢查,從最基本的測試我們就有至少單元測試、整合測試、視覺 (Visual) 測試等等,還有團隊開發一定需要的 Linter 來確定程式碼風格一致,如果更進階一點就是可以做安全性掃描或是程式碼分析,如果做的是 Web 或 App 的開發還可以考慮做一些 Benchmark 來確保系統的執行速度符合預期,既然了解了持續快速部署才是產生價值的最大方式,我們就應該讓所有能自動的就自動化,才能讓人力專注在最需要的地方,剩下的就交給自動化工作來處理就好了
4. 監控
在聊持續部署、快速部署的時候,一個很常見的誤區是很多人以為上線後就結束了,我只要盡量的在 Merge 之前確保做好各種事情,然後想辦法讓 Pull Request 變綠燈,拿到足夠的 Approve,然後 Merge 進去我就馬上趕快開始新的工作。
但其實對於使用者來說, Merge 程式碼之後才算是真正的開始,因為他們才能夠開始使用你所部署的新功能,所以持續部署中最重要的事情是 ”上線之後”,有沒有足夠的監控機制可以知道你系統運作的情形,不只是有一些 CloudWatch 的 Monitor 或是 Centralised 的 Log 管理系統來幫助除錯,甚至你應該要建立一些 Client events 的 Tracking 或是 Funnel 來監控你的系統是不是可以被正常使用,如果有任何異常的時候能在客戶回報前就能發現,現在其實有很多的現成工具可以使用,有些還能夠直接設定自動警示,讓你在系統有流程中斷的時候被通知。
5. 異常排除
在有了足夠的監控系統之後,你有沒有足夠的手段來減輕這些異常對於客戶的影響,舉例來說,假如今天你結帳流程中本來有信用卡結帳跟超商付款,如果今天信用卡公司剛好故障,你能不能透過 Feature Toggle 或是 Config 來暫時關閉信用卡功能,讓使用者還是可以使用其他的方式結帳,這件事情你可以多快完成,它是否需要重新部署才能做到,都會是異常排除一個很重要的指標,當然今天這個例子是客戶端的異常排除,如果今天是 Cloud Service 發生問題時的異常排除也是一個很經點的例子,至少也要有跨 Region 的 BCP。
6. 成效追蹤
功能上線之後,你是否能夠知道這個功能對於客戶帶來多大的改善,對於系統有多少的優化,其實都是需要被 ”量化” 追蹤的,很多人都會誤以為用感覺來測量就足夠了,沒有實際的量化其實很難評估回顧一個新功能的規劃是否產生了正確的價值,還是其實一切都是感覺良好,例如你更新的購物流程的畫面,是否實際對整個流程的轉換率有所提升,還是只是單純的變好看但對業績沒有幫助,這些其實都是需要很赤裸的被量測,才能真正的作為疊代的依據,找出團隊目前的方向和規劃方式有沒有問題。
我覺得在敏捷開發中很容易被誤解的是,很多人以為只要用了對了方式(或是大家都在用的方式),就可以讓產品快速開發、上線並疊代,跟上那些新創獨角獸的腳步,卻忽略了這些其實都是軟體的技術基礎硬實力,通常大家只會跟你說他們使用某種方法帶來很多成效,但不會透露背後做了多少的基礎改善,所以要小心就算所有團隊成員心態正確,老闆觀念正確,沒有相對應的硬實力,敏捷也只是空談,當然,如果你想要改善軟體開發硬實力也不是不可能,我推薦最簡單直接的方式就是找 91 敏捷開發之路
你在做持續 Release 的時候也有遇到什麼樣心得或痛點嗎?歡迎你也分享一下你對這件事情的看法喔!粉絲團默默的快 1000 人了,我也開始打算來個每週固定更新,如果你覺得我的分享不錯的話,歡迎你也對我的粉絲團按讚喔!