網站工程 (Web Engineering) 與單元測試

最近在做網站。網站內容是有點像 facebook 的一些功能。

因為近年來學過單元測試的技巧,最近嘗試將單元測試加進網站製作的手續中,於是覺得很踏實:寫過多少程式,就跟著寫過並且執行過多少測試程式。

我的網站環境是 Erlang 與 Nitrogen ,資料庫為 postgres 。

且說說我的心得如下:

網站運作的技術,從內到外的層次有:中文即 UTF-8 編碼處理、迴避符號或稱逃逸字元(Escape Sequence )、 SQL 格式、資料庫連線、資料表操作、複合流程與邏輯、表單處理、網頁。依照上述所劃分的八種模組來寫程式,每一種模組幾乎都可以寫單元測試程式。

  • 處理 Erlang 的中文編碼:首先記得原則是文字的內部資料格式都是一串整數。 中文的資料內容,大部份的整數都達到萬位數,需使用 unicode 模組處理。 ASCII 的資料內容則是小於 256 的數字。
  • 迴避符號或稱逃逸字元(Escape Sequence ): SQL 內的字串內容須迴避單引號等等一些符號,而同時須迴避 Erlang 的雙引號、註解符號與非顯示符號等等。此段程式內容是將原始版本的符號,轉換為迴避版本的符號。
  • SQL 格式:常用的格式大概是 “insert into ? (?) select ? where ? returning ID;" 、 “update ? set ? where ? returning ID;" 、 “select ? from ? where ?;" 等等。此段程式做一些問號帶入參數的文字處理即可。
  • 資料庫連線:確認可以連線,並執行一段 SQL 並傳回適當的結果。
  • 資料表操作:此模組幾乎可以省略。而若需要,則可以定義特定資料表需要以什麼 SQL 格式搭配資料庫連線,而傳回什麼結果。
  • 複合流程與邏輯:凡二行以上的 SQL 執行,會牽涉到執行順序與執行成功或執行失敗等狀態。此段的責任是將二行以上的 SQL 整合為更明白表達的單元。
  • 表單處理:內涵為輸入一列欄位之後,獲得一列欄位的輸出。用 Erlang 的 proplists ,即俗稱的 dictionary 或 key-value ,來定義表單欄位,則很容易寫單元測試程式。
  • 網頁:主要包含網頁元素與互動。 Nitrogen 的網站架構已經將用戶端的 JavaScript 整理到 jQuery 模組了,因此很容易配置網頁元素的互動。
廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Web Programming 並標籤為 , 。將永久鏈結加入書籤。