一個項目進行到了QA階段, 要大規模測試程序與JMS(Sonic MQ)交互的性能.
經"上面"研究決定, 要用到傳說中性能測試很牛叉的JMeter. 由于我是TRG(Technical Research Group)
Jmeter小組的組長(其實也就是混事,沒什么事情寫個report吹噓一下研究結果,如此而已), 所以被臨時調過來充當QA.
不測不知道,一測嚇一跳,雖說JMeter的官方網站上鼓吹JMeter支持對于JMS的性能測試, 但我們發現根本不是那么回事,
消息能被發出也可以被接接收,但GUI上沒有絲毫數據顯示(包括發送接收時間,發送接收內容等信息), 沒有這些數據讓我怎么寫報告?
難不成讓我的項目經理過來,我拿秒表記錄每條信息發送和接收的時間? 開源的東西就是這點害人,遇到問題了,跟本沒人搭理你.
我跑到JMeter的bugzilla上去察看, 我k, 一堆bug post在上面,沒有一個有response的, 我趕快閃開了~~
和項目經理匯報了這個情況后,
他的指示是"不管怎么樣,JMeter作為測試工具是美國那邊指定的,不論采取什么辦法,一定得給我整出來!"
我點頭答應,但心里不斷嘀咕"我k,怎么整出來啊~" 幸好項目經理還比較有人性, 給我也配了個兩個"小弟"(準確的說是一男一女),
剛進來實習的所以比較聽話, 恩, 我喜歡.
我給他們的指示是"不管怎么樣,JMeter作為測試工具是美國那邊指定的,不論采取什么辦法,一定得給我整出來!" 他們紛紛點頭,
我心里那叫一爽. 花了三天的時間, 我們通讀了一遍JMeter(version 1.10) JMS 部分的代碼:
org.apache.jmeter.protocol.jms.
又經過兩天痛苦的煎熬,終于發現問題出現在邏輯層(PulisherSampler.java
SubsriberSampler.java)在向表現層(ResultSample.java)中set message時居然沒有指定數據的類型,
ResultSample得不到message的具體類型, 自然什么東西的顯示不出來. 一直拖到今天, 重新編譯了代碼, 重新運行,
結果正確的顯示到了GUI上, 我長出了一口氣, 問題終于解決了. 被我壓榨了若干天的兩個小弟, 更是長出了一口氣,
終于可以從我的魔爪中掙脫了~~~
問題解決當然免不了寫個報告, 邀一下功了, 記得在報告中我寫道:"We feel the strong
sense of freedom which open softwares bring with us."
這種freedom對于我們這些凡夫俗子從某種程度上講,實在是件遭罪的事.
但反過來想想,我感覺莫名的興奮,因為不知不覺間我為開源軟件做出了自己的一點微薄的貢獻,
可能就是千千萬萬的這樣的微薄的貢獻才成就了現在的開源軟件. 成也開源, 敗也開源. 把原代碼暴露在所有開發者的面前, 會造成兩種局面: 其一,
代碼被濫用, 軟件的質量越來越差; 其二, 所有關心開源軟件的程序員都貢獻出自己的力量,不斷提高軟件的質量.
使我欣喜的是,大多數程序員都是完美主義者,不約而同的選擇了后者, 在他們的眼中, "建設帶來的樂趣遠遠大于破壞".
嘮嘮叨叨了這么大一砣,回頭再看,真是不知所云~~~ 天一, 求求你, 不要刪我的貼
最后希望所有的程序員,都來支持開源軟件,雖然有時他很不成熟, 但正是這種不成熟才給了我們發揮自己創造力的機會. 畢竟"軟件就像性交, 不要錢的更好!"