做者:ZBWlaravel
版本:v1.1
web
在Phylab的開發過程當中,對於生成報告接口的性能考量十分重要。原有的Latex接口雖然生成的報告美觀,但編譯Latex模板的速度一直不盡人意。除此以外往屆同窗也出現過因爲多人同時生成報告形成網站崩潰的狀況。所以上一階段咱們着手開發了基於Markdown模板的報告生成接口。開發結束以後,如何考量兩個接口的性能成爲了咱們須要關注的問題。正則表達式
因爲測試者對Postman較爲熟悉,咱們首先嚐試使用Postman進行性能測試,但因爲其功能有限,隨後咱們又使用Jmeter進行了併發方面的測試。所以如下將簡單介紹這兩款工具的使用。chrome
Postman是一款強大的API測試工具,可以向服務器發起複雜的http請求,其請求頭、請求體以及Cookie等均可以經過簡單清晰的方式定製。結合額外的瀏覽器插件,Postman還可記錄瀏覽器發生的請求。從而成爲了編寫腳本的好幫手apache
如下介紹Postman的Chrome瀏覽器App,其最大的優勢是結合Postman Interceptor瀏覽器插件,無需額外配置便可捕捉瀏覽器正在發起的請求。(Postman本地應用須要額外配置瀏覽器代理信息)瀏覽器
缺點是此Chrome App已經處於停滯開發的狀態,啓動時會收到Deprecated的警告。但因爲本文涉及的功能較爲簡單,因此暫時不考慮此問題。服務器
下載連接:Chrome app, Postman Interceptorcookie
(1) 啓動Postman Interceptor的接收狀態,其中的輸入框能夠經過正則表達式過濾請求域名。session
(2) 打開Postman app多線程
左側是軟件發起過以及記錄瀏覽器發起的請求列表,右側是單個請求的詳細信息。
(1) 輸入請求相關信息 測試的第一步是構造請求,能夠在右側的長條狀欄內輸入請求指向的API,並指定請求的類型。以後填寫下方的請求詳細信息。
(2) 使用瀏覽器Cookie(使用Interceptor捕獲請求)
這裏咱們的問題是被測接口須要登錄才能使用,而直接由Postman發起的請求默認是不帶有任何額外Cookie的,請求結果是Unauthorized。所以這裏的簡便方法是在登錄網站後在瀏覽器端點擊生成報告,並經過interceptor獲取瀏覽器發起的請求,此時請求內包含了登錄的Cookie信息。
在瀏覽器發起請求後,Postman會直接記錄下請求的詳細信息。因爲在瀏覽器上填好數據後點擊生成報告,捕獲的請求信息中已經包含了測試接口所需的數據。
(3) 發送及保存請求
最後點擊Send便可發送請求,並在面板下方看到請求的結果。
能夠將請求保存到Collection中備用。
Postman提供了Runner功能,能夠自動運行Collection中的全部測試。
(1) 啓動
點擊界面右上角的Runner打開相應界面。其中在Runs下能夠選擇須要運行的collection。左側可查看以前的測試結果。
(2)參數配置
中間部分主要用到參數的爲Iteration,表明測試重複的次數;Delay表明每次重複之間的間隔;Data File部分能夠上傳相應的數據文件。
(3) 運行測試查看結果
點擊Run即可運行測試。
例如咱們測試Markdown生成接口的平均耗時,可設置Iteration爲10,運行後能夠看到每次請求返回的時間及狀態碼。
可經過Export Test Result導出結果查看具體的報告。
Postman的一大缺點是其只能串行運行測試,而不能並行測試,從而沒法測量服務器的併發性能。所以咱們開始考慮使用更復雜的工具Jmeter來測試。Jmeter是由Apache基金會旗下的一款負載測試軟件,咱們僅僅應用了其中的HTTP請求測試,而實際上該軟件還能夠用於不少方面。
從這裏下載Jmeter二進制文件壓縮包:Download Apache Jmeter
該程序解壓後便可使用。
解壓後進入bin文件夾,Windows直接運行jmeter.bat便可,Linux下運行jmeter.sh。注意Jmeter的使用須要JRE支持。
Jmeter是一款模塊化的軟件,功能很是強大,但使用起來須要像搭積木同樣增長本身所需的模塊。從上手難度上講要高於Postman。
Jmeter啓動後默認打開了一個空的Test Plan。具體的測試內容須要咱們自行添加。Jmeter以多線程的方式並行發起請求,於是咱們首先須要添加線程組。
(1) 新建線程組
如圖新建一個線程組,點擊新增的線程組能夠配置多線程的具體信息。
(2) 配置線程組
配置列表中,Number of Threads爲線程的數量,此處180意味着咱們在單次測試中會啓動180個線程,在咱們的測試狀況中會發起180個請求。 Ramp-Up Period爲建立以上數量線程的時間,這裏設置爲60意味着180個線程將在60秒內逐步啓動。以上咱們模擬的是較爲平均的高壓力使用狀況。倘若將此值設置爲較小的數字,大量請求將同時發起,能夠測試突發的狀況。 循環次數表明這一線程組測試的次數。咱們僅運行1次。
(1) 添加http請求
右鍵設置好的線程組,添加Http請求。
(2) 配置http請求及cookie
這裏即配置咱們發起請求的具體內容,其配置方式和Postman很是相似,照貓畫虎便可。
注意這裏的請求也是不附帶任何Cookie信息的。所以咱們還須要添加HTTP Cookie Manager來附帶額外的登錄Cookie信息。Cookie的內容能夠從Postman的測試中獲取,也能夠由瀏覽器F12獲取。添加後填入須要的Cookie信息便可。這裏咱們僅須要laravel_session以使網站識別咱們的登錄帳戶。
(3) 配置結果查看模塊
除此以外咱們還須要添加查看結果的相關組件。在Thread Group下增長View Results Tree能夠查看每次請求的結果,增長Aggregate Report能夠查看累計運行測試的狀況。
(1) 運行測試
在所有配置完成後點擊界面上方的綠色三角按鈕便可運行測試。
(2) 查看結果
能夠在上述的兩個監聽器內查看結果,能夠點擊掃把狀的按鈕清空運行結果。(若是不清空結果Aggregate Report將持續記錄)
在Aggregate Report的底部能夠導出結果爲csv文件。