2008年06月5日

開發自動化文章參考

Tags: agile_method

前幾天在 developerWorks 看到一篇關於負載測試的新文章,《让开发自动化: 自动负载测试 - 使用 Apache Ant 和 Apache JMeter 频繁进行负载测试》。它提醒了我一件事:負載測試也有自動化工具。我以往很少在這一方面下功夫。大部份時候,我都是針對特定情況,自行撰寫特定的負載測試工具,而且不是很好用...

我目前尚未引入 JMeter 到日常工作之中,暫時先在此做過標註。不過有一點可以先說,JMeter 是針對應用軟體的成品或者整個運作環境進行負載測試,跟你的應用軟體開發工具無關。所以並不侷限於 Java 開發的專案才能用 JMeter 。使用 PHP 或其他工具開發的案子也能用。

附帶一提,developerWorks 專欄作者 Paul Duvall 所撰寫的《让开发自动化》專欄,皆有相當高的實務價值,值得一讀。


Posted by shirock at 樂多Roodo!17:11回應(0)引用(0)

2008年05月15日

利用 NullObject 改善程式可讀性,No more if, no more try

Tags: php5 refactoring nullobject

剛在重構一組類別的程式碼時,突然想到 Martin 在《敏捷軟體開發原則、樣式與實務》一書中提到的一個編程技巧,就是在失敗狀況時回傳 NullObject ,避免行為調用者用 iftry 處理失敗狀況,影響程式可讀性。

我重構中的類別程式碼,基本上是一個聚合類別,它包含了其他類別的個體。此聚合類別提供一個方法 get() ,以取得它所包含的個體。外部調用 get() 後取得內容個體後,立即呼叫該個體的一個方法。

...繼續閱讀

Posted by shirock at 樂多Roodo!16:27回應(1)引用(0)

2008年05月7日

請在「持續整合」的原則下利用版本控制工具的合併功能

Tags: svn subversion cvs version_control agile_method

前一陣子在工作場所碰到一件事,我的同事抱怨 SVN 不能幫他合併他修改過的分支內容。我覺得很奇怪,因為我並沒有碰過這種情形。一開始我以為他是不熟悉 TortoiseSVN 工具,後來我實際看了他操作後,看到他竟然一次要合併近百份源碼檔,當場無言以對。

我記得我曾說過 SVN 可以幫我們程序員自動合併分支的源碼內容,並在衝突時提示我們。然而,在碰到同事這件例子後,我發覺我忘了加一個但書: 「請在持續整合(Continuous Integration)的原則下利用合併功能」。否則再好的版本控制工具也無法幫你合併。

...繼續閱讀

Posted by shirock at 樂多Roodo!18:33回應(3)引用(0)

2008年04月21日

A patch of isEditable of Selenium Core 0.83

Tags: selenium web_dev

日前配合 Selenium 撰寫一個 Web 應用軟體的測試案例,案例中有一句斷言要判定指定的表單輸入欄位是唯讀的 (readonly)。我個人很直覺地使用了 assetrNotEditable,但測試結果卻是錯的。後來我又試了 assertEditableassertAttributeassertNotAttribute 等寫法。始終無法正確而一致地判定輸入欄位的唯讀屬性 (readonly)。

依據參考文件 (Selenium IDE Reference) ,assertEditable/assertNotEditable 的說明,這兩種斷言都是調用 isEditable() 判斷。於是我開啟 selemium-api.js 後搜尋 isEditable ,找出它的源碼內容。結果發現它只判斷輸入控制元件 (input element) 的 disabled 屬性,而未判斷 readonly 屬性。

...繼續閱讀

Posted by shirock at 樂多Roodo!14:20回應(0)引用(0)

2008年03月18日

Making Document: Make a Database Schema SQL from StarUML's Class Diagrams

Tags: agile_method uml database

日前我在公司和同事討論一個案子的 database schema,PM初期丟下來的 database schema 是寫在 Excel .xls 檔中。我拿到手後看了一會,覺得有些怪怪的,好像有些重覆。自然要討論內容。不過,用 Excel .xls 實在不方便討論,不時地切換試算表頁,常常中斷思考與討論節奏。所以,我乾脆打開 StarUML,建立一個類別圖 (Class diagram),把 database schema 畫了出來。在類別圖中清楚地呈現了表格與關聯性。一畫之下果然討論起來就順暢多了,也重新修正了不少地方。那接下來呢?再打開程式碼編輯器,把剛剛畫出來的 database schema 類別圖的內容,重新用 SQL 語法編寫一次嗎?

喔,不,老兄,那樣太不專業了。我們可是專業的資訊人員,重複輸入同樣的資訊,不是我們該做的事。身為專業資訊人員,就應該重複利用輸入過的資訊才對。不然我們做什麼資訊管理,搞什麼資料庫?

...繼續閱讀

Posted by shirock at 樂多Roodo!16:39回應(2)引用(0)

2008年03月13日

REST and RESTfull web service

