l

2015年3月27日 星期五

測試案例壞味道(11):Manual Intervention

March 17 16:11~16:52

螢幕截圖 2015-03-18 16.49.03 

不可以喝啊…這時候就需要人工介入 XD。

 

Manual Intervention(人力介入)壞味道指的是測試案例每次執行都需要人工介入,這種測試案例也稱不上是(全)自動化測試。

xUnit Test Patterns: Refactoring Test Code》書中提到導致這個壞味道的情況有:

  • Manual Fixture Setup:測試環境需要人力手動建置,例如修改網路設定或在資料庫中塞入測試資料。 每次執行測試案例之前這些測試環境都需要重新設置一次。
  • Manual Result Verification:測試案例執行結果需要人工驗證,例如需要觀看console所輸出的數值。
  • Manual Event Injection:在測試案例執行的過程中需要人力介入執行特定的工作,例如按下按鈕、插入或拔出USB裝置、打開或關閉外部裝置電源等。

***

不能夠自動重複執行的測試案例需要人工介入,因此regression test的成本就會很高。開發團隊通常不會頻繁地執行這些測試案例,也會增加除錯時間。當你的測試案例需要人工介入才可以正常執行時,請想辦法將其自動化,移除人力介入的工作。

***

友藏內心獨白:Test Double可以減少人力介入的程度。

2015年3月26日 星期四

測試案例壞味道(10):Frequent Debugging

March 17 15:30~16:00

image

 

如果大部分測試案例需要人工介入來判斷執行失敗的原因,則這些測試案例就有Frequent Debugging這個壞味道

xUnit Test Patterns: Refactoring Test Code》書中提到導致這個壞味道的情況主要是因為缺少Defect Localization(缺陷定位)

  • 沒有詳細的單元測試來指出物件內部的邏輯錯誤,也就是說單元測試涵蓋率不足。
  • 整合測試沒有抓出一組物件之間的互動缺陷。這種情況有可能在我們使用mock object來取代真實的相依物件,但是這些被取代的相依物件的單元測試並沒有依據mock object所期待的行為來做驗證。

***

有些團隊的開發人員並不需要撰寫單元測試,測試的工作是交由QA團隊來完成。雖然QA團隊有能力撰寫自動化功能測試,而這些自動化功能測試的確也會抓到一些bug。但是由於功能測試的粒度很大,抓到bug之後開發人員還是需要花費不少時間來除錯,這也是一種造成Frequent Debugging的情境

最後,如果測試案例很少執行,也容易造成Frequent Debugging。為什麼?因為開發人員對於久久才執行一次的測試案例已經很陌生了,當測試案例失敗時,自然需要花費比較長的時間來釐清原因。

***

友藏內心獨白:好的測試案例要能夠協助開發人員減少除錯時間。

2015年3月25日 星期三

【工商服務】四月份Design Patterns這樣學就會了:進階實作班

March 24 11:30~12:09

螢幕截圖 2015-03-24 12.09.32

 

上周末剛上完「Design Patterns這樣學就會了:入門實作班」,今天又要來幫「進階實作班」打廣告。上課日期是4月18、19、26日(星期六、日、日),課程報名網址請按我

在進階班中,首先幫學員快速複習在入門班所提到的物件導向基礎原則:

  • Class, Object, Instance
  • Interface
  • Inheritance
  • Polymorphism
  • Composition
  • Delegation
  • 模組化
  • 減少耦合,增加內聚
  • 尋找hot spot
  • 生物多樣性原則
  • Programming to an Interface, not an Implementation (GoF)
  • Favor object composition over class inheritance (GoF)

以及模式(pattern)的定義。

螢幕截圖 2015-03-24 11.58.15


接著從程序導向程式(POP)與物件導向程式(OOP)的角度來分析GoF設計模式的設計思考邏輯。

螢幕截圖 2015-03-24 12.01.01

 

接著聽Teddy介紹SOLID這五個物件導向設計原則。

螢幕截圖 2015-03-24 12.02.13

***

將物件導向觀念重新加強一次之後,接下來的課程內容就逐一介紹GoF書中剩下來的12個設計模式,包含Builder、Mediator、Bridge、Memento、Proxy、Prototype、Decorator、Chain of Responsibility、Flyweight、Iterator、Visitor、Interpreter。

上完進階班課程,不但把GoF書中的23個設計模式全部學完,對於物件導向觀念與分析問題的能力也往上提升一個檔次。

***

課程報名網頁再貼一次 http://teddysoft.tw/courses/design-patterns-2/

***

友藏內心獨白:快來收集剩下的12個設計模式。

2015年3月24日 星期二

認養Eiffel兩個月(上):住處

March 23 16:38~17:52

認養Eiffel至今已經兩個月了,認養過程請參考〈玩貓喪志(上)〉、〈玩貓喪志(中)〉、〈玩貓喪志(下)〉。這系列文章記錄一下Eiffel這兩個月以來的一些行為變化,今天先談一下牠睡覺地點的演變狀況。

***

海報區

