# 性能測試篇
[TOC]
> ### 性能測試怎么做的?
參考答案:
1. 做性能需求分析,挑選了用戶使用最頻繁的功能來做性能測試,比如:登陸,打開系統首頁,搜索,提交訂單,確定性能指標,比如:事務通過率為100%,90%的事務響應時間不超過3秒,CPU和內存的使用率為70%以下。
2. 搭建性能測試環境,準備好性能測試數據。
3. 使用Jmeter開發優化腳本,包括:參數化,斷言,關聯等。
4. 設計性能測試場景,我們這個項目做了單用戶單功能循環200次的基準測試,然后使用1500個用戶,執行30分鐘的負載測試,看系統有沒有性能瓶頸;
5. 我們搭建了分布式壓力測試環境進行測試,每臺壓力機并發500個用戶,并監控linux服務器的CPU,內存,IO。
6. 分析性能測試結果,如果有性能瓶頸,收集相關的日志提單給開發修改。
7. 開發修改好后,回歸性能測試,然后輸出性能測試報告。
> ### 如何確定系統能夠承載的最大用戶數?
通過負載測試,不斷增加用戶數,隨著用戶數的增加,各項性能指標也會相應產生變化,當出現了性能拐點,比如,當用戶數達到某個數量級時,響應時間突然增長,那么這個拐點處對應的用戶數就是系統能承載的最大用戶數。
> ### 你們系統哪些地方(哪些功能)做了性能測試?
我們選用了用戶使用最頻繁的功能來做性能測試,比如:登陸,打開系統首頁,搜索,提交訂單。
> ### 你們性能測試在哪里做的?
我們會搭建一套獨立的性能測試環境進行測試。
> ### 你們性能測試什么時間做?
功能測試之后,系統比較穩定的時候再做。
> ### 怎樣分析性能測試結果?
1. 查看聚合報告和服務器的資源使用圖,檢查響應時間,事務成功率,CPU,內存和IO使用率是否達到要求,如果出錯率達到了總請求數的3%,我們會檢查是什么原因導致的,修改好后,重新測試;
2. 如果出現了性能瓶頸,比如響應時間,或者CPU使用率不達標,我們會從服務器上導出日志,分析是哪個地方導致響應時間過長,如果分析不出來,就叫上開發一起討論,確定問題后,就提單給開發修復,修復好了就進行回歸測試。
> ### 如何判斷網絡是否存在瓶頸?
>
> 在性能測試結束之后,我們會根據性能測試的結果,查看在整個性能測試過程中,網絡的吞吐量是多少,如果網絡的吞吐量占到了服務器的70%以上,我們就認為網絡存在瓶頸,通常會增加帶寬或者壓縮傳輸數據。
> ### 響應時間不達標
響應時間不達標的話,我們會根據性能測試結果先檢查看下是否是服務器帶寬存在問題,如果帶寬存在瓶頸,則會考慮增加帶寬或者壓縮傳輸數據,如果帶寬沒有問題的話,我們會從服務器上導出日志,開發一起討論分析是哪個地方導致響應時間過長,確定問題后,就提單給開發修復,修復好了就進行回歸測試。
> ### CPU使用率不達標
CPU使用率不達標,我們會從服務器上導出日志,分析是哪個地方導致CPU使用率不達標,如果分析不出來,就叫上開發一起討論,確定問題后,就提單給開發修復,修復好了就進行回歸測試。
> ### 程序在單用戶場景下運行成功,多用戶運行則失敗,提示連不上服務器。
原因:程序沒有做多線程處理。
> ### 程序實現的功能是,隨機給用戶分配不同的任務,單用戶運行時,能成功分配;多用戶并發申請任務時,所有用戶得到的任務都是一樣的。
原因:程序存在線程同步的問題。
> ### 系統并發200個用戶,服務器返回 http status-code = 500
原因:數據庫連接沒有來得及關閉,就有用戶訪問上來了,導致數據庫崩潰 。這個就是數據庫的鏈接這塊開發沒有處理好
> ### 你們的性能測試需求哪里來的?
參考答案:我們的需求文檔上有的,不過有時候不太合理,我們可能需要和BA進行討論。比如,我之前做了一個公司內部用的OA系統的性能測試時,要求并發用戶200人,我們整個公司都沒有100人,很明顯,做200人并發是沒有必要的,后來,我們只做了50人并發。
> ### 如何實現200用戶的并發?
參考答案:在請求的前面添加集合點,設置并發用戶數為200
> ### 什么情況下要做關聯,關聯是怎么做的?
參考答案:當發給服務器的請求數據需要依賴另一個請求返回的數據,就用關聯。
> ### 有驗證碼的功能,怎么做性能測試?
參考答案:
1)、將驗證碼暫時屏蔽,完成性能測試后,再恢復。注意:屏蔽驗證碼是不會給性能測試的結果帶來影響的。
2)、使用一個萬能的驗證碼。
> ### 你們性能測試做的是前臺還是后臺?
參考答案:
我們做的是后臺服務器的性能
> ### 性能測試指標有哪些?
平均事務響應時間,90%的事務響應時間,TPS,CPU、內存
> ### 你們項目最佳的并發用戶數是多少?
參看答案:我們當時做到1500個并發用戶的時候,查詢功能的響應時間超過了性能指標2秒多,原因是有幾個表的索引建得不合理導致的,重新建索引后,問題就解決了。我們當時做到1500并發用戶后,就沒再繼續增加用戶量了。
> ### 分布式環境怎么搭建?
分布式的環境搭建比較復雜,當時我也是根據自己的筆記來搭建的。具體的步驟不記得了,大概是要先修改配置文件,將所有需要使用到的壓力機的IP地址添加進來,然后在壓力機只需要開啟服務,在主機的電腦就可以控制遠程啟動了
> ### 怎么監控服務器資源的
我們使用的是Nmon工具來監控服務器資源的,它能夠將linux上一段時間的資源以文檔的形式保存下來。
> ### Jmeter做性能測試的工作原理是什么?
Jmeter通過主機來控制各個壓力機,并發大量用戶,對服務器產生負載,從而實現性能測試。
> ### 服務器的配置是怎樣的
CentOS、 6.8
CPU型號:英特爾 酷睿 i5
CPU核數:16核
內存:32G
- 總章
- Oracle數據庫
- 常見的Linux命令
- 理論內容整理
- 給你如下功能怎么測試
- 支付怎么測試
- 購物車怎么測試?
- 搜索功能怎么測試?
- 文件上傳功能怎么測試?
- 登錄功能怎么測試?
- 還款功能怎么測試?
- 訂單功能怎么測試?
- 自動化測試篇
- 必記代碼
- 接口測試篇
- 性能測試篇
- app測試篇
- 面試篇
- 項目篇
- 職業素養篇
- 真實案列分析
- 如何預防冷場
- redis
- 琪琪
- 禪道搭建手冊
- 禪道搭建手冊1
- 禪道的基本使用
- 基于Python3_Selenium的自動化
- Python3安裝
- Python3基礎
- 列表_元組_集合
- 函數_模塊_類
- Python代碼
- selenium環境
- selenium定位方式
- Selenium常見操作
- toast讀取代碼
- 添加用戶代碼
- 隱式等待與顯式等待
- 循環添加用戶
- 測試用例練習
- 測試用例優化
- Fiddler抓包工具
- 安裝
- Fiddler使用
- 接口測試
- Jmeter的安裝
- Jmeter使用
- jmeter+ant+jenkins接口自動化測試框架
- 接口安全測試
- 性能測試
- Nmon監控LInux系統
- Jmeter分布式
- 性能測試-具體案例
- Monkey
- 安裝1
- Monkey使用
- appium自動化
- appium的安裝
- appium基本使用
- 真機USB連接
- 問題排查
- Jenkins持續集成
- Jenkins安裝
- Jenkins配置任務
- Python擴展內容
- Python連接數據庫
- Python進行接口測試
- 開啟服務