Tags: rest ajax

過去,我提到 REST 這個字眼時,多半指的是一種常用的 Web-based 應用軟體設計慣例或樣式 (我個人偏好用"慣例"一詞,不過用"樣式/pattern"好像比較專業)。既然是慣例,那在設計和使用上就比較隨興。不過隨著 REST 樣式的大量應用,有愈來愈多案例開始使用更制式化的設計樣式,這些高度制式化的 REST 服務,就稱之為 "RESTful web service"。 "-ful" 這個字尾正是在強調它們的設計方式完全符合 REST 文獻的建議內容。

相對於 RESTful ,以往那種基於慣例與相容性的實作方式,有人就稱為 RPC 。不過說到 RPC ,我第一時間想到的是 Unix 系統的 RPC (Remote Procedure Call),而且它的歷史更為悠久。為了避免混淆,所以我傾向於用 "REST-like" 這個稱呼。

...繼續閱讀

Posted by shirock at 樂多Roodo!15:55回應(0)引用(0)

2008年03月6日

Regex::look-ahead assertion

Tags: regex regexp

有一字串,其格式為以逗號 (,) 分隔的記錄,例如 "a","b","c"。當某些欄位之值為空白時,會有逗號相連的情形,例如 "a",,"c"

現在要用字樣規則式(Regular Expression, Regex)修改空白欄位的表達方式,改成一個空字串 (""),一般我們會寫成 s/,,/,"",/g (by Perl)。不過這種寫法碰到連續多個空白欄位時,例如 "a",,,"c",會變成 "a","",,"c",得不到我們要的結果。因為 Regex 解析器在找到第一組 ,, 後,會把處理指標放在第3個逗號的位置上。當 Regex 解析器進行下一個比對動作時,它將從第3個逗號開始尋找,此時它看到的只有一個逗號,故判定不符合樣式,也就不會進行替換動作。

碰到這種情形,我們要用 look-ahead assertion (前瞻斷言) 處理。 Look-ahead assertion 的語法為 (?=pattern)。See also perlre::Look-Around Assertions

...繼續閱讀

Posted by shirock at 樂多Roodo!10:25回應(0)引用(0)

2008年03月3日

以 Apache proxy 與 rewrite modules 解決 Selenium Core 的運行限制

Tags: unit_test selenium

在 Web 應用系統的開發工具中, Selenium Core 是一套相當著名的測試工具。它的特點是 "直接在真實的瀏覽器中測試各項動作" 。由於現行各家瀏覽器的實作狀況各有所異,所以這項特點可以真實反應 Web 應用系統對各家瀏覽器的相容性。也正由於它是直接在真實的瀏覽器上進行測試,所以它也不可避免地受瀏覽器的功能限制,其中最主要的限制就是 "Same origin policy"(相同來源政策)。

凡是 Ajax 的開發人員,對於 "Same origin policy" 一定不陌生。這是瀏覽器保護使用者資料的重要安全措施。而 Selenium Core 是一套以 JavaScript 實作的測試工具,所以也受 Same origin policy 限制。這就使得開發人員在使用 Selenium Core 測試 Web 應用系統時,必須要把 Selenium Core 安裝在 Web 應用系統的目錄之下,以符合瀏覽器的相同來源政策。如果 Selenium Core 和 Web 應用系統的來源不相同,瀏覽器就會回應 Selenium Core 沒有權限載入 Web 應用系統的頁面。如此一來也就無法進行測試工作了。

...繼續閱讀

Posted by shirock at 樂多Roodo!15:07回應(0)引用(0)

2008年02月26日

IBM Jazz 專案開放申請使用

Tags: jazz cmmi agile_method

今天看 iThome 的報導,知道 Jazz 開放申請使用。我也是這時才知道, Jazz 原來是一個軟體協作平台。

去年10月底,我參加 2007 IBM開發者大會時,雖然知道大會主題是 "Jazz" ,不過一直以為那是一個形容詞。在當天的議程中,完全沒有看到所謂 "Jazz" 軟體的影子,那天談的是 Web 2.0 和 SOA 。今天才知道原來那還是一個軟體協作平台。IBM 的宣傳也差了點吧...

...繼續閱讀

Posted by shirock at 樂多Roodo!17:14回應(0)引用(0)

2008年01月25日

How do you write template? XSLT, PHP or RoR?

Tags: xml xslt template php ror web_design

Using XSLT, PHP, or Ruby on Rails to transform XML documents into XHTML documents. 展示 XSLT, PHP 與 Ruby on Rails 的樣版撰寫風格。

在使用樣版引擎之前,我們需要先將資料自外觀中分離,因此 A Note of HTML Form and XForm 算是本文的前置文章。當我們將資料和外觀分離時,我們將更進一步考慮如何將外觀樣版化。

...繼續閱讀

Posted by shirock at 樂多Roodo!16:29回應(2)引用(0)
 [1]  [2]  [3]  [4]  [5]  [6]  [最終頁]