Eiffel一開始都待在Teddy家中的和室,最常睡覺的地方是電風扇和一張海報紙所圍起來的空間。這個空間是牠自創的,原本海報與牆壁伏貼,牠硬是擠到海報紙和牆的中間,製造出一個可供牠容身的空間。這個空間有前後出入口,又有「屋頂」,牠可能覺得這樣比較有安全感。

螢幕截圖 2015-03-23 16.57.23

 

鋪了毯子的海報區,Eiffel結紮之後特別布置讓牠休息的地方。

螢幕截圖 2015-03-23 17.02.29

***

外出籠

除了海報區,在和室裡面Eiffel另一個最喜歡睡覺的地方是外出籠。這是當初為了認養Eiffel所購買的籠子,有一陣子Eiffel經常待在裡面。但是自從把牠裝在外出籠帶牠去看醫生之後,Eiffel就很少主動進到外出籠。現在找要把牠放入外出籠,Eiffel就知道沒什麼好事,八成又要看醫生了,會在籠子裡面一直叫。

螢幕截圖 2015-03-23 17.09.57

 

螢幕截圖 2015-03-23 17.05.06螢幕截圖 2015-03-23 17.08.05螢幕截圖 2015-03-23 17.08.44

***

餐桌下的椅子

忘了從何時開始,大約是認養Eiffel一個月之後,牠開始自己學會打開和室的門,跑到外面來玩。在這之前也有讓牠自由到外面活動,但是牠總是出來一下下就緊張兮兮的快速跑回和室。可能是慢慢習慣環境,後來牠反倒不喜歡回和室睡覺。離開和室之後,牠選擇睡在餐桌下的椅子。

雖然Eiffel跨出離開和室的第一步,不過在這個階段牠還是只敢睡在「有屋頂」的地方。自從牠離開和室之後,也把牠的食物和飲水一起搬到客廳的餐桌旁邊,離牠睡覺近一點的地方讓牠吃飯。

螢幕截圖 2015-03-23 17.18.34螢幕截圖 2015-03-23 17.19.30螢幕截圖 2015-03-23 17.19.56

***

客廳的一人座沙發

Eiffel在餐桌下的椅子睡了一段時間之後,看上了客廳的一張一人座沙發。沙發上面原本就有一張毯子和一個抱枕,牠睡在上面看起來非常舒服的樣子。

到這個階段,牠終於敢睡在「沒有屋頂」的地方了,代表牠對於新環境已經很放心。

螢幕截圖 2015-03-23 17.33.19螢幕截圖 2015-03-23 17.29.59螢幕截圖 2015-03-23 17.30.21

***

書房的椅子和電腦

之前Eiffel只敢在沒人的時候偷偷過來書房探險,現在則是經常會跟著Kay或Teddy跑來書房,到處張望之後,會選擇在筆電上小睡片刻。如果Kay或Teddy不在,有時候也會睡在椅子上面。

 

Eiffel睡在Kay的椅子上。

螢幕截圖 2015-03-23 17.40.37螢幕截圖 2015-03-23 17.41.38螢幕截圖 2015-03-23 17.41.49

 

Eiffel睡在Teddy的筆電上。

螢幕截圖 2015-03-23 17.43.40螢幕截圖 2015-03-23 17.43.50螢幕截圖 2015-03-23 17.44.11

***

目前還沒開放Eiffel到臥室探險,一來怕牠以後早上五點就叫Kay或Teddy起床幫牠準備早餐,二來也怕牠不小心亂尿尿。Eiffel現在已經有點「黏TT」的傾向,喜歡當跟屁蟲觀察主人在做什麼。兩個月能夠適應到現在的情況,也算是進度不錯了。

***

友藏內心獨白:什麼時候會睡在大腿上勒。

2015年3月23日 星期一

你願意花更多時間和這個團隊一起工作嗎?

March 18 20:40~21:30

螢幕截圖 2015-03-18 21.22.32

Eiffel:你願意花更多時間跟我一起玩嗎?

Teddy:我願意 XD。


剛創立泰迪軟體的哪一年,有一次和一位認識多年的朋友聊起Scrum。朋友覺得Scrum沒什麼特別,因為當初他創業的時候,核心團隊成員的工作模式,就和Scrum一樣。整個公司上上下下就是一個自我管理團隊,大家快速回應客戶需求,得到回饋之後快速修正。

聽了朋友的描述,Teddy當下心中頗不以為然。你根本不了解Scrum啊,就在那裏大放厥詞。幾年過去了,現在回想起來,Teddy反倒是有點贊同朋友的說法。

一件事情的成功,不必然和方法有絕對的關係。如同模式(pattern)的定義:

A pattern is a proven solution to a recurring problem in a specific context.

 

不管這個「成功模式」是什麼,叫Scrum也好,叫「血汗工廠」也罷,總是在一個特定情境(a specific context),針對一再重複出現的問題(recurring problem)所提出行之有效的解決方案(proven solution)。朋友覺得Scrum的若干做法,具有他當時創業精神的若干特質(quality),所以他覺得Scrum沒什麼特別。從某個角度來看,的確如此。只要團隊成員持續學習、改善,不怕失敗,能夠從失敗中學習,具有這類quality,比宣稱自己在做Agile或Scrum,還要來的重要。

