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