2013年10月11日 星期五

介紹:Multi-Mechanize (Performance Test Framework)

最近恰好需要為正在開發的系統進行壓力測試
還記得上一次做壓力測試已經是一年半多以前了 …
出來打混近兩年的創業經驗告訴我
要遇到 scalability 的問題也不是一件很容易的事情(默)






Multi-Mechanize (簡稱 MM) 是 VU-based 的壓力測試軟體
之所以選擇使用他是因為:
  • MM 支援報表輸出
  • VU-based (Virtual User)的模式,能夠依照需求一定程度的模擬使用者的行為
  • 是 Python Solution,且撰寫時可以直接「參考」之前寫過的 functional testing 程式碼

不多說,不講解,直接附上參考資料:


比較入門的投影片:






進階的投影片,且提到其他壓力測試的東西:





MM 因為使用 matplotlib (相依 numpy …) 來繪圖
所以安裝時間沒意外應該會比看完他全部的文件還要長 … Orz


MM 使用上的特點有:
  • 用 multimech-newproject 建立專案; 用 multimech-run 執行壓力測試
  • 執行壓力測試時,如果強行使用 control-c/d 中斷,並不會完全停止測試(因為有使用到 multiprocessing)
  • mechanize.Browser 可以協助建立一瀏覽器物件,該物件有對 html form 進行操作的相關方法,亦支援 cookies 操作
  • 不使用 mechanize.Browser 也無所謂,urllib2, httplib, httplib2, requests … 皆可使用
  • 使用 Transaction 此 class 撰寫測試,如果比較喜歡在一個 transaction 內進行比較多測試,可以參考 Python Web 性能和压力测试 multi-mechanize 一文
  • 設定檔內如果設定 threads = 50 ,即表示同時(先不管 python 實作的真實情況 XD)使用 50 個 VUs 來進行壓力測試,每個 VU 的行為都是「發送 -> 等回覆 -> 收到 -> 再發」的 loop 行為
  • 測試結果會在 results 資料夾內建立新資料夾,含 csv, 圖檔, html … ,且支援直接將測試結果存到 DB 內(未實驗過)


個人小結論是,MM 沒有特別好用,但是也沒什麼不好的地方!


值得一提的是,其 VU 的概念
讓我這種之前用 ab 的業餘人士,花了一點時間才能夠理解過來

VU 的目的該是模擬同時有多少使用者,以此前提進行測試
而 ab 則單純依據參數產生固定的流量,以對伺服器進行測試

大體上,我認為 ab 是看八卦用的指標,畢竟很少有人上線的服務是回傳 hello world
自己家的機器,還是要真的去跑自己家真實的服務,測起來才會準確點 : )

2013年10月1日 星期二

活動:Tainan.py x MOSUT 2013 9 月聚會

由於學校已開學,擔心聚會的參與人數塞爆 Isrlab
所以這次活動便選在成大資工舉辦(人數約 3x 人)
photo by CCC @ Tainan.py

開場後我丟了一個很小的分享
因為是臨時擠出來的,內容頗不全面 Orz

會後有朋友在聚會的 meetup 頁面 發問相關問題
我有推薦前一陣子在 pythontw (FB) 看到的 ghost.py 與 selenium 供參考






這次聚會邀請到了「貴公司」的 Kilik 來一次給兩個小講題
第一個講題使人受益匪淺,第二個講題則是相當有趣

這次聚會看到常在 Taipei.py 分享 Python 原始碼相關演講的果凍出現
感覺是衝著第一個講題過來的(後來發現其實只是週末回家路過)

備註:Isrlab 的 kuku 在閃電秀時有對第一個講題做補充,非常值得一看





第二位講者是 Wen,講題「使用Linux/C組裝軟體的心得」看似是入門講題
可是演講的密度高而內容有趣,完全不只是給 Linux 新手看的,推薦一看!





這次活動中場休息時間,我們訂的飲料來自波哥 XD




第三位講者是 Nylon,分享了暑假在 RoBoard Lab 實習的經驗
樂於見到現在的學弟妹能夠利用暑假的時候去做「有意義的事情」並且願意分享出來
而演講中,台下亦有前輩補充資訊






閃電秀/工商服務時間時的講題如下:


Descent 用很短的時間證明了 git 其實沒有表面上看起來這麼簡單
(其實我也不太會用 git ... Orz)




jserv 介紹了這學期在成大開的課程(熱血啊!)





另外,Kuku 介紹了 Zatopyjs  
對於有寫 Web 的朋友,前者務必一看,非常有幫助(儘管不一定有機會用到 XD) 







最後的最後,以開發 App/Web 為主的敝公司(利昇科技)
有計劃徵 Android 實習生/工讀生
有興趣請內恰: joe@lirise.com



這次的聚會感謝 MOSUT 社群的朋友們幫忙出主意跟向成大資工借教室
錄影機是由「創業抬槓」的朋友帶來,借我們使用
演講過程中,感謝果凍幫忙錄影
最後,感謝老闆幫忙訂飲料(是的,那個幫大家訂飲料的人是我老闆)