實驗室的項目開發完成后需要做測試,apache倒是有一些工具。因為我對測試工具沒有什么概念,所以就只能寫代碼去模擬Web頁面的get請求,主要是向看看最大并發是多少。(雖然感覺這種學校的系統,并發量也不會太高)。用的第三方包就是httpclient。
基本思路如下: 1、首先httpGet請求登陸頁面,因為httpGet會自動跳轉(httpPost是不可以自動跳轉)的SSO的登陸頁面.
2、解析SSO的登陸頁面,以前做垂直搜索的時候對網頁分解有過一些了解。這次沒有用第三方的包,因為解析簡單所以用一些正則表達式就可以提取 到form的action,以及一些input的key,特別要注意的就是hidden的一些key,value。(實驗室的項目中一個hidden的參數的value是動態改變的)。
3、通過httpPost去請求action,并添加對應的參數列表。如果驗證成功,應該返回一個StatusCode為302,通過header的"location"key可以得到屬性對應的value。這個value中一般為跳轉的頁面,里面包含sessionId和ticket。通過httpClient的屬性可以得到cookie值(這個cookie可以共享多個client模擬同一個用戶登錄測試)。
4、通過得到的location的value,用httpGet去請求得到mainPage(注意每次請求后httpGet or httpPost都要執行abort(),否則會拋異常),解析mainPage,提取鏈接的網頁。將所有page link存在一個list中。
5、遍歷page link,解析所有的page,提取每個page的js和css的鏈接存入另外的一個list中。(因為實驗室項目的所有網頁的鏈接均可以再mainPage中提取到,如果不是這樣,可以一邊解析每個頁面,一邊加入pageList,這樣就是一個不停止的小爬蟲了)
6、merge兩個list為一個統一的list,采用多線程每次隨機的取一個link發送get請求,可以打印出返回的statusCode。并且統計每個頁面的失敗情況
后續要改進的地方:
1、提取每個頁面的參數,并通過某種形式展現出來(swing or web),這樣來模擬post請求。
2、模擬注冊,這個當然有些麻煩。特別是圖片驗證碼。不過自己系統繞過這個點。
3、。。。etc,其實改進的點可以很多,偶只想到這么多。。 OK,代碼在linux下面,跑到windows下面看論文。。好吧。改天上代碼。看見某度的一個ITer掛了。。壓力有點大。早睡早起吧。有什么好的意見,希望告訴偶。。