CSDN博客不再經常更新,更多優質文章請來 粉絲聯盟網 FansUnion.cn! (FansUnion)
代碼
下載地址:http://download.csdn.net/detail/fansunion/5018357(免積分)
???
代碼亮點:可讀性很好,注釋詳盡
背景
?????? 工作中,在維護一個項目。幾個月前開始了 后臺Java網站的重構。
??
重構的過程 需要不斷去 運行網站,然后不斷去測試。其中,最常見的
問題是 服務器內部錯誤 即 500錯誤。只要不出現500,一般來說,程序的業務不會出錯。
????? 此外,期間還要不斷地去 完成新的功能,修復出現的Bug,而后臺Java網站具體開發人員幾乎就我一個。
無限制的測試工作,重復且無聊。是可忍,孰不可忍?
目標
??
????? ?寫一個 自動化測試的程序。自動發送相關請求到網站,把請求的結果和執行時間等信息,作為報表展現出來。
?通過報表就可以發現,服務器內部錯誤(500),頁面未找到錯誤(404),哪些請求相對比較耗時。
???
?????? 重復的事情自動化,減輕工作“壓力”,提高工作效率。
???
流程
???? ?1.把項目中需要訪問的URL 記錄在配置文件中。
????? 2.讀取配置文件。
????? 3.訪問每個URL。
????? 4.生成報表并查看測試結果。
設計
??
?? 1.配置文件的設計
????? conf文件下是所有的配置信息。
????? 每一個文件夾代表一個獨立的網站,比如conf目錄下 有 user和fans2個文件夾,就代表有2個網站需要分別訪問測試。
?
???? ?一個網站的配置信息,分為 website_core.properties和 website_url_*.properties。
??
?website_url_*.properties專門放置一個模塊的url。
??
?? 2.讀取配置文件
???? 自定義一個 配置文件讀取器,讀取并解析配置信息。
??
?? 3.發送請求并保存結果
???? 使用Apache HttpClient執行請求,然后保存每個請求的執行結果到 集合中。
??
?? 4.生成報表?
???? ApachePOI 生成Excel2007(.xlsx)報表,每個sheet對應一個網站或者子系統。
實現
?? 語言:Java
?? 工具:Apache HttpClient,Apache POI
截圖
??? 項目結構??
?
??
遇到的問題
1. 200 OK 不一定就 請求成功。
?? 服務器內部對每個請求都進行了Session檢查,未登錄或登錄失敗或未保持會話,都會跳轉到“登錄頁面”,此時也是200 OK。
?
?? 因此,需要 先登錄,并保存當前會話。
2. 保持會話的方法。
?? 登錄成功后,獲取Cookie信息,之后的請求每次都帶上Cookie。
?
3. 根據執行的操作,一個鏈接可以分為2大類:
?? 查詢與非查詢(增加-刪除-修改)。
??
?? 查詢請求大多有默認參數,大多可以不帶參數,而非查詢請求一般需要帶參數。
??
?? 因此,非查詢請求并不能很好地進行測試。
????
V1.0不足與V1.1改進
1.需要手動配置 URL。當URL過多時,顯得比較麻煩。
? 改進:可以合并類似的或者有規律的URL。
2.不能很好地支持帶參數的請求。
? 改進:可以將請求參數和URL分開配置,一個URL對應多個參數配置。
?
3.請求方法使用POST方法。
? 改進:增加請求方法的配置。
4.單線程順序執行每個請求,效率不夠高。
? 開發過程中,可能需要盡快地執行請求,看到報表。
?
? 改進:增加配置,實現2種模式。
? 第1種,盡快執行,適合開發過程中。
? 第2種,按照一定的周期執行,適合診斷和發現線上的問題。
?
5.報表信息不夠詳盡,還存在不準確的地方。
? 改進:增加字段,改進不準確的地方。
??????? 增加統計功能。
6.會話的保持。一個網站只有1個賬號登錄,之后的請求都在同一個會話中。
? 改進:增加多個會話,作用域小的可以覆蓋大的。
?
7.配置信息的驗證不足。
? 改進:待細化。
結束語
?? 代碼重復是軟件開發的大敵!
?? 測試重復又何嘗不是呢?
???
致謝
?? 第1版問題多多,望海涵!
??
?? 謝謝閱讀!歡迎交流!
?