软件测试jmeter面试问题,jmeter 面试题剖析实战
最近有個(gè)學(xué)生反饋,自己在面試的時(shí)候,遇到一個(gè) jmeter 題目,要我?guī)兔聪?#xff0c;題目如下:
進(jìn)入http://www.weather.com.cn/網(wǎng)站,用jmeter編寫腳本實(shí)現(xiàn)如下操作(下列要求在同一個(gè)測(cè)試腳本) :
(1)編寫獲取北京天氣紫外線、穿衣、洗車、感冒指數(shù)的壓測(cè)腳本,要求將城市參數(shù)化10個(gè)(城市名字自定義),將城
市的當(dāng)前實(shí)時(shí)天氣>10度作為斷言,并將天氣數(shù)字輸出打印到日志,
設(shè)置200用戶并發(fā)持續(xù)運(yùn)行3天
(2)編寫獲取周邊景點(diǎn)的腳本,并景點(diǎn)返回的個(gè)數(shù)作為斷言,并將各景點(diǎn)名字輸出打印到日志,
設(shè)置200用戶并發(fā)持續(xù)運(yùn)行10分鐘
第一個(gè)題目
粗看,其實(shí)沒有什么難度,但是當(dāng)你去訪問了這個(gè)網(wǎng)站,然后看到網(wǎng)站數(shù)據(jù)結(jié)構(gòu)時(shí),才知道并不是那么簡(jiǎn)單。
當(dāng)你去訪問這個(gè)網(wǎng)站的時(shí)候,你會(huì)發(fā)現(xiàn),這個(gè)網(wǎng)站并沒有直接提供接口。
沒有提供接口,哪怎么做呢?
抓包!是個(gè)不錯(cuò)的選擇,所以,這個(gè)題目,首先考察的是:
你是否懂得用抓包工具住包 ?
通過抓包,你會(huì)看到有一個(gè)類似這樣:http://d1.weather.com.cn/weather_index/101010100.html?=1595579781357 的地址,返回了我們第一問中的北京天氣信息。看到這樣一個(gè)地址,你會(huì)找出哪些信息?101010100 這個(gè)應(yīng)該要想到,這個(gè)應(yīng)該是城市代碼,而"="這個(gè)之后的值,應(yīng)該是一個(gè)時(shí)間戳。這就在考察:你對(duì)于數(shù)據(jù)的敏感度;接下來(lái),我們看下這個(gè)接口返回的消息體,數(shù)據(jù)類似“var cityDZ ={"weatherinfo":{xxxx};xxxxxxxxx}” 咋一看,還以為是 JSON 格式,但又不像,仔細(xì)看響應(yīng)頭的 Content-Type,你又會(huì)發(fā)現(xiàn)是‘text/html' 文本類型。也就是說(shuō),題目中要求獲取的天氣、紫外線...... 等等信息,不能簡(jiǎn)單一次提取,需要用到正則,所以這個(gè)又在考察:你對(duì)正則提取器的使用;題目要求獲取多個(gè)信息,一直用所有的都用正則可以嗎?可以,但是你如果所有的信息都通過正則提取器提取,那也從側(cè)面反映你技術(shù)不咋滴。因?yàn)槟鞘歉蓜趧?dòng)力的活,其實(shí)是在隱式考察:你對(duì)正則提取器和 JSON 提取器以及多提取器一起靈活使用的能力。把一個(gè)文本內(nèi)容,通過正則提取器提取出一段 JSON,然后再用 JSON 提取器提取正則式結(jié)果中想要數(shù)據(jù),這才是他的真正的目的。然后題目又來(lái)一個(gè)難題,實(shí)時(shí)天氣大于 10 度作為斷言。是不是一下又楞了,不知道怎么搞了?提取實(shí)時(shí)天氣,這個(gè)可以提取出來(lái),難點(diǎn)就在“大于 10 度”這個(gè)要怎么做呢?這又在考察:你對(duì)于斷言中大小斷言掌握情況, 首先我們要知道應(yīng)該用什么斷言?響應(yīng)斷言,沒有比較大小功能。比較斷言,是兩個(gè)特定的比較,也不適用。那就只有“大小斷言”這一個(gè)。題目中還有,要參數(shù)化 10 個(gè)城市,別小看這個(gè)參數(shù)化,為什么不是八個(gè),不是九個(gè),卻剛好十個(gè)?這其實(shí)也隱藏了一個(gè)點(diǎn),這個(gè)又在考察:你對(duì)于循環(huán)控制和 foreach 控制器的使用,當(dāng)然這個(gè)點(diǎn),可以取巧,用用戶自定義 10 個(gè)城市,然后再用 foreach 控制器能簡(jiǎn)單解決。題目中,還要求“將天氣數(shù)字輸出打印到日志”,因?yàn)?jmeter 本身沒有直接寫參數(shù)到日志的元件,需要用函數(shù)或 Java 代碼來(lái)實(shí)現(xiàn),所以這個(gè)又在考察:你對(duì) jmeter 函數(shù)或 Java 腳本的使用能力;至于后面的“設(shè)置 200 個(gè)用戶持續(xù)運(yùn)行 3 天”這個(gè)就非常簡(jiǎn)單了,考察:線程組進(jìn)行性能場(chǎng)景的設(shè)置,這個(gè)可以用普通的線程組就能實(shí)現(xiàn),當(dāng)然,也可以使用其他的線程組。
看視一個(gè)簡(jiǎn)單的 jmeter 題目,只要有一定的 jmeter 使用經(jīng)驗(yàn),這個(gè)題目思路不復(fù)雜,但是難點(diǎn)在具體腳本的寫法。下面把腳本截圖,僅供參考。
foreach 控制器
獲取氣溫
查看接口響應(yīng)數(shù)據(jù)
提取所有指數(shù)
提取題目所需要的指數(shù)
獲取城市天氣
獲取城市溫度
獲取溫度數(shù)值
斷言溫度數(shù)值
日志顯示溫度
用戶自定義變量
第二個(gè)題目
看題干,就知道比第一個(gè)要簡(jiǎn)單,第一個(gè)題目做出來(lái)了,第二個(gè)馬上就能用上上面的技能。但是,卻埋下了一個(gè)難題,哪就是獲取景點(diǎn)個(gè)數(shù),作為斷言。為什么說(shuō)還難點(diǎn)呢?仔細(xì)看過接口響應(yīng)文本,就會(huì)發(fā)現(xiàn),又不是簡(jiǎn)單的 JSON。數(shù)據(jù)是:var data=({key1:{xxx}},{key2:{xxx}},{key3:{xxx}})。如果不懂得 JSON 的相對(duì)提取法,這個(gè)題目就變得異常復(fù)雜。
下面是解題截圖,僅供參考:
獲取周邊景點(diǎn)
查看接口響應(yīng)數(shù)據(jù)
正則提取響應(yīng)數(shù)據(jù)
獲取景點(diǎn)名稱
景點(diǎn)數(shù)量斷言
foreach 循環(huán)
日志顯示景點(diǎn)名稱
好了,一個(gè)看似簡(jiǎn)單的 jmeter 面試題,卻隱藏了這么多考察項(xiàng),你是否都掌握了呢?
更多有趣又有料的軟件測(cè)試相關(guān)知識(shí),歡迎關(guān)注 檸檬班 微信公眾號(hào)!
總結(jié)
以上是生活随笔為你收集整理的软件测试jmeter面试问题,jmeter 面试题剖析实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go全栈面试题(3) -微服务面试题
- 下一篇: 【c++思维导图与代码示例】02 函数