jmeter性能测试面试题二【多测师_王sir】
生活随笔
收集整理的這篇文章主要介紹了
jmeter性能测试面试题二【多测师_王sir】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.什么是性能測試?
測試系統有沒有性能問題
考慮時間,空間
服務端資源是否足夠?
響應時間是否超時?
系統是否足夠穩定?2.性能測試的核心原則是什么?
基于協議,多線程,場景設計
協議:所有的請求都是基于協議發出去 http,https,udp,tcp,mqtt
多線程:壓力測試是基于java多線程原理,通過線程去模擬用戶的行為
基于場景:控制器+定時器設計各種場景滿足壓測要求并發場景負載場景穩定性壓力測試。。。。。。
jmeter工作原理:基于協議,通過多線程的方式模擬用戶行為,設計各種場景壓測服務端,得到性能數據,分析性能瓶頸3.性能測試的應用領域有哪些?
能力驗證:乙方向甲方交付項目時,聲明項目的性能數據。
例如:向甲方聲明能支撐500人1s內同時登錄,響應時間在2s以內。出具性能測試報告去證明我聲明的能力。瓶頸分析:在能力驗證的過程中可能會發現一些瓶頸,通過技術手段分析瓶頸,得到分析數據,為后續調優做理論依據。響應超時:什么負載量的時候出現超時現象?tps達到瓶頸,波動劇烈:tps瓶頸點在哪里?,在什么地方出現性能衰減?性能調優:在得到瓶頸分析數據之后,做性能調優。降低超時,提高tps,減少抖動。。容量規劃:基于未來。為將來的用戶激增提前做準備數據庫擴容服務端硬件優化(增加cpu,擴充磁盤,提升帶寬,分布式,負載均衡。。。)4.壓力工具的工作原理是什么?
jmeter工作原理:基于協議,通過多線程的方式模擬用戶行為,設計各種場景壓測服務端,得到性能數據,分析性能瓶頸5.性能測試基本思路是什么?測什么:明確測試目標(明確需求)
怎么測:怎么設計場景?測試計劃,測試用例,測試方案數據準備參數化,表達式,斷言場景設計(并發,負載,壓測)得到性能測試結果
測試結果驗證驗證結果數據是否符合預期如果預期響應時間是3s,但是實際結果響應時間達到了5s 不合格預期最大tps需要達到500,但是實際最大的tps只有300 不合格6.交付一個性能測試項目,請闡述你的性能測試流程1:明確測試需求2:基于需求設計測試用例,測試方案,測試計劃3:準備測試數據,測試賬號(預估并發量),設計測試腳本(參數化,表達式,斷言,控制器)4:運行測試腳本,數據監聽(響應時間,tps,活動線程),結果分析(判斷性能瓶頸)5:基本性能瓶頸做調優(tomcat線程池,jvm內存,swap內存,帶寬)6:調優之后做性能回歸,和前期結果做對比,是否有明顯的優化。7:代碼問題優化(自己定位或者交給開發定位)8:性能測試報告。整理性能測試數據(包括調優之前和調優之后)9:構建持久化的性能監聽平臺,監聽線上的服務性能性能測試貫穿項目始終,從需求分析到上線之后,都需要持續跟蹤分析發現問題,響應解決問題7.測試哪些關鍵場景?瀏覽器層面:web端和app端(H5頁面)關注首屏時間(頁面打開到完全呈現)腳本加載時間,cpu占用,fps頻率(幀頻率越高,流暢度越高)接口層面權限劃分普通用戶權限(非常多的的用戶)大并發場景:包括查詢,表單提交數據量也需要考慮(電商平臺,門戶網站)負載場景:用戶長期在線訪問,對資源的要求會很高管理員權限(幾個用戶)大數據量的場景(管理幾十萬用戶數據)列表查詢時間,分頁時間數據下載(excel,數據導出)是否會內存溢出mysql數據庫是否會死鎖,sql查詢是否異常超管(1個)大數據量的場景(管理幾十萬用戶數據)8.前端性能測試關注哪些點?了解哪些前端性能優化方法?首屏時間:頁面完全展現需要的時間白屏時間:頁面第一幀畫面出現之前的時間腳本加載時間,fps,cpu,network前端性能優化:使用緩存,壓縮圖片,壓縮js,css,gc回收優化,js前置9.解釋常用的性能指標的名稱與具體含義用戶角度響應時間(rt)從發起請求,到接口響應,到頁面渲染錯誤率(error)服務端角度rps(request persecond)每秒請求數,用戶發起的tps(transaction persecond)每秒完成事物數,服務端決定的通過rps指標,來測試tps,從而衡量服務端性能。瀏覽器層面qps(query perecond)每秒查詢接口數(uv pv)刷新一次頁面,調用了三個接口hps(hit persecond)每秒點擊率10.性能測試類型有哪些?按順序描述
并發數先確定基準測試(得到性能數據,為后續的回歸測試做理論依據)單接口基準測試容量基準測試負載測試不斷增加負載量(壓力),一直到瓶頸點出現,可以停止壓力測試1:穩定性壓測假設瓶頸點在300tps,用對應的負載量的80%-90%做持續性(幾小時或者幾天)的壓測。目的是發現穩定性問題(內存溢出等等)2:破壞性壓測用對應負載量的100%或者150%做壓測,直接讓服務器出現異常。目的是及早的暴露問題失效恢復測試服務端出現異常之后能不能及時恢復11.什么是集合點?設置集合點有什么意義?jmeter中如何設置集合點?集合點更多的運用在并發測試為了讓壓力盡可能的落在同一個時間點12.什么是固定等待和隱式等待?固定等待:超時時間=0線程數一定要>=集合數。一定要集合完畢才發起請求隱式等待:超時時間>0達到超時時間范圍,無論集合多少線程都會發起請求13.什么是負載?有哪些負載模式?負載就是壓力1:用戶模式。不斷增加的用戶數帶來的壓力1個用戶1s內發起20個請求,rps=20/s2:請求模式,不斷增加的請求數帶來的壓力10個用戶,1s用戶1s內發起1個請求,rps=10/s不能單純的通用用戶去衡量壓力,直接通過每秒請求數去衡量壓力。直接從服務端考慮14.你在測試中遇到過哪些性能問題?h5頁面響應時間過長h5的分頁經常卡死,sql查詢過多,數據量過大導出excel時間過長,頁面503,后臺報內存溢出功能涉及到算法的時候,一定要在測試環境用大量數據去模擬123456789234567893456789點擊按鈕,任意兩個數字之和等于5,就展示出來只要點擊,后臺cpu立刻就是300%15.你在性能場景設計中用到哪些方法?參數化,關聯,斷言,jdbc連接16.什么是關聯,如何動態關聯?有哪幾種關聯的方法?正則關聯,json關聯,xpath關聯保證接口上下游是銜接的17.jmeter負載測試中怎么保持session會話?${__setProperty(cookie${counter},${COOKIE_beegosessionID},)} 存儲session${__P(cookie,)} 從屬性表提取session18.什么是Ramp up?你如何設置?線程啟動的時間ramp越大,單位時間內的壓力越小。ramp=0表示單位時間壓力無窮大,線程啟動時間無窮小。ramp=0不代表時間為0
19.如何識別性能瓶頸?1: 隨著負載不斷升高,tps也是不斷升高的,正常邏輯2:隨著負載不斷增加,tps不再增加,甚至下降。表示單位線程的tps實際在衰減。tps的瓶頸點20.非gui下如何參數化運行場景?----------------------------------------------------------------------------------
----------------------------------------------------------------------------------21.簡述堆區的空間分配和gc原理年輕代1個eden2個存活區(S1和S2)老年代GC(垃圾回收)內存溢出:OOM(OUT OF memory)1:運行內存>當前空間剩余內存2:垃圾不能及時回收
年輕代GC:
1:最初的對象是存活在eden;伊甸園空間滿了之后,會進行第一次GC;
2:第一次GC之后,依然存活的對象,會被丟到S1(第一個存活區);
3:S1初次滿了之后,會進行第二次GC(年輕代GC)
4:第二次GC之后,依然存活的對象,會被丟到S2(第二個存活區),同時清空伊甸園和S1;
5:S2滿了之后,會進行第三次GC,依然存活的對象,會再次被丟到S1,同時清空伊甸園和S2;年輕代里面的垃圾碎片都是比較小;老年代的碎片比較大;讓垃圾盡可能的在年輕代里面進行回收;否則會影響老年代空間的整理;老年代GC:
1:年輕代的GC年齡超出閾值(默認16次),會把年輕代依然存活的對象扔到老年代;
2:對象的尺寸超出了閾值;對象尺寸超出了閾值,會直接進入老年代;
3:對象的大小超出了年輕代剩余的空間大小,直接進入老年代;老年代GC=fullGC(一般默認)
1:老年代剩余空間不足以對象進入;老年代會直接進行一次fullGC;
2:老年代的對象無法進行GC;老年代會進行一次fullGC;老年代的對象尺寸都比較大,所以gc時間會很長,同時所有線程會出現暫停;
jvm調優是為了規避fullgc的頻繁出現;會影響到tps;jstat -gcutil pid 1000 監聽gc情況jmap -heap pid 查看內存空間分配情況jvm參數調優調堆內存空間,調年輕代的gc年輕,調空間分配比例(老年代:年輕代 / eden:存活區);調gc回收器,并行回收機制22.什么是內存溢出1:運行需要的內存大于空間剩余內存;會出現內存溢出2:垃圾無法進行GC;會出現內存溢出23.簡述cpu的工作原理分析cpu參數:lscpuCPU(s): 2 cpu個數Thread(s) per core: 1 每核的線程Core(s) per socket: 1 每個卡槽的核Socket(s): 2 每個cpu的卡槽雙cpu,4核多線程;每個cpu是雙核;cpu負載和利用率可運行的進程(雙r)+不可中斷的進程(block)running(運行中的)+runnable(等待運行的)+block(等待io)=cpu的負載利用率:cpu雙線程如果都在調度java進程,表示當前cpu利用率是100%;cpu雙線程如果只有一個java進程在調度,表示當前cpu利用率是50%;最理想的情況:每個cpu線程都調度一個java進程,此時的負載=4;不理想的情況:java進程數遠大于cpu線程數,此時負載會遠遠超出cpu線程數;不能及時調度的進程就會排隊;cpu會給運行中的和等待運行的進程數均勻分配時間片;cpu調度是以時間片為基準的;假設調度時間為1ns,調度超出1ns之后,進程會被掛起;切換到下一個進程隊列越長,cpu時間片就越小,調度時間就會越短,切換的越快;切換的過于頻繁,cpu利用率就會很低,線程也會暫停進程是最小資源分配單元;線程最小調度單元;24.什么是上下文切換?哪些場景會存在上下文切換?
1:線程的切換
切換的時間加載寄存器和計數器
保存數據和位置信息,然后切換到下一個線程并讀取它的數據和位置信息
2:進程切換3:特權切換系統調用(切換兩次上下文)用戶空間向內核空間發起申請,內核空間返回api給用戶空間調用;26.什么是swap空間?oomkiller了解嗎?怎么開啟swap空間swap:從磁盤空間開辟的虛擬用戶空間。cat /proc/sys/vm/swappiness 查看swap比例當內存空間使用超出了比例,會啟用swap空間(內存交換)so 換出 si 換入 swapon -a 啟用swapsudo sysctl vm.swappiness=10 臨時修改swappiness比例vim /etc/sysctl.conf 永久修改swappiness比例27.什么是進程優先級?pr和ni ni范圍 -19---+20,ni值越小,進程優先級越大;ni越大,進程優先級越小;優先級越高的進程,優先調度cpu,時間片分配的越多;28.吞吐量大幅度波動有哪些原因?上下文切換的過快;gc次數過于頻繁;29.哪些現象說明了IO瓶頸?
await=io等待時間=io處理時間+io隊列時間
svctm=io處理時間
await與svctm的差值越大,表示隊列時間越長
util磁盤繁忙度,值越大,磁盤越繁忙;30.了解哪些資源監控命令?top家族top,htop,atop,iftop(查看網絡),iotop(查看io)sysstat家族vmstat vmstat 1 10 mpstat mpstat -P ALL 1 10 查看邏輯cpuiostat iostat -x -k -d 1 10 查看io處理netstat 查看網絡情況pidstat 查看進程
31.如何用命令行生成測試報告?jmter -J{參數名} -r{host} -n -t XX.jmx -l XX.jtl -e -o httpreport簡歷:
1:斷句,言簡意賅,讓面試官能一眼找到關鍵詞
2:突出主題
3:突出能力
4:工作經驗突出價值。從字里行間看出一個人在團隊中從事的角色和價值最low的詞匯:參與,做了,完成。。。正確的詞匯:負責XXX,帶領XXX,參與核心功能的XXX測試
5:項目經驗要由遠及近,由低到高;看出一個人的經歷和成長
6:細節問題:標點,錯別字,字體調整,簡歷格式
7:技能一定要在項目經驗里面體現,關聯
總結
以上是生活随笔為你收集整理的jmeter性能测试面试题二【多测师_王sir】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线报天下免费补丁,使用补丁可解锁全部线报
- 下一篇: 运筹学 知识点总结 (十一)