***

Alexander提出的觀念:Quality Without A Name(請參考〈這就是無名特質〉),只要用心體會、認真生活,當一個環境、建築物、社群、團隊或軟體系統,具備或缺乏好的特質,人都有能力能夠發現。在導入Scrum的時候,一開始團隊會先學著doing Scrum,把Scrum要求的角色、活動、產出物逐一「生出來」(「守」的階段)。依據團隊組成不同與專案特性,這段「守」的期間至少需要半年到一年。在與Scrum框架變成好朋友之後,慢慢有能力可以依據不同的狀況,來調整Scrum。例如,Daily Scrum一定每天都開嗎?Sprint Backlog Item一定不能異動嗎?是否一定要估算?PO、ScrumMaster、Team之前的溝通模式一定要那麼制式嗎?能不能在Taskboard上面加一個緊急通道呢?(「破」的階段)。

最後,鄉民們可能會發現,一開始Scrum是一頂好的「帽子」。但如果死守這頂「帽子」,最終它可能成為「頸箍咒」,反倒限制了團隊採用其他工具的彈性。也許這時候就是「離」的時機。

***

看到這裡鄉民們可能會問:「什麼是好的軟體開發團隊的quality呢?」這個問題可以用一個很簡單的問句來判斷:

你願意花更多時間和這個團隊一起工作嗎?

答案越肯定,這個團隊就具有更多好的quality。

***

友藏內心獨白:還是太抽象…Orz。

2015年3月22日 星期日

2014北海道考察之旅Day9-D藻岩山看夜景(上)

Feb. 21 22:25~23:10
離開北海道大學之後,搭地面電車前往藻岩山看夜景。沒想到搭地面電車的人還不少,幸好在起站搭車,坐到最後幾剩下的幾個位置。

螢幕截圖 2015-02-21 22.26.01螢幕截圖 2015-02-21 22.26.09螢幕截圖 2015-02-21 22.26.22螢幕截圖 2015-02-21 22.26.40螢幕截圖 2015-02-21 22.26.52螢幕截圖 2015-02-21 22.37.06

 

下車後還要轉搭公車,走一小段到纜車站。下了公車之後在站牌看到因為風大覽車暫時停駛的公告,這…好不容易來到這裡,不要停駛啊。

螢幕截圖 2015-02-21 22.27.29螢幕截圖 2015-02-21 22.27.39螢幕截圖 2015-02-21 22.27.58螢幕截圖 2015-02-21 22.37.59螢幕截圖 2015-02-21 22.28.08螢幕截圖 2015-02-21 22.28.28

 

纜車有兩段,要先從海拔80公尺的山麓驛,搭纜車到海拔456公尺中腹驛,再轉搭地面纜車到海拔531公尺的山頂驛

螢幕截圖 2015-02-21 22.40.45

 

幸好等了大約20分鐘,纜車終於重新開放。買了纜車票準備排隊準備上山。

螢幕截圖 2015-02-21 22.39.50螢幕截圖 2015-02-21 22.42.31螢幕截圖 2015-02-21 22.42.47螢幕截圖 2015-02-21 22.43.08螢幕截圖 2015-02-21 23.41.39螢幕截圖 2015-02-21 22.43.16

 

纜車也有吉祥物啊,算是這裡的亮點之一。

螢幕截圖 2015-02-21 22.42.18

***

友藏內心獨白:還好沒槓龜。

2015年3月21日 星期六

2014北海道考察之旅Day9-C北海道大學(下)

Feb. 21 18:00~18:18

逛到射箭場,正好有學生在練習射箭。繼續往前走來到「人工雪誕生地」,根據資料人工雪是北海道大學教授所發明的。

螢幕截圖 2015-02-21 17.59.55螢幕截圖 2015-02-21 18.00.12螢幕截圖 2015-02-21 18.00.20螢幕截圖 2015-02-21 18.00.37螢幕截圖 2015-02-21 18.01.24螢幕截圖 2015-02-21 18.01.39螢幕截圖 2015-02-21 18.01.49螢幕截圖 2015-02-21 18.12.24螢幕截圖 2015-02-21 18.02.07

 

校園中有一個小小的博物館,展示北海道挖掘出來的古生物化石,可以快速逛一下。

螢幕截圖 2015-02-21 18.02.29螢幕截圖 2015-02-21 18.02.39螢幕截圖 2015-02-21 18.02.46螢幕截圖 2015-02-21 18.02.59螢幕截圖 2015-02-21 18.04.34螢幕截圖 2015-02-21 18.16.34

 

校園雖美,腳也痠了。

螢幕截圖 2015-02-21 18.04.11螢幕截圖 2015-02-21 18.04.55螢幕截圖 2015-02-21 18.05.07螢幕截圖 2015-02-21 18.05.20螢幕截圖 2015-02-21 18.05.36螢幕截圖 2015-02-21 18.05.44螢幕截圖 2015-02-21 18.05.52螢幕截圖 2015-02-21 18.06.11螢幕截圖 2015-02-21 18.06.26

***

友藏內心獨白:鬧中取靜的景點。