1. 性能測試包括哪些方面
性能測試包括負載測試和壓力測試。
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬於性能測試,兩者可以結合進行。通過負載測試,確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大服務級別的測試。
性能測試在軟體的質量保證中起著重要的作用,它包括的測試內容豐富多樣。中國軟體評測中心將性能測試概括為三個方面:應用在客戶端性能的測試、應用在網路上性能的測試和應用在伺服器端性能的測試。通常情況下,三方面有效、合理的結合,可以達到對系統性能全面的分析和瓶頸的預測。
2. TCP伺服器性能如何測試
1 可以用專用工具測試,例如:
Netperf(www.netperf.org):網路性能測試。主要針對基於TCP或
UDP的傳輸。Netperf根據應用的不同,可以進行不同模式的網路性能測試,即批量數據傳輸(bulk data
transfer)模式和請求/應答(request/reponse)模式。Netperf測試結果所反映的是一個系統能夠以多快的速度向另外一個系統
發送數據,以及另外一個系統能夠以多塊的速度接收數據。Netperf工具以client/server方式工作。
server端是netserver,用來偵聽來自client端的連接,client端是 netperf,用來向server發起網路測試。
2 自己寫代碼測試,參考:
http://kmplayer.iteye.com/blog/673226。
3. 如何測試 單機 伺服器響應速度 來測算代碼質量
隨手機對人們生活中的影響越來越大,App測試工作逐漸被眾人所知。從一開始的眾包到現在的自動化探索,手機測試上的技術發展也是日新月異。
App測試相比以往傳統的軟甲測試相關要復雜的多且困難的多。
基於工作經驗,我將如何做好app的測試歸結為如下內容。
(1) 非功能測試
app測試的一個重要方面是app的非功能需求。移動app在推出市場或進行進一步開發前,測試人員有一定的職責做該類需求的跟蹤工作。
早期開發階段要進行的第一個測試應該是實用性測試。通常是由alpha用戶或同事進行的。走進一家咖啡館或餐廳,問問裡面的人他們的app使用情況。讓他們看看現階段開發的第一個版本並收集反饋,看看用戶是否能很好地使用新功能,以便得出第一印象。
(2) 功能測試
每項開發的新功能都需要進行測試。app測試中功能測試是一個重要方面。測試人員應該要進行手動測試和後期的自動化測試維護。剛開始測試時,測試員必須把app當做"黑盒"一樣進行手動測試,看看提供的功能是否正確並如設計的一樣正常運作。除了經典軟體測試,像點擊按鈕、提交訂單看看會發生什麼,測試員還必須執行更多功能的app測試。
除了整個手動測試過程,測試自動化對移動app也很重要。每個代碼變化或新功能都可能影響現存功能及它們的狀態。通常手動回歸測試時間不夠,所以測試員不得不找一個工具去進行自動化回歸測試。現在市面上有很多自動化測試工具,有商業的也有開源的,面向各個不同平台,如Android,iPhone,WindowsPhone7,BlackBerry以及移動Webapp。根據開發策略和結構,品質管理測試專家需找出最適合他們環境的自動化工具。
(3) 客戶端性能測試
一個App做的好不好,不僅僅只反應在功能上。被測的app在中低端機上的性能表現也很重要。比如:一個很好玩的游戲或應用,只能在高端機上流暢運行,在中低端機上卡的不行,也不會取得好的口碑。
關於App的性能測試,我們比較關注的參數有:CPU,內存,耗電量,流量,FPS。同時也需關注一下App的安裝耗時和啟動耗時。
目前大家可能比較困惑的一個問題,多高的CPU,內存,耗電量,流量,FPS才算是符合發布的值呢?這里可以告訴大家,可以參考精品游戲的一些數值,將自己研發的app與業內精品的app數據做對比。
(4) 適配兼容測試
App在經過功能測試後,也需對其進行適配兼容測試需要檢查的項主要有以下幾點:
(a) 在不同平牌的機型上的安裝、拉起、點擊和卸載是否正常;
(b) 在不同的操作系統上的安裝、拉起、點擊和卸載是否正常;
我們在實際測試中,常常會遇到下列問題:
(a) 在某個平牌某個系統上,app安裝不上;
(b) 在某個平牌某個系統上,app無法拉起;
(c) 在某個平牌某個系統上,app拉起後無響應或拉起後黑屏、花屏;
(d) 在某個平牌某個系統上,app無法順利卸載;
(WeTest騰訊質量開放平台)這個產品可以實現多款熱門機型的適配兼容測試。
(5) 弱網路測試
App在使用的過程中,難免會遇到弱網路環境,例如在公車上、在地鐵里。在這種情況下,常常會出現網路抖動、上行或下行超時,導致應用中出現丟包。
作為一個測試人員,我們要對app在上線前做一定場景的弱網路環境模型,並查看app在弱網路環境下是否存在某些未知的問題。下面是我們常用的弱網路環境場景:
(a) 3G弱網路信號場景模擬;
(b) 市區低速移動場景模擬;
(c) 郊區高速移動場景模擬;
(d) 請求回應超時_上行超時場景模擬;
(e) 請求回應超時_下行超時場景模擬;
(f) 網路抖動場景模擬;
(6) 耗電量測試
App在手機上的表現,除了功能外,app是否耗電,也是測試過程中重點要關注的一項。手機設備在滿電的時候,這個App能玩多久;App每小時的耗電是多少;App在某個場景掛機10分鍾耗電量是多少;這些都是我們平時在耗電量測試中比較關注的點。
(7) 協議測試
模擬客戶端直接發送協議包給伺服器,看看伺服器是否有一定的校驗,認不認客戶端發過來的數據。協議測試,主要是為了處理用戶發送惡意協議到伺服器,騙過伺服器的校驗。
(8) 安全測試
App在上線前,都需要做詳細的安全測試。安全測試主要為了檢測應用是否容易被外界破解;是否存在被惡意代碼注入的風險;上線後外掛的風險高不高等。
(9) 伺服器性能測試
伺服器性能測試,主要包含單機容量測試和24小時穩定性測試。單機容量測試,可以檢測到單機伺服器在90%的響應時間和成功率都達標的前提下,能夠承載多少用戶量。使用特定游戲模型壓測24小時,服務無重啟,內存無泄漏,並且各事務成功率達標。
這個可以在WeTest入口預約。
(10) 伺服器容災測試
伺服器容災測試,主要指某個服務進程奔潰掉後,是否具有自行恢復能力。比如游戲邏輯進程消失後,是否會自動拉起;memcached崩潰時,是否會重新啟動,是否會對所有玩家有影響。這些都是app測試過程中需要考慮的因素。
(11) 中斷測試
針對智能終端應用的服務等級劃分方式及實時特性所提出的測試方法,如:App在前台和後台運行狀態時與來電、文件下載、音樂收聽等關鍵運用的交互情況測試等。測試電話,簡訊,彩信,微博或其他通知進來時app的反應。
(12) 上線後期的輿情跟蹤
新的app上線後,用戶對此應用的評價,存在哪些測試期間未察覺的Bug,論壇上對於該應用熱門的帖子有哪些,應用商店中該應用的口碑如何等,都是app在上線後,測試人員需要關注的點。若需要測試期間未發現的Bug,需要新測試服進行確認並根據該問題的修復。
4. 如何使用loadrunner對伺服器進行性能測試
使用LR對資料庫進行性能測試,實際上有多種辦法,包括通過現有的資料庫協議進行CS模式的先錄制後執行的模式,以及通過socket方式向伺服器發包方式的測試方式。這些是常規書籍上介紹的比較簡單上手的測試方法,但是不具備通用性,受已有協議或socket編程方式的限制,所以需要更為通用的測試方法。
用java user的協議進行所有資料庫性能的測試工作:
Java user 不需要錄制,把所有的操作通過java語言進行實現,通過lr調用java的class進行加壓批量操作,這樣可以不關心被測系統是哪個資料庫,只要能夠通過jdbc進行訪問,就能實現性能測試。
一、測試環境准備
1. 被測伺服器准備,根據測試目的,搭建需要的資料庫伺服器,確保資料庫能夠正常訪問,正常操作;
2. Java代碼的准備,無論使用哪種IDE,只要能夠編寫訪問資料庫的class就可以,形式可以是j2se,也可以是j2ee,因為在操作時只使用class的部分方法,所以j2ee就可以了;
3. LR的腳本調試,把java的class導入到腳本調試模式,根據需要添加事務以及其他操作。
二、編寫資料庫訪問
1. 使用myeclipse,創建web project,創建如下圖的包目錄:
Java文件中包含各種訪問資料庫的方法。
需要注意的是,class中的方法必須是public static,否則LR中無法調用。由於創建的是j2ee程序,所以不用main函數,在web中就可以進行功能驗證。
確認class中的方法編寫完成,創建一個web.jsp文件,如下:
導入class
聲明類,並實例化,直接調用剛才編寫的3個方法,因為這3個方法是直接對資料庫進行操作,不需要實參,也沒有返回值,所以直接實現即可。
此時啟動web服務,在瀏覽器中輸入jsp的地址,直接刷新頁面,就可以調用這3個方法,如果正確,就會對相應的表進行操作,如果不正確,則需要修改相應的代碼。
2. LR腳本准備:
LR腳本實際上就是對訪問代碼的調用,關鍵在於需要根據測試場景劃分不同的腳本布局。
例如:在myEclipse里,我們只編寫了一個class,其中包含三個方法,如果在執行性能測試時,這三個方法相互獨立,互不幹涉,則最簡單的劃分方法是,創建三個java user,每個java user中包含一個方法,做三份腳本,場景執行時分別進行調用。如果三個方法之間有相互關系,則需要根據實際情況,把有關聯的方法放在一起,具體情況可按實際靈活分配。
因為已經將class文件進行編譯發布了,所以可以在「java2postgres\WebRoot\WEB-INF\classes\com\lr\test」目錄中找到對應的class文件,
復制這個文件,找到LR的目錄:HP\LoadRunner\classes\com\lr\test\ 如果沒有文件夾,按相同的內容創建。
在LR腳本中進行引包操作:
將需要執行的java類以及方法,放在action中,可根據實際測試情況和所需要驗證的內容,具體調試代碼。
在這里可以像編寫普通LR腳本一樣,添加事務或集合點等內容。
由於是通過JDBC對資料庫進行訪問,因此要在java user中載入jdbc驅動。
運行時設置中,增加jdbc驅動,需要注意的是java user使用的本地jdk,需要至多1.6版本,若使用1.7版本,回放會有錯誤,這是jdk版本的問題。
操作完成之後,按F5或點擊運行,進行腳本回放,實際此時也對資料庫進行了操作,可以直接查詢對應的表,檢查功能是否正確。
三、執行性能測試
已經有了java user的腳本,和普通web性能測試一樣,設計場景、執行測試、收集報告、分析性能瓶頸即可。
5. 如何在Windows伺服器做性能測試
一、遠程連接到Windows伺服器,使用windows系統自帶工具進行收集性能數據
1、Windows伺服器中自帶的性能監控工具叫做Performance Monitor,在開始-運行中輸入『Perfmon.msc』,然後回車即可運行。通過界面,控制面板所有控制面板項管理工具性能監視器也能打開
5、用EXCEL將數據轉換為折線圖,並分析性能情況
二、分析性能情況
(1)內存泄露判斷
●虛擬內存位元組數(VirtualBytes)應該遠大於工作集位元組數(Workingset),如果兩者變化規律相反,比如說工作集增長較快,虛擬內存增長較少,則可能說明出現了內存泄露的情況。
●對於Workingset、Private Bytes、Availablebytes這些計數器,如果在測試期間內數值持續增長,而且測試停止後位置在高水平,則也說明存在內存泄露。
●Windows資源監控中,如果ProcessPrivateBytes計數器和ProcessWorkingSet計數器的值在長時間內持續升高,同時MemoryAvailable
bytes計數器的值持續降低,則很可能存在內存泄漏。
(2)CPU使用情況
●一般平均不要超過70%,最大不要超過90%(好:70% 、壞:85%、 很差:90%)
(3)tps(每秒處理事務的數量,在SOAPUI中進行統計)
●一般在10-100,不同應用程序具體值不同
1234567891011121314151617
幾個常用參數的參考值:CPU:% ProcessorTime:表示CPU的使用率,如果值大於80表示CPU的處理調度能力偏低。硬碟:% DiskTime:表示硬碟的I/O操作的頻率(繁忙時間),如果值大於80表示硬碟I/O調度能力偏低。Average Disk QueueLength:表示硬碟I/O操作等待隊列的長度,如果值大於2表示硬碟I/O調度能力偏低。內存Pages/Sec:表示系統對虛擬內存每秒鍾的訪問次數,如果值大於20表示有內存方面的問題。(有可能是物理內存偏低,也有可能是虛擬內存沒有配置正確。一般情況下虛擬內存應為物理內存的1.5-2倍)CommittedBytesandAvailable Bytes:CommittedBytes表示虛擬內存的大小,Available Bytes表示剩餘可用內存的大小。正常情況下,Available Bytes減少,pages(頁面數)應該增加,提供頁面交換。<br>如果Available Bytes的值很小表示物理內存偏低。當關閉一些應用以後,CommittedBytes應該減少,Available Bytes應該增加。因為關閉的進程釋放了之前佔用的內存資源。如果相應的值沒有發生變化,那麼該進程就可能造成了內存泄漏。Cache Bytes:表示系統緩存的大小。如果值大於4M表示物理內存偏低。
三、關於計數器的選擇
perfmon的計數器主要分四種:處理器性能計數器、內存性能計數器、磁碟性能計數器以及網路性能計數器。
以下為監控伺服器常用的計數器:
常用的性能對象與指標
性能對象
計數器
提供的信息
Processor
% Idle Time
% Idle Time 是處理器在采樣期間空閑的時間的百分比
Processor
% Processor Time
% Processor Time 指處理器用來執行非閑置線程時間的百分比。計算方法是,測量範例間隔內非閑置線程活動的時間,用範例間隔減去該值。這個計數器是處理器活動的主要說明器,顯示在範例間隔時所觀察的繁忙時間平均百分比。
Processor
% User Time
% User Time 指處理器處於用戶模式的時間百分比。用戶模式是為應用程序、環境分系統和整數分系統設計的有限處理模式。
Memory
Available Bytes
Available Bytes顯示出當前空閑的物理內存總量。當這個數值變小時,Windows開始頻繁地調用磁碟頁面文件。如果這個數值很小,例如小於5 MB,系統會將大部分時間消耗在操作頁面文件上。
Memory
% Committed Bytes in Use
% Committed Bytes In Use 是 Memory: Committed Bytes 與Memory: Commit Limit之間的比值。(Committed memory指如果需要寫入磁碟時已在分頁文件中保留空間的處於使用中的物理內存。Commit Limit是由分頁文件的大小而決定的。如果擴大了分頁文件,該比例就會減小)。這個計數器只顯示當前百分比;而不是一個平均值。
Memory
Page Faults/sec
Page Faults/sec是指處理器處理錯誤頁的綜合速率。用錯誤頁數/秒來計算。當處理器請求一個不在其工作集(在物理內存中的空間)內的代碼或數據時出現的頁錯誤。這個計數器包括硬錯誤(那些需要磁碟訪問的)和軟錯誤(在物理內存的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續操作。但是,硬錯誤可以導致明顯的拖延。這個計數器顯示用上兩個實例中觀察到的值之間的差除以實例間隔的持續時間所得的值。
Network Interface
Bytes Total/sec
Bytes Total/sec是發送和接收位元組的速率,包括幀字元在內。
Network Interface
Packets/sec
Packets/sec為發送和接收數據包的速率。
Physical Disk
% Busy Time
% Busy Time指磁碟驅動器忙於為讀或寫入請求提供服務所用的時間的百分比。
Physical Disk
Avg. Disk Queue Length
Avg. Disk Queue Length 指讀取和寫入請求(為所選磁碟在實例間隔中列隊的)的平均數。
Physical Disk
Current Disk Queue Length
Current Disk Queue Length指在收集操作數據時在磁碟上未完成的請求的數目。它包括在快照內存時正在為其提供服務中的請求。這是一個即時長度而非一定間隔時間的平均值。多主軸磁碟設備可以一次有多個請求操作,但是其它同時發生的請求為等候服務。這個計數器可能會反映一個暫時的高或低的列隊長度,但是如果在磁碟驅動器存在持續負載,可能值會總是很高。請求等待時間與這個列隊的長度減去磁碟上的主軸成正比。這個差值應小於2才能保持良好的性能。
Logical
Disk
% Free Space
% Free Space 是所選定的邏輯磁碟驅動器上總的可用空閑空間的百分比。
Logical
Disk
Free Megabytes
可用的 MB 顯示磁碟驅動器上尚未分配的空間。
以下為監控進程常用的計數器:
Process對象的主要指標
性能對象
計數器
提供的信息
Process
% Privileged Time
% Privileged Time 是在特權模式下處理線程執行代碼所花時間的百分比。當調用 Windows 系統服務時,此服務經常在特權模式運行,以便獲取對系統專有數據的訪問。在用戶模式執行的線程無法訪問這些數據。對系統的調用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或間隔。
Process
% Processor Time
% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬體間隔和陷阱條件所執行的代碼。
Process
% User Time
% User Time 指處理線程用於執行使用用戶模式的代碼的時間的百分比。應用程序、環境分系統和集合分系統是以用戶模式執行的。Windows 的可執行程序、內核和設備驅動程序不會被以用戶模式執行的代碼損壞。
Process
Creating Process ID value
Creating Process ID value 指創建該進程的父進程號。
Process
Elapsed Time
該進程運行的總時間(用秒計算)。
Process
Handle Count
由這個處理現在打開的句柄總數。這個數字等於這個處理中每個線程當前打開的句柄的總數。
Process
ID Process
ID Process 指這個處理的特別的識別符。ID Process 號可重復使用,所以這些 ID Process 號只能在一個處理的壽命期內識別那個處理。
Process
IO Data Bytes/sec
處理從 I/O 操作讀取/寫入位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Data Operations/sec
本處理進行讀取/寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Other Bytes/sec
處理給不包括數據的 I/O 操作(如控制操作)位元組的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Other Operations/sec
本處理進行非讀取/寫入 I/O 操作的速率。例如,控制性能。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Read Bytes/sec
處理從 I/O 操作讀取位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Read Operations/sec
本處理進行讀取 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Write Bytes/sec
處理從 I/O 操作寫入位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備。
Process
IO Write Operations/sec
本處理進行寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
Page Faults/sec
Page Faults/sec 指在這個進程中執行線程造成的頁面錯誤出現的速度。當線程引用了不在主內存工作集中的虛擬內存頁即會出現 Page Fault。如果它在備用表中(即已經在主內存中)或另一個共享頁的處理正在使用它,就會引起無法從磁碟中獲取頁。
Process
Page File Bytes
Page File Bytes 指這個處理在 Paging file 中使用的最大位元組數。Paging File 用於存儲不包含在其他文件中的由處理使用的內存頁。Paging File 由所有處理共享,並且 Paging File 空間不足會防止其他處理分配內存。
Process
Page File Bytes Peak
Page File Bytes Peak 指這個處理在 Paging files 中使用的最大數量的位元組。
Process
Pool Nonpaged Bytes
Pool Nonpaged Bytes 指在非分頁池中的位元組數,非分頁池是指系統內存(操作系統使用的物理內存)中可供對象(指那些在不處於使用時不可以寫入磁碟上而且只要分派過就必須保留在物理內存中的對象)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。
Process
Pool Paged Bytes
Pool Paged Bytes 指在分頁池中的位元組數,分頁池是系統內存(操作系統使用的物理內存)中可供對象(在不處於使用時可以寫入磁碟的)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。
Process
Priority Base
這次處理的當前基本優先權。在一個處理中的線程可以根據處理的基本優先權提高或降低自己的基本優先權。
Process
Private Bytes
Private Bytes 指這個處理不能與其他處理共享的、已分配的當前位元組數。
Process
Thread Count
在這次處理中正在活動的線程數目。指令是在一台處理器中基本的執行單位,線程是指執行指令的對象。每個運行處理至少有一個線程。
Process
Virtual Bytes
Virtual Bytes 指處理使用的虛擬地址空間的以位元組數顯示的當前大小。使用虛擬地址空間不一定是指對磁碟或主內存頁的相應的使用。虛擬空間是有限的,可能會限制處理載入資料庫的能力。
Process
Virtual Bytes Peak
Virtual Bytes Peak 指在任何時間內該處理使用的虛擬地址空間位元組的最大數。
Process
Working Set
Working Set 指這個處理的 Working Set 中的當前位元組數。Working Set 是在處理中被線程最近觸到的那個內存頁集。如果計算機上的可用內存處於閾值以上,即使頁不在使用中,也會留在一個處理的 Working Set中。當可用內存降到閾值以下,將從 Working Set 中刪除頁。如果需要頁時,它會在離開主內存前軟故障返回到 Working Set 中。
Process
Working Set Peak
Working Set Peak 指在任何時間這個在處理的 Working Set 的最大位元組數。
6. 如何測試伺服器
一、伺服器測試方法分為兩個大方面,性能測試與功能測試。
在性能測試方面採用了新的測試方法,主要分為文件測試、資料庫性能測試與Web性能測試三個方面。其中,文件性能與資料庫性能採用美國Quest軟體公司的Benchmark Factory負載測試和容量規劃軟體,Web性能測試則使用了Spirent公司提供的Caw WebAvalanche測試儀。