Ⅰ 軟體如何進行壓力測試
在最近的一次測試中定義了測試的目的是:需要了解AUT(被測應用程序)一般能夠承受的壓力,同時能夠承受的用戶訪問量(容量),最多支持有多少用戶同時訪問某個功能。在AUT中選擇了用戶最常用的五個功能作為本次測試的內容,包括登錄。大概的需求就是這樣。
接下來我AUT的登錄說一說怎麼用LoadRunner和Jmeter來實現場景的設置達到測試的目的。(註:對伺服器的檢測不是本次測試的重點,本次測試主要收集並發訪問用戶數和發生錯誤用戶數)
首先是對腳本的要求:
1、錄制腳本(注意所有的腳本都應錄制到Action中),自定義事務,事務從提交用戶名和口令的腳本之前開始;
2、在定義事務開始的腳本前加入集合點;
3、在腳本中加入檢查點,以登錄成功的頁面出現登錄用戶的ID即可;
4、參數化登錄用戶的身份;
其次是對場景設置的要求:
1、因為事先我們不知道將有多少用戶訪問是臨界點,所以在測試過程中需要多次改變用戶數來確定;
2、建議修改運行時設置,優化對伺服器的訪問;
3、計劃的設置,每x時間後載入10用戶(根據總用戶數設置),完全載入後持續運行不超過5分鍾(根據需要設置);
4、集合策略,當運行中的用戶數100%達到集合點時釋放;
5、注意事項,需要注意幾個時間:1)伺服器響應超時時間;2)登錄事務迭代一次所使用的時間;3)集合點等待超時時間;4)計劃中設置的間隔時間。在我的測試中事務運行一次的時間不超過30秒,通過修改腳本使它的運行時間達到一分鍾左右, 伺服器響應超時時間、結合點等待超時時間、計劃中設置的間隔時間都設置為了2分鍾。
這樣場景開始運行後運行用戶數呈階梯增長,另外在每個上升點新增的用戶都會隨原來已經運行的用戶並發訪問伺服器。
通過多次的運行和對測試結果中正在運行用戶數與錯誤用戶的對比,然後根據定義可接受錯誤率就可得到該功能的最大並發訪問的用戶數。
以上測試中排除了對網路、客戶端等的要求。在實際測試中首先要保證這些資源是足夠的。
使用Jmeter也能夠達到上述描述的場景的測試,並且更加的便捷。
抄來的
隨便看看吧
Ⅱ 網站做壓力測試時,用什麼工具比較好,要重點注意哪些方面的測試
一般做壓力測試,都用LoadRunner,這個好學好用,而且測試數據統計的比較全,比較權威;
重點注意並發數量和臨界並發數,還有網站後台的各種性能指標在測試後是否能恢復正常等。
Ⅲ (轉)什麼是網站壓力測試
而有很多網站在只有一個用戶使用的時候,運行速度非常快,可是如果成千上萬的用戶同時訪問這個網站,有可能導致網站的崩潰。很多站長都想知道到底他的網站允許多少個用戶同時訪問,為了滿足這種需求,我們推出網站壓力測試服務。壓力測試的目的是,通過測試得到存放你的網頁的伺服器能夠支持的最大用戶數,從而幫助你掌握在經歷了一次大的訪問量的增長後,您的伺服器是否還能夠正常提供服務。
當遇到如下問題時,網站監測服務能夠幫助站長得到正確的答案。
壓力測試使用多線程技術,模仿很多用戶同時訪問伺服器的情形,同時向伺服器發出瀏覽請求,並監測伺服器的反應。
Ⅳ jquery在表單提交前有幾種校驗方法
在表單提交前進行驗證的幾種方式 .
在Django中,為了減輕後台壓力,可以利用JavaScript在表單提交前對表單數據進行驗證。下面提供了有效的幾種方式(每個.html文件為一種方式)。
formpage1.html
復制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example1</title>
<script type="text/javascript" src="/Resource/jquery-1.4.1.js"></script>
<script type="text/javascript">
function jump()
{
//清空表單所有數據
document.getElementById("firstname").value=""
document.getElementById("lastname").value=""
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
}
$(document).ready(function(){
$("#form1").bind("submit", function(){
var txt_firstname = $.trim($("#firstname").attr("value"))
var txt_lastname = $.trim($("#lastname").attr("value"))
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
var isSuccess = 1;
if(txt_firstname.length == 0)
{
$("#firstnameLabel").text("firstname不能為空!")
$("#firstnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(txt_lastname.length == 0)
{
$("#lastnameLabel").text("lastname不能為空!")
$("#lastnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(isSuccess == 0)
{
return false;
}
})
})
</script>
</head>
<body>
提交表單前進行驗證(方法一)
<hr width="40%" align="left" />
<form id="form1" method="post" action="/DealWithForm1/">
<table>
<tr>
<td>first_name:</td>
<td><input name="firstname" type="text" id="firstname" /></td>
<td><label id="firstnameLabel"></label></td>
</tr>
<tr>
<td>last_name:</td>
<td><input name="lastname" type="text" id="lastname" /></td>
<td><label id="lastnameLabel"></label></td>
</tr>
</table>
<hr width="40%" align="left" />
<button type="submit">提交</button>
<button type="button" onclick="jump();">取消</button>
</form>
</body>
</html>
formpage2.html
復制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example2</title>
<script type="text/javascript" src="/Resource/jquery-1.4.1.js"></script>
<script type="text/javascript">
function jump()
{
//清空表單所有數據
document.getElementById("firstname").value=""
document.getElementById("lastname").value=""
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
}
function check(){
var txt_firstname = $.trim($("#firstname").attr("value"))
var txt_lastname = $.trim($("#lastname").attr("value"))
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
var isSuccess = 1;
if(txt_firstname.length == 0)
{
$("#firstnameLabel").text("firstname不能為空!")
$("#firstnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(txt_lastname.length == 0)
{
$("#lastnameLabel").text("lastname不能為空!")
$("#lastnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(isSuccess == 0)
{
return false;
}
return true;
}
</script>
</head>
<body>
提交表單前進行驗證(方法二)
<hr width="40%" align="left" />
<form id="form1" method="post" action="/DealWithForm1/" onsubmit="return check()">
<table>
<tr>
<td>first_name:</td>
<td><input name="firstname" type="text" id="firstname" /></td>
<td><label id="firstnameLabel"></label></td>
</tr>
<tr>
<td>last_name:</td>
<td><input name="lastname" type="text" id="lastname" /></td>
<td><label id="lastnameLabel"></label></td>
</tr>
</table>
<hr width="40%" align="left" />
<button type="submit">提交</button>
<button type="button" onclick="jump();">取消</button>
</form>
</body>
</html>
formpage3.html
復制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example3</title>
<script type="text/javascript" src="/Resource/jquery-1.4.1.js"></script>
<script type="text/javascript">
function jump()
{
//清空表單所有數據
document.getElementById("firstname").value=""
document.getElementById("lastname").value=""
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
}
function checktosubmit(){
var txt_firstname = $.trim($("#firstname").attr("value"))
var txt_lastname = $.trim($("#lastname").attr("value"))
$("#firstnameLabel").text("")
$("#lastnameLabel").text("")
var isSuccess = 1;
if(txt_firstname.length == 0)
{
$("#firstnameLabel").text("firstname不能為空!")
$("#firstnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(txt_lastname.length == 0)
{
$("#lastnameLabel").text("lastname不能為空!")
$("#lastnameLabel").css({"color":"red"});
isSuccess = 0;
}
if(isSuccess == 1)
{
form1.submit();
}
}
</script>
</head>
<body>
提交表單前進行驗證(方法三)
<hr width="40%" align="left" />
<form id="form1" method="post" action="/DealWithForm1/">
<table>
<tr>
<td>first_name:</td>
<td><input name="firstname" type="text" id="firstname" /></td>
<td><label id="firstnameLabel"></label></td>
</tr>
<tr>
<td>last_name:</td>
<td><input name="lastname" type="text" id="lastname" /></td>
<td><label id="lastnameLabel"></label></td>
</tr>
</table>
<hr width="40%" align="left" />
<button type="button" onclick="checktosubmit()">提交</button>
<button type="button" onclick="jump();">取消</button>
</form>
</body>
</html>
以下是視圖函數、URL配置以及相關設置
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
views.py
復制代碼 代碼如下:
#coding: utf-8
from django.http import HttpResponse
from django.shortcuts import render_to_response
def DealWithForm1(request):
if request.method=="POST":
FirstName=request.POST.get('firstname','')
LastName=request.POST.get('lastname','')
if FirstName and LastName:
response=HttpResponse()
response.write("<html><body>"+FirstName+" "+LastName+u"! 你提交了表單!</body></html>")
return response
else:
response=HttpResponse()
response.write('<html><script type="text/javascript">alert("firstname或lastname不能為空!");\
window.location="/DealWithForm1"</script></html>')
return response
else:
return render_to_response('formpage1.html')
def DealWithForm2(request):
if request.method=="POST":
FirstName=request.POST.get('firstname','').encode("utf-8")
LastName=request.POST.get('lastname','').encode("utf-8")
if FirstName and LastName:
html="<html><body>"+FirstName+" "+LastName+"! 你提交了表單!"+"</body></html>"
return HttpResponse(html)
else:
response=HttpResponse()
response.write('<html><script type="text/javascript">alert("firstname或lastname不能為空!");\
window.location="/DealWithForm2"</script></html>')
return response
else:
return render_to_response('formpage2.html')
def DealWithForm3(request):
if request.method=="POST":
FirstName=request.POST.get('firstname','')
LastName=request.POST.get('lastname','')
if FirstName and LastName:
response=HttpResponse()
response.write('<html><body>'+FirstName+LastName+u'! 你提交了表單!</body></html>')
return response
else:
response=HttpResponse()
response.write('<html><script type="text/javascript">alert("firstname或lastname不能為空!");\
window.location="/DealWithForm3"</script></html>')
return response
else:
return render_to_response('formpage3.html')
urls.py
復制代碼 代碼如下:
from django.conf.urls.defaults import patterns, include, url
import views
from django.conf import settings
urlpatterns = patterns('',
url(r'^Resource/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_RESOURCE}),
url(r'^DealWithForm1','views.DealWithForm1'),
url(r'^DealWithForm2','views.DealWithForm2'),
url(r'^DealWithForm3','views.DealWithForm3'),
)
settings.py
復制代碼 代碼如下:
# Django settings for CheckFormBeforeSubmit project.
import os
HERE = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...
STATIC_RESOURCE=os.path.join(HERE, "resource")
...
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
)
ROOT_URLCONF = 'CheckFormBeforeSubmit.urls'
TEMPLATE_DIRS = (
os.path.join(HERE,'template'),
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
Ⅳ 如何使用Jmeter進行壓力測試
2. 左邊樹將出現測試計劃、工作台兩根節點。
3. 選擇測試計劃,按右鍵-》添加-》threads(users)線程組
線程組能設置以多少個線程並發做壓力測試。
在」循環次數」設置不選擇永遠,循環次數設置1。
4. 現在先介紹如何設置登錄http請求,選擇線程組,右鍵――添加――》sampler-―》http 請求。
http請求即模仿瀏覽器的訪問。
在「伺服器名稱或ip」設置127.0.0.1,埠號設置:8080,「方法」設置post,路徑設置網站登錄的地址,如「/exam/operatorAction」。
登錄需傳入用戶、密碼。在「同請求一起發送參數」列表中添加參數。參數值根據web應用設置。如login_user=0001;login_password=1;actFlag=login
5. 登錄成功後,網站一般將跳入主頁面。在jmap中可做判斷,判斷是否登錄後按預想進入主頁面(此步驟也可不設)。選擇4中的「http請求「,右鍵――》添加――》斷言――》響應斷言。「Apply to」設置Main smaple only;「要測試的響應欄位」設置「url樣本」;「模式匹配規則」設置「包括」,「要測試的模式」增加頁面跳轉到的主頁面,如:「studentMain.jsp」
6. 一般網站登錄後,在tomcat中生成了session,之後訪問其他頁面將無需再次登錄,前提是瀏覽器需支持cookie。在jmap中也同樣,如要繼續訪問其他頁面,還需做下面關鍵的設置。
選擇「線程組」――》右鍵――》添加――》配置元件――》Http cookie管理器。加了此步驟後,http請求將具備cookie功能,即登錄成功後訪問其他頁面將不會跳轉到登錄頁面重新登錄。
7. 對目標頁面反復壓力測試。
7.1 如何使被測頁面反復訪問達到測壓效果。選「線程組」―》右鍵――》邏輯控制器――》循環控制器。循環次數中選擇「永遠」。
7.2 選擇剛加的「循環控制器」,右鍵――》添加――》sampler-―》http 請求,按4步驟設置ip、埠,http請求方法為「get」,路徑為被壓力測試的url,如:「exam/business/studentExam.action.StudentExamAction?action=goIntoMockExam」。
按上面的設置後,已完成配置,可做壓力測試。只需點菜單「運行」――》啟動,即運行壓力測試。
8. jmeter提供了許多壓力結果查看工具。是壓力測試時非常好的分析工具。下面幾種查看工具可有選擇的添加。
8.1 察看結果樹。他記錄每次請求發送數據、響應返回數據。選擇「線程組」――》右鍵――》添加――》察看結果樹。
8.2 用表格查看結果。可查看每次請求的響應時間等。選擇「線程組」――》右鍵――》添加――》用表格查看結果。
8.3 Summary Report。可查看平均響應時間、最長響應時間等。
Ⅵ php 網站壓力測試主要是測試哪些方面
apache自帶一個測試軟體:ab.exe
ab.exe-k-c300-n2000http://localhost/
-k keep-alive
-c 並發線程數量
-n 請求數量
返回的報告:
每秒處理次數
最慢處理時間
平均每次請求的處理時間
Ⅶ 如何做壓力測試
一個壓力測試的流程:
1、明確測試目標
2、制定測試計劃
3、實施測試,收集參數
4、分析測試結果
5、給出優化方案
一 、明確測試目標:如果是客戶的需求,那需要向客戶確認,有清楚的性能指標參數,測試時就是保證系統達到該指標並能良好運轉,即壓力測試。如果是自己的系統需要有一個評估,那就需要完整的得到該系統的幾個臨界點,拿到完整的性能曲線,從而來分析部署情況,即為性能測試。不管是哪個,知道了需求,才能制定計劃。
性能測試的目標是發現重大的系統瓶頸。你可以想像一個系統由一系列的瓶頸組成;發現並改善一個瓶頸往往會在其他地方產生一個新的瓶頸。例如,我曾為一運行微軟Windows CE的器件部門工作。我們發現的第一大性能問題體現在某一具體硬體環境下的內存管理中。我們把問題分離出來,改善了內存分配的效率。爾後再次運行我們的測試,又找到了一個新的瓶頸,這次體現在網路吞吐量上(throughput)。解決了這個問題後,我們接著又為下一個瓶頸改善而工作,然後再下一個,直到整個系統都達到了性能目標。要記住的是:關鍵在於要盡早訂立性能目標,否則你可能不知道什麼時候該停止性能測試。
二、制定測試計劃:確定使用什麼工具,著重哪些參數,設置線程數,方法執行次數,執行時間,是否多個介面同時進行測試等等。
三、實施測試,收集參數:選一個施壓工具,來向部署好的服務發起高並發請求,同時關注和收集性能參數。這個是我們花費時間最多的地方。通常該階段需要反復執行,來得到想要的數據。通常來說,我們可以使用JMeter LR AB 自己寫多線程等各種方式,之後介紹一下JMeter。
四、分析測試結果:即根據上一節的參數介紹來進行參數分析。
五、給出優化方案:如果是代碼邏輯耗費cpu,就優化演算法;如果是redis等資料庫耗時,就增加節點,減少讀取,讀寫分離,使用內存等;如果是外在條件限制,則與外部們溝通問題,共同優化等等。
Ⅷ 對網站進行測試和評估的工作內容~
一個網站的建成,是各個部門分工協作的結果。設計師進行網站頁面的設計,程序進行代碼的編寫。在網站的架構完成之後,還有一項非常重要的工作,那就是網站測試。
主要測試內容:
1、伺服器穩定性、安全性。
望站伺服器的穩定和安全一直都是最頭疼的事情,所以我們應該走到麻煩的前面,首先把預想到的麻煩排除掉。
Web伺服器搭建完成上線在即,其能夠承載多大的訪問量,響應速度、容錯能力等性能指標,所有這些是管理人員最想知道也最為擔心的。如何才能知曉這一切呢?通過工具進行Web壓力測試是個好方法。通過它可以有效地測試Web伺服器的運行狀態和響應時間等性能指標。
2、程序及資料庫測試。
每個程序都有自己相對應的功能,資料庫則是數據集中的地方,尤其重要。
資料庫開發既然在軟體開發的比重逐步提高,隨之而來的問題也突出。我們以前往往重視對代碼的測試工作,隨著流程技術的日益完善,軟體質量得到了大幅度的提高,但資料庫方面的測試仍然處於空白。我們從來沒有真正將資料庫作為一個獨立的系統進行測試,而是通過對代碼的測試工作間接對資料庫進行一定的測試。隨著資料庫開發的日益升溫,資料庫測試也需要獨立出來進行符合自身特點的測試工作。
在進行性能測試的時候,一定要注意環境的一致,包括:操作系統、應用軟體的版本以及硬體的配置等,而且在進行資料庫方面的測試的時候一定要注意資料庫的記錄數、配置等要一致,只有在相同條件下進行測試,才可以對結果進行比較。
3、網頁兼容性測試,如瀏覽器、顯示器。
網頁打開多了 不會出現死頁的情況,當然也有顯示器的解析度和瀏覽器的版本問題存在。
使用不同的瀏覽器訪問同一個網站,或者頁面的時候,在一種瀏覽器下顯示正常,在另一種下就亂了。這是因為不同的瀏覽器對於網站CSS的解釋不同。
常見的瀏覽器兼容性問題,主要表現在如下兩方面;
1.頁面顯示
頁面顯示的美觀性是Web應用程序中重要需求,不同瀏覽器上呈現給用戶的同一個Web頁面可能顯示的不一樣。這些差異性主要表現在對於頁面元素的位置、大小、外觀。如果在某款瀏覽器上顯示不美觀,就會成為一個問題,需要修改。
2)功能問題
Web軟體中的功能性問題主要是不同瀏覽器對腳本的執行不一致,功能性問題極大的限制了用戶對Web界面元素的使用。這類問題通常很難被發現,比如某個按鈕可能顯示正確但實際它是無法使用的,這個則需要用戶真正的去使用它才能被發現。
4、鏈接及表單設計
鏈接測試可分為三個方面:
1.測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面;
2.測試所鏈接的頁面是否存在;
3.保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面,只有知道正確的URL地址才能訪問。
表單測試,如用戶注冊、登陸、信息提交等,我們必須測試提交操作的完整性,以校驗提交給伺服器的信息的正確性。例如:用戶填寫的出生日期與職業是否恰當,填寫的所屬省份與所在城市是否匹配等。如果使用了默認值,還要檢驗默認值的正確性。如果表單只能接受指定的某些值,則也要進行測試。例如:只能接受某些字元,測試時可以跳過這些字元,看系統是否會報錯。
當然,網站測試還有很多方面的內容,諸如連接速度測試、負載測試、壓力測試、介面測試、安全測試等等,相關文章可以在企贏001進行了解。網站測試需要用到各種測試工具,以及寫一份合格的網站測試報告,這都是我們需要了解的。
二、性能測試
(1)連接速度測試。用戶連接到電子商務網的速度與上網方式有關,他們或許是電話撥號,或是寬頻上網
(2)負載測試。負載測試是在某一負載級別下,檢測電子商務系統的實際性能。
也就是能允許多少個用戶同時在線!可以通過相應的軟體在一台客戶機上模擬多個用戶來測試負載。
(3)壓力測試。壓力測試是測試系統的限制和故障恢復能力,也就是測試電子商務系統會不會崩潰
三、安全性測試
它需要對電子商務的客戶伺服器應用程序、數據、伺服器、網路、防火牆等進行測試用相對應的軟體進行測試
上面的測試是針對電子商務的,在電子商務書上找到的,那個測試一般普通的網站就是兩方面。
基本測試
包括色彩的搭配,連接的正確性,導航的方便和正確,CSS應用的統一性
2.技術測試
網站的安全性(伺服器安全,腳本安全),可能有的漏洞測試,攻擊性測試,錯誤性測試。
網站的評估主要對以下方面:網站界面,產品展示,在線支付,在線客服,線下產品配送。更重要的是目標消費者可以很方便快捷的找到該網站,從而進行電子商務活動.讓客戶找到該電子商務網站。是否網站有一個搜索引擎!或是把自己的網站添加到一些大的分類目錄上。再就是讓目標客戶記得你網站的名字(最終效果--品牌效果)並直接進去個好的電子商務網站是看它是否經過搜索引擎優化了。
Ⅸ 如何用Jmeter做壓力測試
在「伺服器名稱或ip」設置127.0.0.1,埠號設置:8080,「方法」設置post,路徑設置網站登錄的地址,如「/exam/operatorAction」。
登錄需傳入用戶、密碼。在「同請求一起發送參數」列表中添加參數。參數值根據web應用設置。如login_user=0001;login_password=1;actFlag=login。
一般網站登錄後,在tomcat中生成了session,之後訪問其他頁面將無需再次登錄,前提是瀏覽器需支持cookie。在jmap中也同樣,如要繼續訪問其他頁面,還需做下面關鍵的設置。
Apache JMeter
是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java小服務程序、CGI 腳本、Java 對象、資料庫、FTP伺服器, 等等。JMeter 可以用於對伺服器、網路或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。
Ⅹ 如何執行壓力測試
Jmeter是一個性能測試工具,同loadrunner類似,他功能較多,我們常用的功能是用jmeter模擬多瀏覽器對網站做壓力測試。
我們一般的網站,在進入業務功能前先需登錄,然後才能訪問業務功能。下面介紹如何用jmeter登錄系統再對主業務做壓力測試。
1. 運行jmeter
2. 左邊樹將出現測試計劃、工作台兩根節點。
3. 選擇測試計劃,按右鍵-》添加-》threads(users)線程組
線程組能設置以多少個線程並發做壓力測試。
在」循環次數」設置不選擇永遠,循環次數設置1。
4. 現在先介紹如何設置登錄http請求,選擇線程組,右鍵――添加――》sampler-―》http 請求。
http請求即模仿瀏覽器的訪問。
在「伺服器名稱或ip」設置127.0.0.1,埠號設置:8080,「方法」設置post,路徑設置網站登錄的地址,如「/exam/operatorAction」。
登錄需傳入用戶、密碼。在「同請求一起發送參數」列表中添加參數。參數值根據web應用設置。如login_user=0001;login_password=1;actFlag=login
5. 登錄成功後,網站一般將跳入主頁面。在jmap中可做判斷,判斷是否登錄後按預想進入主頁面(此步驟也可不設)。選擇4中的「http請求「,右鍵――》添加――》斷言――》響應斷言。「Apply to」設置Main smaple only;「要測試的響應欄位」設置「url樣本」;「模式匹配規則」設置「包括」,「要測試的模式」增加頁面跳轉到的主頁面,如:「studentMain.jsp」
6. 一般網站登錄後,在tomcat中生成了session,之後訪問其他頁面將無需再次登錄,前提是瀏覽器需支持cookie。在jmap中也同樣,如要繼續訪問其他頁面,還需做下面關鍵的設置。
選擇「線程組」――》右鍵――》添加――》配置元件――》Http cookie管理器。加了此步驟後,http請求將具備cookie功能,即登錄成功後訪問其他頁面將不會跳轉到登錄頁面重新登錄。
7. 對目標頁面反復壓力測試。
7.1 如何使被測頁面反復訪問達到測壓效果。選「線程組」―》右鍵――》邏輯控制器――》循環控制器。循環次數中選擇「永遠」。
7.2 選擇剛加的「循環控制器」,右鍵――》添加――》sampler-―》http 請求,按4步驟設置ip、埠,http請求方法為「get」,路徑為被壓力測試的url,如:「exam/business/studentExam.action.StudentExamAction?action=goIntoMockExam」。
按上面的設置後,已完成配置,可做壓力測試。只需點菜單「運行」――》啟動,即運行壓力測試。
8. jmeter提供了許多壓力結果查看工具。是壓力測試時非常好的分析工具。下面幾種查看工具可有選擇的添加。
8.1 察看結果樹。他記錄每次請求發送數據、響應返回數據。選擇「線程組」――》右鍵――》添加――》察看結果樹。
8.2 用表格查看結果。可查看每次請求的響應時間等。選擇「線程組」――》右鍵――》添加――》用表格查看結果。
8.3 Summary Report。可查看平均響應時間、最長響應時間等。