LoadRunner併發使用者和集合點的深入討論

2022-05-09 08:51:10 字數 2517 閱讀 7013

看到51上三個高手zee, 大漠飛鷹,xingcyx的一場非常精彩的關於併發使用者數和集合點的討論,很有意義。如果對這兩個概念不清楚的朋友,一定要仔細領悟了。

故事開始於xingcyx的一番話:

宣告:以下的問答是我根據實際工作經驗和通過各種途徑得到的資訊而整理的,其回答內容主要代表我個人觀點,並非標準答案,讀者如有不同意見,歡迎批評指教。

q:併發使用者數和集合點有必然聯絡嗎?在效能測試中必須使用集合點來測試嗎?

a:併發使用者數,顧名思義,就是同時操作的使用者,這裡的「操作」可以指對系統真正的操作,也可以只是連線(此時通常叫作「併發連線數」),而集合點是一種特殊

情況下的併發,多用於測試系統在瞬間加壓的表現。因此,併發使用者數和集合點有聯絡,但並非必然的聯絡,在測試併發使用者的效能測試場景中,可以不必設定集合

點,這將視測試目標和測試策略而定。

q:不設定集合點的測試,能代表是「併發」操作嗎?

a:有這樣一種說法,設定集合點是為

了確保

「嚴格意義上」的併發,其實從本質上看,這主要是乙個看問題的粒度大小的問題。集合點的作用是通過工具的控制,確保乙個請求嚴格的「同時」從前台提交到後

臺。可是如果微觀地看,是不存在嚴格意義上的併發的,即使在客戶端通過設定集合點的方式將100個請求同時提交到後台,經過網路上的傳輸消耗,可能它們並

不是同時到達的,而即便100個請求同時到達伺服器端,受到中介軟體和應用系統、資料庫的各種連線池、緩衝區,

cpu處理佇列等的限制,也可能在伺服器端產生等待的。因此,嚴格意義上的「併發」可以說是不存在的,我們需要做的是在可以接受的粒度範圍內取得乙個最佳

的平衡點,站在這個平衡點的層面上去看待「併發」這個問題。

效能測試無非有兩個目的,一是評測,二是調優。

在以評測為目的的效能測試中,使用者更關心的是業務上的併發,也就是真實業務場景的併發情況,這種情況下只要按照業務操作的模式去設定場景就可以了,並不需要設定集合點。

集合點是一種特殊情況下的併發,通常是在以調優為目的的效能測試中才會用得到,目的是有針對性地對某個可能存在效能問題的模組施壓,以便找到效能瓶頸。

集合點在我實際的測試過程中用得並不多。

zee:

關於集合點,我一直覺得沒有什麼可爭議的,這兩天看到幾個帖子在說這個東西。有一點我想大家都是認同的:集合是相對的集合。

集合是在產生負載的機器上的集合。如果考慮網路,中介軟體等等的因素。到伺服器肯定不會是同一時間點,那於是就有人希望能更接近在伺服器端實現併發的操作。認為這才是真正的併發。

我覺得首先要做的是分析應用系統,到底你想做的是什麼。

比如說,你想讓某個url能達到1000個同時請求的目的。這樣的目標就比較明確了。

而在討論集合點的時候,大家很少拿具體的東西來舉個例子。這樣有點說不清楚。要想達到併發。我覺得應該更具體的分析應用。再來定下目標來做。而不是一直在討論lr如何能實現。

xingcyx:

因為在實踐中,我經常會碰到這樣的情況:

測試需求說,該系統應支援200個併發使用者。

那麼我們就開始測,錄製好指令碼,下一步就是在場景中執行了,在控制台中設定某指令碼併發使用者數為200,測試結果為通過或未通過。此時爭議就來了:這200個使用者的指令碼如果執行通過,測試結果可以接受,是否可以說這個系統支援了200個併發呢?

大漠飛鷹:

測試前肯定要了解需求,或者說是測試目的。

就說明「該系統應支援200個併發使用者。」, 這種需求嚴格意義上來說是不合格的需求,因為描述不夠清晰,過於模糊等。

當然,在實際中,這類需求到了我們測試人的手裡也是常有的,一般就當普遍的情況來出來。

比如,web系統,就按2/5/8,或者2/5/10來處理,如果能通過就pass,否則就讓開發人員調優。

zee:

從集合點到併發數的確定。我覺得這其中的轉換最主要的地方在於分析業務。

比如使用者說了:要求200個使用者併發。

那要問清楚的就是,200個使用者是個什麼樣的比例,有多少人在幹這個,有多人在幹那個,按百分比,用不同的指令碼來跑。

那再來想一下客戶。他關心的是200個使用者在伺服器上同時點同乙個url或者某乙個相同的資源?這個客戶我想大多不會關心。而他想要的就是我有200個使用者

url或者請求同一資源,我想可以通過計算來增加vuser的數量或者集合呀,或者其他的方法來努力的向這個目標靠近。

如果說非要在伺服器上這個時間併發這麼多的使用者。我覺得只能盡量把它縮小到乙個時間段內。而這樣做我覺得並不是從分析業務出發的,

xingcyx:

樓上說的是最常見的一種情況,在這種測試需求下,我會設定乙個混合場景來測試,也就是按照做不同事情的使用者的百分比去設定。

但會有另外一些時候,並不是乙個實際的應用系統,可能是乙個開發平台,或者工作引擎等,它涉及的效能的概念會更偏向底層一些,這個時候可能就不是像一般的應用系統那樣,設定乙個混合場景來測試那麼簡單了。

大漠飛鷹:

一般說的併發數指的是業務併發,而不是伺服器端的併發數。

理求,一般是絕對併發,客戶端絕對的無間隔併發在伺服器端不一定無間隔併發,因為有網路等原因,到了伺服器端往往就不是絕對併發了,是從技術角度去分析。

**:

LoadRunner 虛擬使用者數和併發使用者數的聯絡

oa系統使用使用者是100個,這個就是系統使用者數。承受的壓力。因為伺服器 併發使用者 是同時執行乙個操作的使用者,或者是同時執行指令碼的使用者,這個併發在設定不同場景的時候併發的情況是不一樣的,在實際的測試 估算併發數的公示 1 計算平均的併發使用者數 c nl t 2 併發使用者數峰值 c c ...

LoadRunner 迭代和併發設定

迭代 指執行一次指令碼時某段 塊 action 迴圈執行的次數,序列執行 併發 指同時執行指令碼的次數,並行執行 多個使用者同時跑 以下是用例和對應的相關設定 iterations是在vuser generator的run time setting中進行設定 quantity是在controller...

LoadRunner之併發使用者數與迭代關係

q1 例如在lr裡,我要測100個使用者同時併發登陸所用時間,那我是不是在錄製好指令碼後,需要引數化 使用者名稱 密碼 以及在那個記事本裡構造100個真實的使用者名稱和密碼?然後執行controller,設定使用者數為100?a 恩,你說的是對的。但是我需要說明的是測併發數的時候,本身就是模擬的虛擬...