性能面试题目
1、性能測試的流程是什么?
需求調研-環境搭建-腳本編寫-準備數據-執行測試-回歸調優-測試報告
2、什么是關聯?在什么情況下需要做關聯?
關聯是將服務器返回的數據通過一定的規則過濾出來,將其保存成參數,以供后續代碼中使用
當服務器返回的數據是動態變化的,且后續腳本中需要使用這個變化的數據時,才需要做關聯
3、loadrunner中unique參數化是怎么實現的?
unique參數化主要原理:根據并發用戶個數,將某個連續的范圍分段,每個用戶使用其中的一段數據,
unique規定了第一段的起始值和每一段的size,從而使每個用戶在各自的數據段的取值,而不會產生重復的值
4、loadrunner中參數和C語言變量的區別是什么?分別用哪兩個函數進行轉換?
主要區別:參數往往是LR自動保存的,如關聯、檢查點函數等,它可以在LR的web類函數的參數中直接使用;
變量是用戶自己定義的,不可以直接放在web函數中使用
lr_save_string:變量轉參數
lr_eval_string:參數轉變量
5、Jmeter中怎么寫Java腳本,簡要說下步驟
a)通過eclipse等工具手動編寫一個Java類,實現JavaSamplerClient接口
b)將要寫的代碼放到JavaSamplerClient接口對應的實現方法中,如果需要暴露出參數,將參數添加到getDefaultParameters方法中
c)腳本調試通過后,將寫好的腳本達成runnable jar,將jar包和依賴的lib文件夾放到Jmeter的lib/ext下,重啟Jmeter
d)在Jmeter中添加JavaSampler,選擇jar包中的測試類
6、一般在什么情況下會在Jmeter中使用BeanShell
a)被測接口調用前需要對參數做一些邏輯處理,可以使用BeanShell前置處理器
b)需要對接口的返回值做一些邏輯判斷,可以使用BeanShell斷言
7、怎么根據線下環境評估線上環境的性能
a)首先線下必須要有專門的性能測試環境
b)線下環境單臺機器配置和線上不能相差很大,可以通過單臺的機器性能推算出多臺機器性能(需考慮一定的性能損耗)
c)如果線下機器配置很差,只能測試出程序有無性能問題,這樣線下測試出來的數據對線上沒有太大參考意義
d)如果想獲取比較準確的線上性能情況,建議最好做線上的性能測試
8、對于Linux系統,主要的監控指標有哪些?他們的各自閾值是多少?
cpu使用率:<80%
load值:<cpu的核數
系統內存:使用率<80%
磁盤IO:<100%-90%
網絡IO:<帶寬上限
9、線程都有幾種狀態?哪些狀態需要關注?
線程狀態:runnable、waitting、timed-waitting、blocked、terminated
最影響性能的是blocked狀態(阻塞,鎖)的線程,timed-waitting(限時等待)
10、Jvm中持久代(方法區)中主要存放什么數據?老年代主要存放什么數據?
持久代中主要存放靜態數據、常量、類的基本信息等
老年代中主要存放對象的實例和數組等
11、應用服務器cpu高和數據庫服務器cpu高的分析思路是什么?
應用服務器的cpu高,先要看tps和響應時間,如果tps比較高,我們認為是正常的cpu消耗;如果tps比較低,那么往往某些代碼過于消耗cpu,可以考慮使用jprofiler分析下
數據庫服務器cpu高,往往是因為sql語句執行效率比較低,可以通過對數據庫慢查詢是監控,結合執行計劃進行分析,是否是相關表沒有索引或索引未生效
12、出現內存泄露的根本原因是什么?你是怎么定位內存泄露原因的?
內存泄露的根本原因是Jvm中老年代中存在著大量存活的對象,這些對象不能被GC回收掉,從而占滿了整個老年代,造成Jvm一直處于FGC的狀態,程序沒有響應,服務器報OOM錯誤
內存泄露主要通過分析老年代中占用空間最大的類都有哪些,然后去代碼中找對應的類的創建。通常可以使用jdk提供的jvisualvm和jmap進行堆內存的分析
13、tps壓不上去,可能有哪些方面的原因?
a)壓力機本身性能瓶頸
b)網絡IO瓶頸
c)中間件(tomcat/nginx/mysql)連接數限制
b)Java線程的阻塞、等待
e)本系統資源的瓶頸(cpu、內存、磁盤、網絡等)
f)其他外部系統響應時間過長,造成本系統的time-wait
14、性能場景怎么設計?一般都有哪些性能場景?
一般基本的場景包括:基準測試、單交易測試、混合測試、穩定性測試
其他場景的可選場景:高可用性測試、異常測試等,以及其他的結合各自項目業務的場景
15、測試數據怎么構造?你一般都是采用哪些方法來造數據?
a)調用業務接口構造數據
b)直接寫jdbc代碼造數據
c)存儲過程造數據
總結
- 上一篇: ActionScript 3 作用域内部
- 下一篇: 针对谷歌浏览器Chrome的CSS ha