一、性能測試
1.0為什么要進行性能測試?
? ? 1.評估當前系統的能力
? ? 2.尋找性能瓶頸,優化系統性能
? ? 3.評估 軟件是否滿足未來需求
1.1什么是性能測試?
????時間:系統處理用戶請求的響應時間
? ? 資源:系統運行中,對資源的消耗
1.2性能測試是什么?
? ? 通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項西性能指標進行測試。
1.3功能和性能測試
? ? 1.不同:
? ? ? ? 功能測試驗證系統的功能需求規格、聚焦功能。
? ? ? ? 性能測試驗證系統業務性需求場景,聚焦時間內和資源。? ? ? ? ? ? ? ??
? ? 2.關系:
? ??????功能測試通過后,后進行性能測試。
1.4性能測試的分類
1.4.1:基準測試
? ??建立基準線,當系統軟硬件環境發生變化之后再進行一次基準測試以確定變化對性能的影響。
1.4.2負載測試
逐步增加系統負載,滿足性能指標情況下,找出系統的最大承受能力。
作用:系統最大負載量達到用戶要求時,系統才能正式上線使用。
注意:
? ? 1.通過負載測試,可以確定系統的最大負載量和極限負載量
? ? 2.系統對外宣稱的最大負載量
? ? 3.負載測試的時間一般為1-2小時
1.4.3穩定性測試
系統各項指標都正常的情況下,進行長時間的測試(1天—至一周),并且沒有出現問題,滿足用戶長時間運行該系統。
1.4.4壓力測試
1.在強負載下的測試,查看系統在峰值下是否功能隱患、系統是否具有良好的容錯能力和可恢復的能力。
2.場景
? ? 1.高負載下的長時間穩定性壓力測試
? ? 2.極限負載下的破壞性壓力測試
1.4.5并發測試
????在極短的時間內,處理大量請求來驗證系統的并發處理能力。
????場景:搶紅包、秒殺。
并發測試與負載測試的區別:
? ??負載測試:主要目的是測試高負載情況下,對系統資源的消耗,是否會耗盡的問題。
并發測試:主要目的是測試極短時間內,并發請求時,系統資源爭搶的問題。
1.5 性能測試的指標
1.5.1 響應時間
指從客戶端發起請求開始,到客戶端接收到結果的總時間
包括:服務器處理時間 + 網絡傳輸時間
1.5.2 并發用戶數
某一時刻同時向服務器發送請求的用戶數
1.5.3 吞吐量(Throughout)
1.概念:單位時間內處理客戶端的請求數量,直接體現軟件系統能能承載能力。
吞吐量單位分類
1.5.4 QPS
QPS(Query Per Second)每秒查詢數,即控制服務器每秒處理的指定請求的數量。
1.5.5 TPS
TPS(Transaction Per Second)每秒事務數,即控制服務器每秒處理事務請求的數量。
如:支付請求事務=查詢用戶余額請求+校驗支付安全請求+發送支付請求
1.5.6 點擊數
所有的頁面元素(如:圖片、鏈接、框架等)的請求總數量
注意:點擊數是請求數,不是頁面上的一次點擊
1.5.7 錯誤率
指系統在負載情況下,失敗業務的概率
注意:
錯誤率是性能指標,是高負載下的失敗業務的概率
隨機bug是功能bug,先解決隨機bug才能進行性能測試
1.5.8 資源利用率
概念:系統各種資源的使用情況,率=資源使用量/總資源可用量x100%
常見資源指標
CPU使用率:不高于75%-85%
內存大小使用率:不高于80%
磁盤IO(速率):不高于90%
網路(速率):不高于80%
Jmeter
1.jmeter的作用
? ? ? ? 1.接口測試 面試說postman,因為方便好用。
? ? ? ? 2.性能測試 jmeter,也可以用postman(runner),但是沒有性能指標
? ? ? ? 3.數據庫測試
2.線程組是什么?
? ? ? ? 概念:性質相同的線程放在一個組內
? ? ? ? 線程組包含線程數、準備時長、循環次數
? ? ? ? 1.線程數:虛擬用戶數
? ? ? ? 2.準備時長:啟動所有用戶的時間
? ? ? ? 3.循環次數:每個線程發送請求的次數
3.jmeter主要組件
? ? ? ? 1.測試計劃
? ? ? ? 2.線程組:性質相同的一組線程(線程數、準備時間、循環次數)
? ? ? ? 3.采樣器:HTTP
????????協議、主機地址、端口號(選填)、請求方法、路徑、編碼格式(選填)、參數
? ? ? ? 4.監聽器:采集測試結構
? ? ? ? ? ? 察看結果樹、用表格查看、聚合報告
? ? ? ? 5.循環控制器
? ? ? ? 6.事務控制器
? ? ? ? ? ? 事務:多個操作組合
? ? ? ? ? ? 作用:
? ? ? ? 7.固定定時器
? ? ? ? ? ? ? ? 作用:控制兩個采樣器的間隔
? ? ? ? 8.斷言
? ? ? ? ? ? ? ? 1.Json斷言:判斷某個key對應某個value
? ? ? ? ? ? ? ? 2.響應斷言:響應中包含某個串
? ? ? ? 9.前置處理器和后置處理器
4.參數化
? ? ? ? 1.用戶自定義變量:
? ? ? ? ? ? ? ? 作用:提供全局變量,方便修改
? ? ? ? ? ? ? ? 使用:配置元件 → 用戶定義的變量 → key value → ${key}
? ? ? ? 2.CSV data set config
? ? ? ? ? ? ? ? 配置文件:
? ? ? ? ? ? ? ? 添加元件:CSV data set config → 選中文件 → 編碼 → 字段1,字段2
? ? ? ? ? ? ? ? 在采樣器界面:添加參數 → 調用${字段名稱}
? ? ? ?? 3.CSV函數小助手
? ? ? ? ? ? ? ? ? 工具? → 函數小助手 → 選擇CSV Read → 復制文件路徑 → 字段編號 → 生成 → 自動復制,過去粘貼
5.接口依賴
? ? ? ? 正則語法:* + ? . ()
? ? ? ? 實現:
? ? ? ? ? ? ①添加HTTP請求,使用正則提取一個需要字段
? ? ? ? ? ? ②在第一個HTTP請求里邊調用字段${字段}
6. jmeter腳本錄制和壓測
1.什么是腳本錄制
在進行測試的時候,可能有好多腳本或者界面需要操作測試,并且有些測試鏈接需要重復多線程高并發進行測試,我們一般會針對這一些操作,進行一個腳本錄制,錄制好之后,之后測試就可以在這個基礎上進行測試。
2.腳本錄制方式
? ? web端:badboy腳本錄制
? ? app端:使用Jmeter自帶的代理服務器進行腳本錄制
3.Android手機端腳本錄制
? ? 1.同網
? ? 2.添加http代理服務器
? ? 3.在線程中添加錄制控制器
? ? 4.在http代理服務器中指定錄制腳本的路徑,默認端口8888
? ? 5.查看本地的ip
? ? 6.設置移動端代理,IP和端口號
? ? 7.啟動
? ? 8.打開手機app,抓取接口
4.web端腳本錄制
安裝badboy腳本軟件→打開badboy軟件→使用
7.Jmeter壓測
一.數據庫壓測
? ? 1.為什么要緊行數據庫壓測
? ? ? ? 不斷給數據庫施加壓力,驗證數據庫處理的性能
? ? 2.如何進行數據庫壓測
? ? ? ? 1.jdbc配置:創建線程組→添加配置元件JDBC Connection Configuration→對數據庫連接的配置進行設置→添加jdbc Request請求→運行
select statement:只支持單條查詢,只支持第一條數據查詢
updata statement:修改數據
Callable Statement:支持查詢、修改、支持多個查詢
Prepared Select Statement:類型必須為varchar**結合csv配置數據
2.jmeter對服務器壓測(windows)
? ? ? 資源準備:? JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar放到apache-jmeter-3.0\lib\ext目錄下
? ? 操作:打開server的監聽→添加監聽器-jp@gc - PerfMon Metrics Collector→添加性能指標,線程組設置線程數和時間
? ?? 2.jmeter對服務器壓測(linux)